【笔记】IP数据包格式
前言
IP数据包格式
IP数据包
- IP数据包(三层数据)包头
1 | 版本(4bit)-首部长度(4bit)-优先级与服务类型(8bit)-总长度(16bit)-标识符(16bit)-标志(3bit)-段偏移量(13bit)-TTL(8bit)-协议号(8bit)-首部校验和(16bit)-源地址(32bit)-目标地址(32bit)-可选项(0-40bit) |
版本
- 标识IPv4或者IPv6
首部长度
- 标识整个IP包头的字节数
- 首部长度的长度范围为20-60字节,这个数值取决于首选项
优先级与服务类型
- 通常为了限网速
- 优先级为3bit,服务类型为4bit,剩下1bit为预留
总长度
- 标识整个IP包的总长度(包括三层包头、四层包头、五层数据),单位字节
段偏移量
- 如果一个IP包的数据很大,(包括IP包头在内的数据)超过了1500字节,那么会将数据进行分片,每一分片最多只能承载1500-20=1480字节个数据(这个数据包括四层包头和五层数据),而接收数据的网卡,在收到多个分片数据时,需要将数据重新组合,由段偏移量来控制数据的次序
- 第1个分片段偏移量为1480*0=0字节,第2个分片段偏移量为1400*1=1480字节,以此类推
标识符
- 如果多个IP包的数据很大,分片后如果仅通过段偏移量确认次序,很容易混淆,可以使用标识符进行分辨
- 标识符为随机生成的id
标志
第一个bit一定为0,目前为保留位
第二个bit 为0表示进行了分片 为1表示没进行分片
第三个bit 为1表示不是最后一个分片 为0表示是最后一个分片
TTL(Time to life)
生存时间
每经过一个路由器,TTl值-1,直到达到1,此时不再-1,直接被杀掉
初始值
微软系列操作系统初始值通常大于100 Unix系列操作系统初始值通常小于100 其他网络设备初始值通常等于255
- 作用:防止IP包在互联网上永久的循环下去
协议号
- 识别上层协议
上层是TCP协议,协议号为6 上层是UDP,协议号为17 “上层”是ICMP,协议号为1
首部校验和
- 校验IP包头是否被篡改
源地址
- 源IP地址
目标地址
- 目标IP地址