本文共 863 字,大约阅读时间需要 2 分钟。
IP协议在协议栈中位于网络层,网络数据传输封装方式如下:
IP报文格式如下:
1、版本:IP报文版本号 IPV4:4,IPV6:6
2、首部长度:IP header 长度,没有选项,则一般为5(5x32bit=20B)
3、8位服务类型:一般没有使用,详细参考RFC
3位优先权字段(已经弃用)
4位TOS字段:最小延时,最大吞吐量,最高可靠性,最小成本(这四者冲突,只能选择一个)
1位保留字段,必须为0
4、总长度:header+数据 总长度
5、16位标识:IP 报文的唯一id,分片报文的id 相同,便于进行重组。
6、3位标志:标明是否分片。
Bit 0: reserved, must be zeroBit 1: (DF) 0 = May Fragment, 1 = Don't Fragment.Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. 0 1 2 +---+---+---+ | | D | M | | 0 | F | F | +---+---+---+1
第一位:保留
第二位:是否允许分片(置0:允许,置1:不允许),如果置1,但是IP报文长度超过MTU则被丢弃
第三位:结束标志(最后一片置1,表示已经完了,其余的置0)
7、13位片偏移:参考下图。如果是第一片取值为0,第二片取值175,以此类推。
8、TTL:生存时间,即路由器的跳数,每经过一个路由器,该TTL 减一,因此路由器需要重新计算IP报文的校验和。
9、8位协议:ICMP:1,TCP:6,UDP:17,其他的自行百度
10、首部校验和:IP header校验和,接收端收到报文进行计算如果校验和错误,直接丢弃。
11、源IP地址:无须解释
12、目的IP地址:无须解释
13、选项:这个一般也没有使用。详细参考RFC
14、数据:上层的报文,如TCP 报文、UDP报文等。
抓包测试如下:
转载地址:http://tknws.baihongyu.com/