- 本文主要介绍网络层的数据段,重点介绍网络层首部相关信息。
#网络层简介
- 数据:很多时候是由传输层传递下来的数据段(Segments)(IP、ICMP和ARP协议就是网络层协议,不涉及运输层)
#网络层首部 - 版本、首部长度、区分服务、总长度
版本(Version)
- 占4位
- 0b0100:IPv4
- 0b0100:IPv6
首部长度
- 占4位,二进制转十进制值乘4才是最终长度
- 0b0101 -> 20(min)
- 0b1111 -> 60(max)
- 可变部分最多是40字节
区分服务(Differentiated Services Field)
- 占8位
- 用于提高网络服务质量(
QoS
, Quality of Service)
总长度
- 占16位
- 首部 + 数据的长度之和,最大值是 65535(IP数据包MAX长度)字节
- 帧的长度不能超过1500字节,所以帧的数据部分中网络层数据部分最大长度是1500 - 20 = 1480字节,而且在传输给数据链路层的过程中就需要分片(fragments),其中米都有自己的网路层首部(IP首部)。
#网络层首部 - 标识、标志、片偏移
- 标识(Identification)
- 占16位
- 数据包的ID,当数据包过大进行分片时, 同一数包的标识时一样的,用于代表
- 有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1, 超出范围(65535)就会重新开始。
- 标志(Flags)
- 占3位
- 第一位(0… = Reserved bit: Not set)保留位
- 第二位(.1. = Don’t fragment: Set)1表示允许分片
- 第三位(…0 = More fragments: Not set)0代表是最后一片
- 片偏移(Fragment offset)
- 占13位
- 片偏移乘以8就是字节偏移
- 每一片的长度时8的整数倍(片偏移 = 片的长度/8, 因为13位不一定存得下)
#ping 的几个用法,wireshark
抓包
ping /?
查看ping的用法ping ip地址 -l 数据包大小
发送指定大小的数据包ping ip地址 -f
不允许分片ping ip地址 -i TTL数值
tracert pathping
#网络层首部 - 生存时间、协议、首部校验和
生存时间(Time To Live, TTL)
- 占8位
- 每个路由器转发前TTL减1,一旦发现TTL为0,路由器就会返回错误报告(防止路由表配置错误占用带宽)[1]
协议(Protocol)
- 占8位
- 表明网络层封装的数据使用的协议
首部校验和(Header Checksum)
- 用于检测首部是否有错误
- 1.带宽一词最初指的是电磁波频带的宽度,也就是信号的最高频率与最低频率的差值。目前,它被更广泛地借用在数字通信中,用来描述网络或线路理论上传输数据的最高速率 ↩