在搞网络通信的时候,经常会听到“协议数据单元”这个词。它其实就是不同网络层次中传输的数据块的正式称呼。但你可能想知道,在不同的层级,这个“数据单元”到底叫啥名儿?特别是在网络层,它又有个什么特别的名字?
每一层都有自己的“包裹”名字
想象一下寄快递:你在应用层写好一封信(数据),然后一层层打包——加信封、装箱、贴运单。每一层都会加上自己的信息,而这个“包裹”在不同环节有不同的叫法。
比如:
- 物理层:比特(bit)
- 数据链路层:帧(frame)
- 网络层:我们马上要讲的重点
- 传输层:段(segment)或报文(datagram)
网络层的协议数据单元叫“分组”或“包”
到了网络层,协议数据单元正式被称为分组(packet),也常被叫做包。这是最标准的说法。
比如你访问一个网站,你的电脑会把数据交给IP协议处理,IP协议就会把这些数据封装成一个个“包”,每个包里都带着源地址和目标地址,就像快递单上的发件人和收件人信息一样。
路由器就是靠读取这些包里的IP地址,决定把它往哪条路上转发。所以你也可以说,整个互联网的转发机制,就是基于“包”的传递来实现的。
为什么不是“帧”或者“段”?
有人会混淆数据链路层的“帧”和网络层的“包”。其实很简单:帧是走局域网用的,比如你的电脑通过网线或Wi-Fi把数据发给路由器,这时候用的是MAC地址,封装成帧。
而包是跨网络用的,靠IP地址寻路。帧像是小区内的短途配送车,包则是跨城市的物流干线。
至于“段”,那是传输层(比如TCP)封装出来的,负责端到端的可靠传输。它会被放进“包”里,再由网络层发出去。
举个实际例子
当你在手机上刷视频,数据从App出来,先被打包成TCP段,再封装成IP包,最后变成帧通过Wi-Fi发给路由器。到了公网,各个路由器只关心IP包头里的地址,一路转发,直到抵达目标服务器。
这一路上,真正决定路径的就是那个在网络层被称为“包”的东西。
小结一下常见术语
为了避免混乱,列个简单对照:
应用层 → 数据(data)
传输层 → 段(segment) 或 报文
网络层 → 分组 / 包(packet)
数据链路层 → 帧(frame)
物理层 → 比特(bit)
所以,下次别人问你:协议数据单元在网络层叫什么?你可以直接答:叫“包”或者“分组”,英文是 packet。
这不只是个名称问题,理解了它,你就明白了数据是怎么一层层打包、拆包,最终穿越整个网络的。