113 lines
3.3 KiB
Markdown
113 lines
3.3 KiB
Markdown
### 1、IPv4数据报格式
|
||
|
||
![image-20230709145705180](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709145705180.png)
|
||
|
||
### 2、version
|
||
|
||
- 4个比特构成
|
||
- 表示IP首部的版本号
|
||
|
||
![image-20230709145940327](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709145940327.png)
|
||
|
||
### 3、首部长度 IHL
|
||
|
||
- Internet Header Length
|
||
- 4比特构成
|
||
- 表示IP首部的大小
|
||
- 单位为4字节(32比特)
|
||
- 没有可选项,没有数据的IP数据报,首部长度字段为5,也就是首部真实数据长度为20字节
|
||
|
||
### 4、区分服务 TOS
|
||
|
||
- Type Of Service
|
||
- 8比特构成
|
||
- 表明服务质量
|
||
- 通常有应用指定
|
||
- 有人提出将TOS字段划分为 DSCP和ECN两个字段
|
||
- DSCP Differential Services Codepoint 差分服务代码点
|
||
- Explicit Congestion Notification 显式拥塞通告
|
||
|
||
![image-20230709150354408](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709150354408.png)
|
||
|
||
### 5、总长度 Total Length
|
||
|
||
- 首部+数据部分总长度
|
||
- 长为16比特
|
||
- IP包的最大长度为65535字节,2^16
|
||
|
||
### 6、标识 ID:Identification
|
||
|
||
- 16比特构成
|
||
- 用于分片重组
|
||
- 同意分片的标识值相同
|
||
- 每发送一个IP包,数值自增
|
||
- ID相同,如果目标地址源地址或协议不同的话,也是不同的分片
|
||
|
||
### 7、标志 Flags
|
||
|
||
- 3比特构成
|
||
- 表示包被分片的相关信息
|
||
|
||
![image-20230709151237049](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709151237049.png)
|
||
|
||
### 8、片便宜 FO Frament Offset
|
||
|
||
- 13比特构成
|
||
- 用来标识被分片的每个分段相对于原始数据的位置
|
||
- 第一个分片该字段为0
|
||
- 对多可以表示8192个相对位置
|
||
- 单位为8字节
|
||
- 最大可表示原始数据 8 * 8192 = 65536字节的位置
|
||
|
||
### 9、生存时间 TTL Time To Life
|
||
|
||
- 8比特构成
|
||
- 中转多少个路由器的意思
|
||
- 每经过一个路由器,TTL自动减少1
|
||
- 对多中转次数不会超过256次,可以避免IP包在网络内无限传递
|
||
- 变成0时,该包被丢弃
|
||
|
||
### 10、协议编号 Protocol
|
||
|
||
- 8比特构成
|
||
- 表示包内数据使用的是哪一个协议
|
||
|
||
![image-20230709151906055](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709151906055.png)
|
||
|
||
![image-20230709151917758](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230709151917758.png)
|
||
|
||
### 11、首部校验和 Header Checksum
|
||
|
||
- 16比特构成
|
||
- 只用于校验首部,不校验数据部分
|
||
- 首部校验和计算方式 TODO
|
||
|
||
### 12、可选项 Options
|
||
|
||
- 长度可变
|
||
- 包含以下信息
|
||
- 安全级别
|
||
- 源路径
|
||
- 路径记录
|
||
- 时间戳
|
||
|
||
### 13、填充 Padding
|
||
|
||
- 在有可选项的情况下,首部长度可能不是32比特的整数倍
|
||
- 向字段填充0,调整为32比特的整数倍
|
||
|
||
|
||
|
||
### 14、网络字节序
|
||
|
||
- 大端序:4个字节的32bit用下面的次序传输
|
||
- 首先是0-7bit
|
||
- 其次8-15bit
|
||
- 然后16-23bit
|
||
- 最后24-31bit
|
||
- TCP/IP首部中所有二进制整数在网络中传输都要求大端序,因此又称作网络字节序
|
||
- 以其他形式存储二进制整数的机器,必须在传输数据之前把首部转换成网络字节序
|
||
|
||
### 15、特殊IP地址
|
||
|
||
![image-20230716172604785](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20230716172604785.png) |