学习笔记之 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 协议》,转载必须注明作者和本文链接