赞
踩
网络层位于运输层和数据链路层之间,存在着IP、ARP、ICMP协议,以包的形式传递数据。
网络层数据包(IP数据包,Packet)由首部、数据两部分组成。
通过 ping www.baidu.com 抓包我们可以看到以上网络层数据,在这条请求中,版本为 IPV4,首部长度20字节,不区分服务,总长度为60字节,协议为ICMP,首部校验和看起来被禁用了,最后是源IP地址和目标IP地址。
首部里还有另外四个属性需要单独来说,首先是生存时间(Time to live),每个路由器在转发之前都会将数量减1,如果小于0时,路由器会返回错误报告,防止路由不断转发出现死循环的情况。通过 ping
命令可以直接推测请求所需TTL。
Linux操作系统默认TTL为64,这里剩余TTL为49。通过 -i 配置来指定ICMP的生存时间,可以看到当TTL小于所需时,请求发送失败。
剩下三个属性和分片传输有关联,一个是是标识 (Identification),占据16位,范围是 0 - 65535,数据包的ID,每发送一个数据包,ID就加1,超出则从0开始重新累加,这里标识是30102。
如果总长度超出了1500字节,是需要分片传输到数据链路层的,但同一个数据包所有片的标识都是一样的。通过标识可以找到同一个包的所有片,但还需要两个属性才能知道每个片放在哪一个位置。
标志 (Flags),总共有三位,第一位保留暂无作用,第二位表示不允许分片,1表示不允许,0表示允许,第三位表示更多片,1表示不是最后一片,0代表最后一片。
片偏移 (Time to live),13位,要乘以8才是最终的字节偏移,当多个片时,可以算出占据数据包的哪部分。
通过 -l 的配置在 ping 命令中指定数据包大小,ping ke.qq.com -l 4000
通过抓包可以看到分成了三片,其中第一片的总长度1500,标志为允许分片且不是最后一片,偏移量为0。第二片总长度1500,标志为允许分片且不是最后一片,偏移量为1480(上一片总长1500 - 首部长度20)。第三片长度1068,标志为允许分片且是最后一片,偏移量为2960。
网络层首部涵盖了非常多的信息,包括协议版本、总长度、用于分片记录的数据、IP地址等等,保障了信息的可靠传输。
以上就是 网络层首部记录的信息数据
, 更多有关 前端
、网络协议
的内容可以参考我其它的博文,持续更新中~
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。