学习笔记之 internet 系列2:互联网是如何工作的?
How Does the Internet Work?#
Introduction#
Internet 越发深入我们的生活,因此深入理解它是很必要的。
本文解释了使 Internet 工作的基础设施和技术。虽然不深入但足够宽泛。
Where to Begin? Internet Addresses#
在 Internet 中,每台电脑都有一个独特的地址。格式为 nnn.nnn.nnn.nnn, nnn 必须为 0-255.
下面的示意图展示了通过 Internet 连接的两台电脑。
可以通过 ping
程序来获得某个域名的 IP。
Protocol Stacks and Packets#
计算机是如何在 Internet 上进行沟通的?
这需要用到 TCP/IP 协议栈。
下面是一个从本机发送信息”Hello computer 5.6.7.8!” 到 IP 地址为 5.6.7.8 的电脑的示意图:
具体步骤如下:
信息将从上往下流动。
如果信息很长,则会被分隔为许多数据包。
这些数据包将从应用层到 TCP 层。每个包会给一个端口号。
从 TCP 到 IP 层。每个包给上终点的 IP 地址 5.6.7.8。
当这些数据包有了端口号和 IP 地址后,就可以发送了。硬件层会将包中的文字转换为电信号然后通过线路传输。
然后通过若干 ISP 路由和其他设施,最终到达了电脑 5.6.7.8。此时,信息从下往上流动。
在数据包往上流动的过程中,所有发送端添加的路由数据(如 IP 和端口号)都将被剥离。
当数据到达应用层后,数据包被重装为原始信息 “Hello computer 5.6.7.8!”
Networking Infrastructure#
现在你知道了数据包是如何从一个电脑通过 Internet 到另一个电脑。但中间的细节是怎样的呢?看看下面的图:
你的数据包先传到 ISP 的本地设备,再路由到 ISP 的骨干网,然后再经过若干路由和骨干网、专线和其他网络直到目的地:IP 为 5.6.7.8 的电脑。可以用 Traceroute
来看这个过程(但实测发现,很多地址都是 * * * *)
Internet Infrastructure#
Internet 骨干网是由许多大网络(NSP)相互连接的。如下图:
NAP:Network Access Point,也就是原来的 Internet interconnect point
MAE:Metropolitan Area Exchange,和 NAP 作用一样,但是私营的。
NAP 和 MAE 都称作 Internet Exchange Points or IXs
NSP: Network Service Provider,NSP 上连 IEP,下连 ISP,承上启下。
此图只是示意图,真实的图远比这复杂。
The Internet Routing Hierarchy#
数据包是如何在 Internet 上找到流动路径的呢?答:路径信息都包含在每个路由的路由表中。
路由器是包转换器。
下图是路由的层级结构图:
当一个数据包到路由时,会在路由表中查找目标 IP 地址,如果找到了,就发送到对应子网。如果没找到,就发送到默认路由(一般是上级的路由),如果还没找到,就继续向上查找,直到一个 NSP 骨干网,在这里有最大的路由表,然后就开始向下查找直到找到目标地址。
Domain Names and Address Resolution#
如果不知道 IP 地址,只知道域名,就需要用到域名服务(DNS)了。DNS 是一个分布式数据库,用来跟踪计算机名字和对应 IP 地址。
DNS 服务器:包含了部分 DNS 数据库和相关软件的电脑。没有哪个 DNS 服务器包含了整个数据库,都只包含了一个子集。如果一个 DNS 服务器没有包含被请求的域名,则会将此请求重定向到另一个 DNS 服务器。如下图:
DNS 的层级结构与 IP 路由类似,找不到就往上层找。
Internet Protocols Revisited#
Internet 正常工作需要很多协议。包含了 TCP/IP 协议,路由协议,媒体访问控制协议,应用层协议等。下面将描述一些重要的协议。
Application Protocols: HTTP and the World Wide Web#
Internet 上最常用的服务是 World Wide Web (WWW). 使 web 工作的应用协议是 HTTP。
HTTP 是无连接传输模式的文本协议。每个客户端发出的请求都需要开一个新的连接到服务器。
当您在 Web 浏览器中键入 URL 时,会发生以下情况:
如果 URL 包含域名,则浏览器首先连接到域名服务器并检索 Web 服务器的相应 IP 地址。
Web 浏览器连接到 Web 服务器并为所需网页发送 HTTP 请求(通过协议栈)。
Web 服务器接收请求并检查所需的页面。如果该页面存在,则 Web 服务器将其发送。如果服务器找不到请求的页面,它将发送 HTTP 404 错误消息。(404 表示 “未找到页面”,任何上网过的人都可能知道。)
Web 浏览器收到返回的页面并关闭连接。
然后浏览器解析页面并寻找完成网页所需的其他页面元素。这些通常包括图像、小程序等。
对于需要的每个元素,浏览器都会为每个元素向服务器建立额外的连接和 HTTP 请求。
当浏览器完成加载所有图像、小程序等时,页面将完全加载到浏览器窗口中。
Application Protocols: SMTP and Electronic Mail#
另一种常用的互联网服务是电子邮件。电子邮件使用应用层协议,称为简单邮件传输协议或 SMTP。SMTP 也是一个基于文本的协议,但与 HTTP 不同,SMTP 是面向连接的。SMTP 也比 HTTP 更复杂。SMTP 中有比 HTTP 更多的命令和注意事项。
当您打开邮件客户端阅读电子邮件时,通常会发生以下情况:
邮件客户端(Netscape Mail、Lotus Notes、Microsoft Outlook 等)打开到其默认邮件服务器的连接。邮件服务器的 IP 地址或域名通常在安装邮件客户端时设置。
邮件服务器将始终发送第一条消息以识别自己。
客户端将发送一个 SMTP HELO 命令,服务器将以 250 OK 消息响应该命令。
根据客户端是否正在检查邮件、发送邮件等,适当的 SMTP 命令将被发送到服务器,服务器将做出相应的响应。
此请求 / 响应事务将继续进行,直到客户端发送 SMTP QUIT 命令。然后服务器将说再见并关闭连接。
Transmission Control Protocol#
在协议栈的应用层之下是 TCP 层。当应用程序打开与 Internet 上另一台计算机的连接时,它们发送的消息(使用特定的应用程序层协议)通过堆栈向下传递到 TCP 层。TCP 负责将应用程序协议路由到目标计算机上的正确应用程序。为达到此目标,使用端口号。端口可以被认为是每台计算机上的独立通道。例如,您可以一边浏览网页一边阅读电子邮件。这是因为这两个应用程序(Web 浏览器和邮件客户端)使用了不同的端口号。当数据包到达计算机并沿协议栈向上移动时,TCP 层会根据端口号决定哪个应用程序接收数据包。
TCP 的工作原理是这样的:
发送:当 TCP 层从上面接收到应用层协议数据时,它会将其分割成可管理的 “块”,然后在每个 “块” 中添加一个带有特定 TCP 信息的 TCP 标头。TCP 标头中包含的信息包括数据需要发送到的应用程序的端口号。
接收:当 TCP 层从它下面的 IP 层接收到一个数据包时,TCP 层从数据包中剥离 TCP 头数据,必要时进行一些数据重构,然后使用从 TCP 获取的端口号将数据发送到正确的应用程序。
这就是 TCP 如何将通过协议栈的数据路由到正确的应用程序。
TCP 不是文本协议。TCP 是一种面向连接的、可靠的字节流服务。面向连接意味着两个使用 TCP 的应用程序在交换数据之前必须先建立连接。TCP 是可靠的,因为对于接收到的每个数据包,都会向发送方发送回执以确认传送成功。TCP 还在其标头中包含一个校验和,用于对接收到的数据进行错误检查。TCP 标头如下所示:
请注意,TCP 标头中没有 IP 地址的位置。这是因为 TCP 对 IP 地址一无所知。TCP 的工作是可靠地从应用程序到应用程序获取应用程序级数据。从计算机到计算机获取数据的任务是 IP 的工作。
下面列出了一些更常用的 Internet 服务的端口号。
FTP 20/21
Telnet 23
SMTP 25
HTTP 80
Internet Protocol#
与 TCP 不同,IP 是一种不可靠的无连接协议。IP 不关心数据包是否到达目的地。IP 也不知道连接和端口号。 IP 的工作是向其他计算机发送和路由数据包。IP 数据包是独立的实体,可能无序到达或根本没有到达。确保数据包按正确顺序到达是 TCP 的工作。IP 与 TCP 唯一的共同点是它接收数据并将其自己的 IP 标头信息添加到 TCP 数据的方式。IP 标头如下所示:
上面我们在 IP 标头中看到了发送和接收计算机的 IP 地址。下面是一个数据包经过应用层、TCP 层和 IP 层后的样子。应用层数据在 TCP 层进行分段,加上 TCP 标头,包继续到 IP 层,加上 IP 标头,然后包在 Internet 上传输。
总结#
现在你知道 Internet 是如何工作的了吧。
本作品采用《CC 协议》,转载必须注明作者和本文链接