ipv4数据报文
IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议,提供不可靠的、无连接的、尽力而为的数据报传输服务。
版本(4bit) | 首部长度(4bit) | 服务类型(8bit) | 总长度(16bit) | |
标识(16bit) | 标志(3bit) | 片偏移(13bit) | ||
生存时间(8bit) | 协议(8bit) | 首部检验和(16bit) | ||
源IP地址(32bit) | ||||
目的IP地址(32bit) | ||||
选项 | 填充 | |||
数据 |
报文格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段 | 长度 | 含义 |
---|---|---|
Version | 4比特 |
|
IHL | 4比特 | 首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。以4字节为一个单位。 |
Type of Service | 8比特 | 服务类型。只有在有QoS差分服务要求时这个字段才起作用。 |
Total Length | 16比特 | 总长度,整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。 |
Identification | 16比特 | 标识,主机每发一个报文,加1,分片重组时会用到该字段。 |
Flags | 3比特 | 标志位: 图3-77 IP Flag字段格式0 1 2 +-----+------+------+ | 0 | DF | MF | +-----+------+------+
|
Fragment Offset | 13比特 | 片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。 |
Time to Live | 8比特 | 生存时间:可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。 |
Protocol | 8比特 | 协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。 常见值:
|
Header Checksum | 16比特 | 首部检验和,只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。 |
Source Address | 32比特 | 源IP地址。 |
Destination Address | 32比特 | 目的IP地址。 |
Options | 可变 | 选项字段,用来支持排错,测量以及安全等措施,内容丰富(请参见表3-7)。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。 |
Padding | 可变 | 填充字段,全填0。 |
表3-7 IP Header Options
CLASS | NUMBER | 长度 | 含义 |
---|---|---|---|
0 | 0 | - | Code为0代表了选项列表的结束,放在所有选项链表的后面,用来补字节对齐。 该选项无长度字段,占一个字节。 选项格式如下: +--------+ |00000000| +--------+ Type=0 |
0 | 1 | - | 表示无操作的选项。用在各种选项之间,占一个字节。用于填充4字节对齐。 选项格式如下: +--------+ |00000001| +--------+ Type=1 |
0 | 2 | 11字节 | 表示安全和处理限制的选项。 该选项提供一种主机可以发送安全、分隔、处理限制及TCC(关闭使用组)的参数功能。 选项格式如下: +--------+--------+---//---+---//---+---//---+---//---+ |10000010|00001011|SSS SSS|CCC CCC|HHH HHH| TCC | +--------+--------+---//---+---//---+---//---+---//---+ Type=130 Length=11
|
0 | 3 | 可变 | 松散的源站选路(为数据报指定一系列必须经过的IP地址) 选项格式如下: +--------+--------+--------+---------//--------+ |10000011| length | pointer| route data | +--------+--------+--------+---------//--------+ Type=131
|
0 | 7 | 可变 | 记录路径(让每个路由器都记下它的IP地址)。 选项格式如下: +--------+--------+--------+---------//--------+ |00000111| length | pointer| route data | +--------+--------+--------+---------//--------+ Type=7
|
0 | 8 | 4字节 | 流标识选项。该选项长度固定为4字节,code值为136,后面的字段固定为0x02,流ID为2字节。该选项提供了一种携带SATNET流标识符通过不支持流方式的网络。 选项格式如下: +--------+--------+--------+--------+ |10001000|00000010| Stream ID | +--------+--------+--------+--------+ Type=136 Length=4 |
0 | 9 | 可变 | 严格的源站选路选项。与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址。 选项格式如下: +--------+--------+--------+---------//--------+ |10001001| length | pointer| route data | +--------+--------+--------+---------//--------+ Type=137
|
2 | 4 | 可变 | 时间戳选项。 选项格式如下: +--------+--------+--------+--------+ |01000100| length | pointer|oflw|flg| +--------+--------+--------+--------+ | internet address | +--------+--------+--------+--------+ | timestamp | +--------+--------+--------+--------+ | . | . . Type = 68
|
IPV6报文格式
IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation),它是Internet工程任务组(IETF)设计的一套规范,是IPv4 [RFC 791]的升级版本。
报文格式
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Length | Next Header | Hop Limit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Source Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Destination Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Extension Headers | + ... ... +
字段 | 长度 | 含义 |
---|---|---|
Version | 4比特 |
|
Traffic class | 8比特 | 流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。 |
Flow Label | 20比特 | 流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。 |
Payload length | 16比特 | 该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。 |
Next header | 8比特 | 下一报头,该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。 |
Hop limit | 8比特 | 跳数限制,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。 |
Source Address | 128比特 | 该字段表示该报文的源地址。 |
Destination Address | 128比特 | 该字段表示该报文的目的地址。 |
Extension Headers | 可变 | 扩展报头。IPv6取消了IPv4报头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:
不是所有的扩展报头都需要被转发路由设备查看和处理的。路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头。 除了目的选项扩展报头出现两次(一次在路由扩展报头之前,另一次在上层扩展报头之前),其余扩展报头只出现一次。 |
扩展头协议号 | 含义 | 相关标准 |
---|---|---|
0 | IPv6 Hop-by-Hop Option | RFC 8200 |
1 | ICMP | RFC 792 |
2 | IGMP | RFC 1112 |
3 | GGP (Gateway-to-Gateway) | RFC 823 |
4 | IPv4 encapsulation | RFC 2003 |
5 | Stream | RFC 1190, RFC 1819 |
6 | TCP | RFC 793 |
7 | CBT | - |
8 | EGP (Exterior Gateway Protocol) | RFC 888 |
9 | IGP | - |
10 | BBN RCC Monitoring | - |
11 | Network Voice Protocol | RFC 741 |
12 | PUP | - |
13 | ARGUS (deprecated) | - |
14 | EMCON | - |
15 | XNET (Cross Net Debugger) | - |
16 | CHAOS | - |
17 | UDP | RFC 768 |
18 | MUX | - |
19 | DCN-MEAS (DCN Measurement Subsystems) | - |
20 | HMP (Host Monitoring) | RFC 869 |
21 | PRM (Packet Radio Measurement) | - |
22 | XNS-IDP | - |
23 | TRUNK-1 | - |
24 | TRUNK-2 | - |
25 | LEAF-1 | - |
26 | LEAF-2 | - |
27 | RDP (Reliable Data Protocol) | RFC 908 |
28 | IRTP (Internet Reliable Transaction) | RFC 938 |
29 | ISO-TP4 (ISO Transport Protocol Class 4) | RFC 905 |
30 | NETBLT (Bulk Data Transfer Protocol) | RFC 969 |
31 | MFE-NSP (MFE Network Services) | - |
32 | MERIT-INP (MERIT Internodal Protocol) | - |
33 | DCCP (Datagram Congestion Control Protocol) | RFC 4340 |
34 | 3PC (Third Party Connect Protocol) | - |
35 | IDPR (Inter-Domain Policy Routing Protocol) | - |
36 | XTP | - |
37 | DDP (Datagram Delivery Protocol) | - |
38 | IDPR-CMTP (IDPR Control Message Transport Protocol) | - |
39 | TP++ Transport Protocol | - |
40 | IL Transport Protocol | - |
41 | IPv6 encapsulation | RFC 2473 |
42 | SDRP (Source Demand Routing Protocol) | - |
43 | Routing Header for IPv6 | RFC 2460 |
44 | Fragment Header for IPv6 | RFC 2460 |
45 | IDRP (Inter-Domain Routing Protocol) | RFC 2205, RFC 3209 |
46 | RSVP (Reservation Protocol) | RFC 2205, RFC 3209 |
47 | GRE (Generic Routing Encapsulation) | RFC 2784 |
48 | DSR (Dynamic Source Routing Protocol) | RFC 4728 |
49 | BNA | - |
50 | ESP (Encap Security Payload) | RFC4303 |
51 | AH (Authentication Header) | RFC4302 |
52 | I-NLSP (Integrated Net Layer Security TUBA) | - |
53 | SWIPE (deprecated) (IP with Encryption) | - |
54 | NARP (NBMA Address Resolution Protocol) | RFC 1735 |
55 | IP Mobility Transport Layer Security | - |
56 | TLSP (Protocol using Kryptonet key management) | - |
57 | SKIP | - |
58 | ICMP for IPv6 | RFC 8200 |
59 | No Next Header for IPv6 | RFC 8200 |
60 | Destination Options for IPv6 | RFC 8200 |
61 | Destination Options for IPv6 any host internal protocol | RFC 8200 |
62 | CFTP | - |
63 | any local network | - |
64 | SAT-EXPAK (SATNET and Backroom EXPAK) | - |
65 | Kryptolan | - |
66 | RVD (MIT Remote Virtual Disk Protocol) | - |
67 | IPPC (Internet Pluribus Packet Core) | - |
68 | any distributed file system | - |
69 | SAT-MON (SATNET Monitoring) | - |
70 | VISA (VISA Protocol) | - |
71 | IPCV (Internet Packet Core Utility) | - |
72 | CPNX (Computer Protocol Network Executive) | - |
73 | CPHB (Computer Protocol Heart Beat) | - |
74 | WSN (Wang Span Network) | - |
75 | PVP (Packet Video Protocol) | - |
76 | BR-SAT-MON (Backroom SATNET Monitoring) | - |
77 | SUN-ND (SUN ND PROTOCOL-Temporary) | - |
78 | WB-MON (WIDEBAND Monitoring) | - |
79 | WB-EXPAK (WIDEBAND EXPAK) | - |
80 | ISO-IP (ISO Internet Protocol) | - |
81 | VMTP | - |
82 | SECURE-VMTP | - |
83 | VINES | - |
84 | TTP (Transaction Transport Protocol) | - |
84 | IPTM (Internet Protocol Traffic Manager) | - |
85 | NSFNET-IGP | - |
86 | DGP (Dissimilar Gateway Protocol) | - |
87 | TCF | - |
88 | EIGRP | RFC 7868 |
89 | OSPFIGP | RFC 1583, RFC 2328, RFC 5340 |
90 | Sprite RPC Protocol | - |
91 | LARP (Locus Address Resolution Protocol) | - |
92 | MTP (ulticast Transport Protocol) | - |
93 | AX.25 Frames | - |
94 | IP-within-IP Encapsulation Protocol | - |
95 | MICP (deprecated) (Mobile Internetworking Control Protocol) | - |
96 | SCC-SP | RFC 3378 |
97 | ETHERIP (Ethernet-within-IP Encapsulation) | - |
98 | ENCAP (Encapsulation Header) | - |
99 | any private encryption scheme | - |
100 | GMTP | - |
101 | IFMP (Ipsilon Flow Management Protocol) | - |
102 | PNNI over IP | - |
103 | PIM (Protocol Independent Multicast) | RFC 7761 |
104 | ARIS | - |
105 | SCPS | - |
106 | QNX | - |
107 | Active Networks | - |
108 | IPComp (IP Payload Compression Protocol) | RFC 2393 |
109 | SNP (Sitara Networks Protocol) | - |
110 | Compaq Peer Protocol | - |
111 | IPX in IP | - |
112 | VRRP (Virtual Router Redundancy Protocol) | - |
113 | PGM (PGM Reliable Transport Protocol) | - |
114 | any 0-hop protocol | - |
115 | L2TP (Layer Two Tunneling Protocol) | - |
116 | DDX (D-II Data Exchange) | - |
117 | IATP (Interactive Agent Transfer Protocol) | - |
118 | STP (Schedule Transfer Protocol) | - |
119 | SRP (SpectraLink Radio Protocol) | - |
120 | UTI | - |
121 | SMP (Simple Message Protocol) | - |
122 | SM (deprecated) (Simple Multicast Protocol) | - |
123 | PTP (Performance Transparency Protocol) | - |
124 | ISIS over IPv4 | - |
125 | FIRE | - |
126 | CRTP (Combat Radio Transport Protocol) | - |
127 | CRUDP (Combat Radio User Datagram) | - |
128 | SSCOPMCE | - |
129 | IPLT | - |
130 | SPS (Secure Packet Shield) | - |
131 | PIPE (Private IP Encapsulation within IP) | - |
132 | Fibre Channel | - |
133 | RSVP-E2E-IGNORE | RFC 3175 |
134 | Mobility Header | RFC 6275 |
135 | Mobility Header | RFC 6275 |
136 | UDPLite | RFC 3828 |
137 | MPLS-in-IP | RFC 4023 |
138 | MANET Protocols | RFC 5498 |
139 | Host Identity Protocol | RFC 7401 |
140 | Shim6 Protocol | RFC 5533 |
141 | WESP (Wrapped Encapsulating Security Payload) | RFC 5840 |
142 | ROHC (Robust Header Compression) | RFC 5858 |
143-252 | Unassigned | - |
253 | Use for experimentation and testing | RFC 3692 |
254 | Use for experimentation and testing | RFC 3692 |
255 | Reserved | - |
tcp
源端口(16bit) | 目的端口(16bit) | |||||||||
序号(32bit) | ||||||||||
确认序号(32bit) | ||||||||||
首部长度(4bit) | 保留(6bit) | U R G | A C K | P S H | R S T | S Y N | F I N | 窗口大小(16bit) | ||
选项 | ||||||||||
数据 |