数据包和路由基础
在互联网通信中,文字、图片、视频、文件等数据并不是作为一个巨大的整体原样发送。
实际上,数据会被分成网络能够处理的单位,并附加目的地信息等之后发送。
这种在网络上传输的小单位,通常称为数据包。
理解数据包机制后,就更容易思考数据如何在网络中移动、路由器查看什么来中继通信,以及通信路径上会处理哪些信息。
什么是数据包
数据包是在网络上收发的数据单位。
查看网站、发送图片、观看视频、发送消息等场景中,通信数据会被分成网络容易处理的单位。然后,每个单位都会附加目的地等控制信息并发送。
严格来说,不同通信层的叫法会不同。例如,在 IP 层称为 IP 数据包,在 TCP 层称为段,在数据链路层称为帧。
不过,本文不会深入细分各层名称,而是把网络上被分割并传输的通信单位广义地称为“数据包”。
| 叫法 | 主要使用的层 | 含义 |
|---|---|---|
| 数据包 | IP 层、网络层 | 带有目的 IP 地址等,在网络上传输的单位 |
| 段 | TCP 层 | TCP 中处理的数据单位 |
| 数据报 | UDP 或 IP 的语境 | 作为独立配送单位处理的数据 |
| 帧 | 数据链路层 | 在同一网络区间内于设备之间移动的单位 |
重要的是,通信数据并不是只靠“内容”本身发送,而是和送达所需的信息一起被处理。
为什么要把数据分小发送
把大数据分小发送,是为了让整个网络高效处理大量通信。
如果大文件或视频数据作为一个巨大的整体发送,这条通信就容易长时间占用线路或设备处理能力。这样其他通信会被等待,网络整体效率会变差。
按数据包单位发送,就可以把多个使用者和应用的通信细小地交替处理。
| 方式 | 特点 | 网络上的易处理性 |
|---|---|---|
| 把大数据原样发送 | 一条通信以大单位流动 | 难以插入其他通信,效率容易变差 |
| 分成小数据包发送 | 把通信分割成小单位流动 | 容易并行处理大量通信 |
通过这个机制,同一网络上可以同时进行 Web 浏览、视频观看、聊天、文件发送等。
数据包化是互联网同时处理大量通信的基本机制。
数据包包含目的地信息
数据包要在网络上移动,就需要表示“应该送到哪里”的信息。
在 IP 通信中,代表性信息包括源 IP 地址和目的 IP 地址。
源 IP 地址表示通信从哪里发出。目的 IP 地址表示通信应该送到哪里。
| 信息 | 作用 |
|---|---|
| 源 IP 地址 | 表示数据包的发送源 |
| 目的 IP 地址 | 表示数据包的配送目标 |
| 数据部分 | 包含实际想发送内容的一部分 |
| 控制信息 | 包含通信处理所需的辅助信息 |
这里不会处理 IP 头的详细结构。
需要掌握的是,数据包不仅包含“想发送的数据的一部分”,也包含“为了在网络上配送所需的信息”。
路由器在做什么
中继数据包的代表性设备是路由器。
路由器会确认收到的数据包的目的地信息,并判断下一步应该把这个数据包送到哪里。
这种判断和转发的机制通常称为路由。
更准确地说,路由器会根据目的 IP 地址,参照自己持有的路径信息,决定下一跳转发目标。这个“下一跳转发目标”不一定是最终目的地本身。很多情况下,它会交给下一个路由器或下一个网络。
| 要素 | 作用 |
|---|---|
| 数据包 | 在网络上移动的通信单位 |
| 目的 IP 地址 | 表示数据包应该送到哪里的信息 |
| 路由器 | 根据目的地信息判断下一跳转发目标的设备 |
| 路由 | 使用路径信息决定数据包前进方向的处理 |
路由器基本上不是理解数据包的数据部分含义之后再中继。
例如,它不是阅读网页文字内容或图片含义来判断,而是主要查看目的地信息和路径信息来转发。
数据包会经过多个网络送达
互联网并不是一个巨大的单一网络。
实际上,它由家庭内网络、企业网络、通信运营商网络、数据中心网络等大量网络互相连接而成。
数据包从发送源到目的地之间,会经由多个路由器和网络。
这时,各个路由器并不会细致管理“到最终目的地的全程”。基本上,它会根据自己持有的路径信息,判断下一步交给哪里。
也就是说,数据包会在网络上的各个地点被中继,并逐步接近目的地。
路径不一定总是完全相同
即使访问同一个网站,通信路径也不一定总是完全相同。
通常,同一通信流中经常会通过相似路径,但路径可能因网络状态而改变。
例如有下面这些因素。
| 因素 | 内容 |
|---|---|
| 网络故障 | 某些线路或设备无法使用,切换到其他路径 |
| 拥塞 | 由于负载分散或路径控制,可能使用其他路径 |
| 设置变更 | 通信运营商或管理员的设置变更导致路径改变 |
| 连接关系变化 | 网络之间的连接状况导致路径改变 |
不过,把它理解成“每个数据包每次都自由选择完全不同的路径”并不准确。
很多情况下,路由器会按照路径信息转发。前往同一目的地的通信也常常经过相同路径,路径变化依赖网络状态和设置。
这里不会处理 BGP 等详细路径控制。重要的是,互联网上的通信会经由多个网络,其路径并不是固定的一条线。
接收侧会恢复成可处理的形式
发送侧分割的数据,会在接收侧恢复成可处理的形式。
例如打开 Web 页面时,浏览器会接收多份通信数据,并把它们作为 HTML、CSS、JavaScript、图片等处理。
在 TCP 通信中,会处理分割数据的顺序和到达确认,使接收侧更容易以正确顺序的数据使用。
另一方面,像 UDP 这样性质不同于 TCP 的通信,协议本身不会以同样方式进行到达确认或重传控制。因此,根据用途,应用侧会进行所需处理。
| 通信种类 | 接收侧的处理 |
|---|---|
| 使用 TCP 的通信 | 通过顺序控制和重传控制,更容易把数据恢复成正确顺序可处理的形式 |
| 使用 UDP 的通信 | 不以前提方式保证到达或顺序控制,必要时由应用侧处理 |
使用者通常不会意识到这些处理。
因为浏览器或应用会把接收到的数据作为人能看到的画面或文件来显示和处理。
数据包通信支撑大量通信
在互联网上,世界各地的使用者同时通信。
不是让每条通信分别占用专用路径,而是把通信分割成小数据包,由网络设备连续转发,从而处理大量通信。
数据包通信的基本流程可以整理如下。
| 阶段 | 处理内容 |
|---|---|
| 发送侧 | 把数据分成网络能处理的单位 |
| 数据包化 | 附加目的地信息等控制信息 |
| 网络上 | 路由器等根据目的地信息中继 |
| 路径上 | 经过多个网络朝目的地前进 |
| 接收侧 | 把到达的数据恢复成应用能处理的形式 |
通过这个机制,互联网可以同时处理许多通信。
数据包是小单位,但正是这些单位的累积,让 Web 浏览、视频分发、消息发送、在线会议、文件传输等成立。
思考匿名性时的重要视角
数据包并不是从发送源直接瞬间到达目的地。
通信途中有路由器、通信运营商网络、数据中心网络等多个中继点。
因此,思考匿名性和隐私时,需要理解在通信路径上的哪里,哪些信息可能可见。
例如,如果通信内容被加密,路径上的第三方不一定能原样读取内容。
但是,通信发生这一事实、通信目标 IP 地址、通信量、通信时机等,即使加密也不会完全隐藏。
| 信息 | 路径上可能可见 | 补充 |
|---|---|---|
| 通信内容 | 如果未加密,可能可见 | HTTPS 等更容易保护内容 |
| 目的 IP 地址 | 很可能可见 | 路由所需的信息 |
| 通信量 | 可能可见 | 收发数据量的趋势 |
| 通信时机 | 可能可见 | 何时通信这一信息 |
| 源信息 | 可能可见 | NAT、 等结构会改变可见方式 |
理解数据包和路由基础,是思考信息如何在网络上移动、可能在哪些地点被观察的基础。
总结
数据包是为了在网络上收发数据而使用的小通信单位。
大数据会被分成网络能够处理的单位,并附加目的地信息等后发送。
路由器根据数据包的目的地信息和路径信息,判断下一步转发到哪里。
数据包会经由多个网络朝目的地前进,但其路径并不总是完全固定。故障、拥塞、设置变更、网络之间的连接状况等都可能让路径改变。
接收侧会把到达的数据处理成应用能使用的形式。有像 TCP 这样进行顺序控制和重传控制的通信,也有像 UDP 这样重视轻量配送的通信。
理解这个机制后,就能更准确地思考互联网上的通信如何被承载,以及通信路径上可能处理哪些信息。
相关工具
WhatIsMyIP
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。