IP报文格式

IP报文格式

报文格式

图1 IP头格式

字段 长度 含义
Version 4比特 * 4:表示为IPV4; * 6:表示为IPV6。
IHL 4比特 首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。以4字节为一个单位。
Type of Service 8比特 服务类型。只有在有QoS差分服务要求时这个字段才起作用。
Total Length 16比特 总长度,整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。
Identification 16比特 标识,主机每发一个报文,加1,分片重组时会用到该字段。
Flags 3比特 标志位: 图2IP Flag字段格式 * Bit 0: 保留位,必须为0。 * Bit 1: DF(Don't Fragment),能否分片位,0表示可以分片,1表示不能分片。 * Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
Fragment Offset 12比特 片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。
Time to Live 8比特 生存时间:可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。
Protocol 8比特 协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。 常见值: * 0: 保留Reserved * 1: ICMP, Internet Control Message RFC792 * 2: IGMP, Internet Group Management RFC1112 * 3: GGP, Gateway-to-Gateway RFC823 * 4: IP in IP (encapsulation) RFC2003 * 6: TCP Transmission Control Protocol RFC793 * 17: UDP User Datagram Protocol RFC768 * 20: HMP Host Monitoring Protocol RFC 869 * 27: RDP Reliable Data Protocol RFC908 * 46: RSVP (Reservation Protocol) * 47: GRE (General Routing Encapsulation) * 50: ESP Encap Security Payload RFC2406 * 51: AH (Authentication Header) RFC2402 * 54: NARP (NBMA Address Resolution Protocol) RFC1735 * 58: IPv6-ICMP (ICMP for IPv6) RFC1883 * 59: IPv6-NoNxt (No Next Header for IPv6) RFC1883 * 60: IPv6-Opts (Destination Options for IPv6) RFC1883 * 89: OSPF (OSPF Version 2) RFC 1583 * 112: VRRP (Virtual Router Redundancy Protocol) RFC3768 * 115: L2TP (Layer Two Tunneling Protocol) * 124: ISIS over IPv4 * 126: CRTP (Combat Radio Transport Protocol) * 127: CRUDP (Combat Radio User Protocol) * 132: SCTP (Stream Control Transmission Protocol) * 136: UDPLite RFC 3828 * 137: MPLS-in-IP RFC 4023
Header Checksum 16比特 首部检验和,只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。
Source Address 32比特 源IP地址。
Destination Address 32比特 目的IP地址。
Options 可变 选项字段,用来支持排错,测量以及安全等措施,内容丰富(请参见下表)。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。
Padding 可变 填充字段,全填0。
[表1IP头字段解释]
CLASS NUMBER 长度 含义
0 0 - Code为0代表了选项列表的结束,放在所有选项链表的后面,用来补字节对齐。 该选项无长度字段,占一个字节。
0 1 - 表示无操作的选项。用在各种选项之间,占一个字节。用于填充4字节对齐。
0 2 11字节 表示安全和处理限制的选项。 该选项提供一种主机可以发送安全、分隔、处理限制及TCC(关闭使用组)的参数功能。 * **Type=130(10000010):**占1字节,code 的值此处设为130 * **length=11:**占1字节,长度选项固定为11,表示该选项的长度为11字节 * **SSS:**占2字节,表示安全域,下面列出了16种不同的安全标准,其中8个至今还没使用,预留将来使用,列表如下: 00000000 00000000 - Unclassified 11110001 00110101 - Confidential 01111000 10011010 - EFTO 10111100 01001101 - MMMM 01011110 00100110 - PROG 10101111 00010011 - Restricted 11010111 10001000 - Secret 01101011 11000101 - Top Secret 00110101 11100010 - (Reserved for future use) 10011010 11110001 - (Reserved for future use) 01001101 01111000 - (Reserved for future use) 00100100 10111101 - (Reserved for future use) 00010011 01011110 - (Reserved for future use) 10001001 10101111 - (Reserved for future use) 11000100 11010110 - (Reserved for future use) 11100010 01101011 - (Reserved for future use) * **CCC:**占2个字节,表示分隔域,当传输的数据没被分隔的时候,此值设为0,其他的具体值可以从国防情报局获取。 * **HHH:**占2个字节,操作限制域,该值由国防情报局DIAM手册65-19,《标准安全记号》描述。 * **TCC:**占3个字节,传输控制码。提供一种传输隔离的手段,该值为3字母词,可用值从HQ DCA Code 530。
0 3 可变 松散的源站选路(为数据报指定一系列必须经过的IP地址) 选项格式如下: * Type: 类型。占1字节,此处设为131。 * length: 占1字节,记录整个选项的长度。 * pointer: 指针项,占1个字节,指向下一个被处理的源站地址,最小值为4。 * route data: 路由数据。
0 7 可变 记录路径(让每个路由器都记下它的IP地址)。 选项格式如下: * Type: 指明IP选项的类型。此处值为7。 * length: 选项的总字节长度。不包含填充的长度,IP填满时最大为39;。 * pointer: 它是一个基于1的指针,指向存放下一个IP地址的位置。它的最小值为4,指向存放第一个IP地址的位置。随着每个IP地址存入清单,ptr的值分别为8,12,16,最大到36,当记录下9个IP地址后,ptr的值为40,表示清单已满。 * route data: 路由数据。
0 8 4字节 流标识选项。该选项长度固定为4字节,code值为136,后面的字段固定为0x02,流ID为2字节。该选项提供了一种携带SATNET流标识符通过不支持流方式的网络。
0 9 可变 严格的源站选路选项。与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址。 * **Type=137(10001001):**占1字节,code 的值此处设为137。 * **length:**占1字节,记录整个选项的长度。 * **pointer:**指针项,占1个字节,指向下一个被处理的源站地址,最小值为4。
2 4 可变 时间戳选项。 * **Type (01000100):**时间戳选项,代码为68; * **length:**选项的总长度(一般为36或40); * **ponter:**指向下一个可用空间的指针(5,9,13等); * **oflw:**表示溢出字段; * flg: 表示标志字段: * 0:只记录时间戳。 * 1:每台路由器都记录它的IP地址和时间戳。在选项列表中只有存放4对地址和时间戳的空间。 * 3:发送端对选项列表进行初始化,存放了4个IP地址和4个取值为0的时间戳值。只有当列表中的下一个IP地址与当前路由器地址相匹配时,才记录它的时间戳。
[表2IP Header Options]
参考标准
标准Standard Description
RFC 791 INTERNET PROTOCOL
相关推荐
ai_coder_ai25 分钟前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
spider_xcxc2 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
2501_943782352 小时前
【共创季稿事节】摇骰子:用 ArkTS 实现随机动画与交互反馈
运维·nginx·交互·harmonyos·鸿蒙·鸿蒙系统
l1t2 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
HavenlonLabs3 小时前
Havenlon 对抗性完整(十七):安全不是“防住攻击”,而是控制失败方式
网络·人工智能·架构·安全威胁分析·安全架构·havenlon
fei_sun3 小时前
路径MTU发现
linux·运维·网络
Tian_Hang3 小时前
Eclipse Ditto 物模型相关代码
java·运维·服务器·ide·eureka·eclipse
tachibana25 小时前
hot100 回文链表(234)
java·网络·数据结构·leetcode·链表
iangyu5 小时前
linux配置时间同步
linux·运维·服务器
从零开始的代码生活_6 小时前
NAT、代理服务与内网穿透详解
linux·服务器·网络·c++·http·智能路由器