在计算机网络中,数据传输并不是一整块发送的,而是被分割成一个个单元进行传递。这些传输的基本单位被称为“协议数据单元”(PDU)。不同网络层次中的PDU有不同的名字,而到了网络层,它有一个特定的称呼——分组(packet),也常被称为数据包。
为什么网络层的PDU叫分组?
网络层的主要任务是实现主机到主机的通信,负责将数据从源设备传送到目标设备,可能跨越多个网络。在这个过程中,传输层传下来的数据会被加上网络层的头部信息,比如源IP地址和目标IP地址。这个加上了网络层头部的数据单元,就是所谓的“分组”。
举个生活中的例子:你寄快递时,会把物品打包好,贴上写有收件人和发件人地址的快递单。网络层的分组就像这个包裹,数据是物品,IP地址等信息就是快递单。路由器则像快递中转站,根据快递单上的地址决定往哪里送。
各层PDU名称对照
为了更清楚地理解,可以看看不同层级中PDU的叫法:
- 物理层:比特(bit)
- 数据链路层:帧(frame)
- 网络层:分组(packet)
- 传输层:段(segment,TCP)或报文(datagram,UDP)
- 应用层:数据(data)
注意,“分组”和“包”在实际使用中基本可以互换。比如我们常说“IP数据包”,指的就是网络层的PDU。在路由设置中,路由器处理的就是这些IP分组,根据路由表决定下一跳路径。
实际应用中的表现
当你在配置路由器时,比如设置静态路由或者查看路由表,背后其实都是在管理如何转发这些分组。例如,在Linux系统中使用ip route命令添加一条路由规则:
ip route add 192.168.2.0/24 via 192.168.1.1
这条命令的意思是:所有目的地为192.168.2.0网段的分组,都应该通过网关192.168.1.1转发。路由器收到一个分组后,会检查其目标IP地址,并据此查找路由表,决定从哪个接口发出。
在网络排错时,使用ping或traceroute工具看到的“包超时”或“无法到达目标主机”,其实反映的就是某个分组在传输过程中出了问题,可能是路由配置错误,也可能是目标网络不可达。