计算机网络学习笔记 4.3 IPv4
前言
参考王道书。
后续会进一步整理,包括添加笔记内容,标明参考资料。
更新中。。。
IP数据报格式
TCP/IP协议栈
IP数据报格式
首部
- 分为固定部分和可变部分
- 固定部分为20B(1Byte = 8 bit)
字段 | 作用 | 长度 |
---|---|---|
版本 | 标明ipv4或者ipv6 | 4位 |
首部长度 | 此处数值再乘以4B才是真正大小,同时因为IP数据报固定长度为20B,所以此处最小值为5,即二进制的0101 | 4位 |
区分服务 | 希望获得哪种服务,用的比较少 | 8位 |
总长度 | 首部+数据的长度,最大为2^16-1=65535 | 16位 |
标识 | 用来表示是哪一个数据报的分片,不同的分片标识各不相同 | 8位 |
标志 | 用来表示是否分片和分片是否结束 | 3位,但实际有用的只有后2位 |
片偏移 | 用来标记分片之后,该分片在原来的数据报的位置,以8B为单位 | 13位 |
生存时间(TTL) | 每经过一个路由器,TTL减1,为0时则丢弃 | 8位 |
协议 | 用来标记协议名的字段值,如TCP,UDP,ICMP等等 | 8位 |
首部检验和 | 检验首部的字段是否出错,出错就丢弃此数据报 | 16位 |
源地址 | 发送方ip地址 | 32位 |
目的地址 | 接收方ip地址 | 32位 |
可选字段 | 用来支持排错、测量以及安全等措施 | 0~40位之间 |
填充 | 将数据报对齐成4字节的整数倍,数值全部为0 | 根据可选字段来定 |
IP数据报分片
最大传送单元MTU
链路层数据帧可封装数据的上限。以太网的MTU是1500字节。
如果所传送的数据报长度超过某链路的MTU值?分片
标识、标志、片偏移字段
标识
- 同一数据报的分片使用同一标识。
标志
- 仅有2位有意义,第1位保留
中间位(DF,Don’t Fragment)
- DF = 1:禁止分片
- DF = 0:允许分片
最低位(MF,More Fragment)
- MF = 1:后面“还有分片”
- MF = 0:代表最后一片 / 没分片
片偏移
指出较长分组分片后,某片在原分组中的相对位置。以8B为单位
如:片偏移为 00……01,表示该分片是原来数据报中第8字节开始的位置的分片
- 除了最后一个分片,每个分片长度一定是8B的整数倍。
例:传输链路需要分片为长度不超过1420B的数据报片。
分片:1400B、1400B、1000B(1420B中前20B用于首部字段)
- 片偏移量:0
- 片偏移量:1400B / 8B = 175(再转二进制)
- 片偏移量:2800B / 8B = 350(再转二进制)
总长度 | 标识 | MF | DF | 片偏移 | |
---|---|---|---|---|---|
原始数据报 | 3820 | 12345 | 0 | 0 | 0 |
数据报片1 | 1420 | 12345 | 1 | 0 | 0 |
数据报片2 | 1420 | 12345 | 1 | 0 | 175 |
数据报片3 | 1020 | 12345 | 0 | 0 | 350 |
IP数据报格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DequabT-1603259140808)(C:\Users\LEtME\AppData\Roaming\Typora\typora-user-images\image-20200723105358296.png)]