tcp/ip

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比特

  • 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比特

标志位:

图3-77 IP Flag字段格式
           0     1      2
        +-----+------+------+
        |  0  |  DF  |  MF  |
        +-----+------+------+
  • Bit 0: 保留位,必须为0。
  • Bit 1: DF(Don't Fragment),能否分片位,0表示可以分片,1表示不能分片。
  • Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。

Fragment Offset

13比特

片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。

Time to Live

8比特

生存时间:可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。

Protocol

8比特

协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。

常见值:

  • 0: 保留
  • 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

可变

选项字段,用来支持排错,测量以及安全等措施,内容丰富(请参见表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
  • 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个字节,操作限制域。
  • TCC:占3个字节,传输控制码。提供一种传输隔离的手段,该值为3字母词,可用值从HQ DCA Code 530。

0

3

可变

松散的源站选路(为数据报指定一系列必须经过的IP地址)

选项格式如下:

        +--------+--------+--------+---------//--------+
        |10000011| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
         Type=131
  • Type: 类型。占1字节,此处设为131。
  • length: 占1字节,记录整个选项的长度。
  • pointer: 指针项,占1个字节,指向下一个被处理的源站地址,最小值为4。
  • route data: 路由数据。

0

7

可变

记录路径(让每个路由器都记下它的IP地址)。

选项格式如下:

        +--------+--------+--------+---------//--------+
        |00000111| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
          Type=7
  • 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流标识符通过不支持流方式的网络。

选项格式如下:

        +--------+--------+--------+--------+
        |10001000|00000010|    Stream ID    |
        +--------+--------+--------+--------+
         Type=136 Length=4

0

9

可变

严格的源站选路选项。与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址。

选项格式如下:

        +--------+--------+--------+---------//--------+
        |10001001| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
         Type=137
  • Type=137(10001001):占1字节,code 的值此处设为137。
  • length:占1字节,记录整个选项的长度。
  • pointer:指针项,占1个字节,指向下一个被处理的源站地址,最小值为4。

2

4

可变

时间戳选项。

选项格式如下:

        +--------+--------+--------+--------+
        |01000100| length | pointer|oflw|flg|
        +--------+--------+--------+--------+
        |         internet address          |
        +--------+--------+--------+--------+
        |             timestamp             |
        +--------+--------+--------+--------+
        |                 .                 |
                          .
                          .
        Type = 68
  • Type (01000100):时间戳选项,代码为68;
  • length:选项的总长度(一般为36或40);
  • ponter:指向下一个可用空间的指针(5,9,13等);
  • oflw:表示溢出字段;
  • flg:表示标志字段:
    • 0:只记录时间戳。
    • 1:每台路由器都记录它的IP地址和时间戳。在选项列表中只有存放4对地址和时间戳的空间。
    • 3:发送端对选项列表进行初始化,存放了4个IP地址和4个取值为0的时间戳值。只有当列表中的下一个IP地址与当前路由器地址相匹配时,才记录它的时间戳。

 IPV6报文格式

IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation),它是Internet工程任务组(IETF)设计的一套规范,是IPv4 [RFC 791]的升级版本。

报文格式

图3-79 IPv6报文头格式

    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                        |
   +                         ... ...                               +

表3-8 IPv6头字段解释

字段长度含义
Version4比特
  • 4:表示为IPv4;
  • 6:表示为IPv6。
Traffic class8比特流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。
Flow Label20比特流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。
Payload length16比特该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。
Next header8比特下一报头,该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。
Hop limit8比特跳数限制,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。
Source Address128比特该字段表示该报文的源地址。
Destination Address128比特该字段表示该报文的目的地址。
Extension Headers可变扩展报头。IPv6取消了IPv4报头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:
  • IPv6基本报头
  • 逐跳选项扩展报头(值为0,在IPv6基本报头中定义)
  • 目的选项扩展报头(值为60,指那些将被分组报文的最终目的地处理的选项)
  • 路由扩展报头(值为43,用于源路由选项和Mobile IPv6)
  • 分片扩展报头(值为44,在源节点发送的报文超过Path MTU时对报文分片时使用)
  • 授权扩展报头(值为51,用于IPSec,提供报文验证、完整性检查。定义和IPv4中相同)
  • 封装安全有效载荷扩展报头(值为50,用于IPSec,提供报文验证、完整性检查和加密。定义和IPv4中相同)
  • 上层扩展报头(如TCP/UDP/ICMP等),详细请参见表2。

不是所有的扩展报头都需要被转发路由设备查看和处理的。路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头。

除了目的选项扩展报头出现两次(一次在路由扩展报头之前,另一次在上层扩展报头之前),其余扩展报头只出现一次。

表3-9 IPv6扩展头协议号及其含义对应表

扩展头协议号含义相关标准
0IPv6 Hop-by-Hop OptionRFC 8200
1ICMPRFC 792
2IGMPRFC 1112
3GGP (Gateway-to-Gateway)RFC 823
4IPv4 encapsulationRFC 2003
5StreamRFC 1190, RFC 1819
6TCPRFC 793
7CBT-
8EGP (Exterior Gateway Protocol)RFC 888
9IGP-
10BBN RCC Monitoring-
11Network Voice ProtocolRFC 741
12PUP-
13ARGUS (deprecated)-
14EMCON-
15XNET (Cross Net Debugger)-
16CHAOS-
17UDPRFC 768
18MUX-
19DCN-MEAS (DCN Measurement Subsystems)-
20HMP (Host Monitoring)RFC 869
21PRM (Packet Radio Measurement)-
22XNS-IDP-
23TRUNK-1-
24TRUNK-2-
25LEAF-1-
26LEAF-2-
27RDP (Reliable Data Protocol)RFC 908
28IRTP (Internet Reliable Transaction)RFC 938
29ISO-TP4 (ISO Transport Protocol Class 4)RFC 905
30NETBLT (Bulk Data Transfer Protocol)RFC 969
31MFE-NSP (MFE Network Services)-
32MERIT-INP (MERIT Internodal Protocol)-
33DCCP (Datagram Congestion Control Protocol)RFC 4340
343PC (Third Party Connect Protocol)-
35IDPR (Inter-Domain Policy Routing Protocol)-
36XTP-
37DDP (Datagram Delivery Protocol)-
38IDPR-CMTP (IDPR Control Message Transport Protocol)-
39TP++ Transport Protocol-
40IL Transport Protocol-
41IPv6 encapsulationRFC 2473
42SDRP (Source Demand Routing Protocol)-
43Routing Header for IPv6RFC 2460
44Fragment Header for IPv6RFC 2460
45IDRP (Inter-Domain Routing Protocol)RFC 2205, RFC 3209
46RSVP (Reservation Protocol)RFC 2205, RFC 3209
47GRE (Generic Routing Encapsulation)RFC 2784
48DSR (Dynamic Source Routing Protocol)RFC 4728
49BNA-
50ESP (Encap Security Payload)RFC4303
51AH (Authentication Header)RFC4302
52I-NLSP (Integrated Net Layer Security TUBA)-
53SWIPE (deprecated) (IP with Encryption)-
54NARP (NBMA Address Resolution Protocol)RFC 1735
55IP Mobility Transport Layer Security-
56TLSP (Protocol using Kryptonet key management)-
57SKIP-
58ICMP for IPv6RFC 8200
59No Next Header for IPv6RFC 8200
60Destination Options for IPv6RFC 8200
61Destination Options for IPv6 any host internal protocolRFC 8200
62CFTP-
63any local network-
64SAT-EXPAK (SATNET and Backroom EXPAK)-
65Kryptolan-
66RVD (MIT Remote Virtual Disk Protocol)-
67IPPC (Internet Pluribus Packet Core)-
68any distributed file system-
69SAT-MON (SATNET Monitoring)-
70VISA (VISA Protocol)-
71IPCV (Internet Packet Core Utility)-
72CPNX (Computer Protocol Network Executive)-
73CPHB (Computer Protocol Heart Beat)-
74WSN (Wang Span Network)-
75PVP (Packet Video Protocol)-
76BR-SAT-MON (Backroom SATNET Monitoring)-
77SUN-ND (SUN ND PROTOCOL-Temporary)-
78WB-MON (WIDEBAND Monitoring)-
79WB-EXPAK (WIDEBAND EXPAK)-
80ISO-IP (ISO Internet Protocol)-
81VMTP-
82SECURE-VMTP-
83VINES-
84TTP (Transaction Transport Protocol)-
84IPTM (Internet Protocol Traffic Manager)-
85NSFNET-IGP-
86DGP (Dissimilar Gateway Protocol)-
87TCF-
88EIGRPRFC 7868
89OSPFIGPRFC 1583, RFC 2328, RFC 5340
90Sprite RPC Protocol-
91LARP (Locus Address Resolution Protocol)-
92MTP (ulticast Transport Protocol)-
93AX.25 Frames-
94IP-within-IP Encapsulation Protocol-
95MICP (deprecated) (Mobile Internetworking Control Protocol)-
96SCC-SPRFC 3378
97ETHERIP (Ethernet-within-IP Encapsulation)-
98ENCAP (Encapsulation Header)-
99any private encryption scheme-
100GMTP-
101IFMP (Ipsilon Flow Management Protocol)-
102PNNI over IP-
103PIM (Protocol Independent Multicast)RFC 7761
104ARIS-
105SCPS-
106QNX-
107Active Networks-
108IPComp (IP Payload Compression Protocol)RFC 2393
109SNP (Sitara Networks Protocol)-
110Compaq Peer Protocol-
111IPX in IP-
112VRRP (Virtual Router Redundancy Protocol)-
113PGM (PGM Reliable Transport Protocol)-
114any 0-hop protocol-
115L2TP (Layer Two Tunneling Protocol)-
116DDX (D-II Data Exchange)-
117IATP (Interactive Agent Transfer Protocol)-
118STP (Schedule Transfer Protocol)-
119SRP (SpectraLink Radio Protocol)-
120UTI-
121SMP (Simple Message Protocol)-
122SM (deprecated) (Simple Multicast Protocol)-
123PTP (Performance Transparency Protocol)-
124ISIS over IPv4-
125FIRE-
126CRTP (Combat Radio Transport Protocol)-
127CRUDP (Combat Radio User Datagram)-
128SSCOPMCE-
129IPLT-
130SPS (Secure Packet Shield)-
131PIPE (Private IP Encapsulation within IP)-
132Fibre Channel-
133RSVP-E2E-IGNORERFC 3175
134Mobility HeaderRFC 6275
135Mobility HeaderRFC 6275
136UDPLiteRFC 3828
137MPLS-in-IPRFC 4023
138MANET ProtocolsRFC 5498
139Host Identity ProtocolRFC 7401
140Shim6 ProtocolRFC 5533
141WESP (Wrapped Encapsulating Security Payload)RFC 5840
142ROHC (Robust Header Compression)RFC 5858
143-252Unassigned-
253Use for experimentation and testingRFC 3692
254Use for experimentation and testingRFC 3692
255Reserved-

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)
选项
数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值