ip数据包

数据报文格式

首部

ip数据包_第1张图片

版本(Version)

版本字段占4bit,通信双方使用的版本必须一致。对于IPv4,字段的值是4。

首部长度(Internet Header Length, IHL)

占4bit,首部长度说明首部有多少32位字(4字节)。由于IPv4首部可能包含数目不定的选项,这个字段也用来确定数据的偏移量。这个字段的最小值是5(二进制0101),相当于5*4=20字节,最大十进制值是15。

区分服务(Differentiated Services,DS)

​占6bit,最初被定义为服务类型字段,实际上并未使用,但1998年被IETF重定义为区分服务RFC 2474。只有在使用区分服务时,这个字段才起作用,在一般的情况  下都不使用这个字段。例如需要实时数据流的技术会应用这个字段,一个例子是VoIP。

显式拥塞通告( Explicit Congestion Notification,ECN)

在RFC 3168中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。ECN是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。

全长(Total Length)

​这个16位字段定义了报文总长,包含首部和数据,单位为字节。这个字段的最小值是20(20字节首部+0字节数据),最大值是216-1=65,535。IP规定所有主机都必须支持最小576字节的报文,这是假定上层数据长度512字节,加上最长IP首部60字节,加上4字节富裕量,得出576字节,但大多数现代主机支持更大的报文。当下层的数据链路协议的最大传输单元(MTU)字段的值小于IP报文长度时,报文就必须被分片,详细见下个标题。

标识符(Identification)

占16位,这个字段主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加1,并赋值给此字段。一些实验性的工作建议将此字段用于其它目的,例如增加报文跟踪信息以协助探测伪造的源地址。

标志 (Flags)

这个3位字段用于控制和识别分片,它们是:

  • 位0:保留,必须为0;
  • 位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
  • 位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。

如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。

当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。

分片偏移 (Fragment Offset)

这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。

存活时间(Time To Live,TTL)

​这个8位字段避免报文在互联网中永远存在(例如陷入路由环路)。存活时间以秒为单位,但小于一秒的时间均向上取整到一秒。在现实中,这实际上成了一个跳数计数器:报文经过的每个路由器都将此字段减1,当此字段等于0时,报文不再向下一跳传送并被丢弃,最大值是255。常规地,一份ICMP报文被发回报文发送端说明其发送的报文已被丢弃。这也是traceroute的核心原理。

协议 (Protocol)

占8bit,这个字段定义了该报文数据区使用的协议。IANA维护着一份协议列表。

首部检验和 (Header Checksum)

​这个16位检验和字段只对首部查错,不包括数据部分。在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——用户数据报协议(UDP)和传输控制协议(TCP)都有检验和字段。此处的检验计算方法不使用CRC。

源地址(Source address)

一个IPv4地址由四个字节共32位构成,此字段的值是将每个字节转为二进制并拼在一起所得到的32位值。

例如,10.9.8.7是00001010000010010000100000000111。

但请注意,因为NAT的存在,这个地址并不总是报文的真实发送端,因此发往此地址的报文会被送往NAT设备,并由它被翻译为真实的地址。

目的地址(Destination address)

与源地址格式相同,但指出报文的接收端。

选项(Options)

附加的首部字段可能跟在目的地址之后,但这并不被经常使用,从1到40个字节不等。请注意首部长度字段必须包括足够的32位字来放下所有的选项(包括任何必须的填充以使首部长度能够被32位整除)。当选项列表的结尾不是首部的结尾时,EOL(选项列表结束,0x00)选项被插入列表末尾。下表列出了可能

字段 长度(位) 描述
备份 1 当此选项需要被备份到所有分片中时,设为1。
2 常规的选项类别,0为“控制”,2为“查错和措施”,1和3保留。
数字 5 指明一个选项。
长度 8 指明整个选项的长度,对于简单的选项此字段可能不存在。
数据 可变 选项相关数据,对于简单的选项此字段可能不存在。
  • 注:如果首部长度大于5,那么选项字段必然存在并必须被考虑。
  • 注:备份、类和数字经常被一并称呼为“类型”。

宽松的源站选路(LSRR)和严格的源站选路(SSRR)选项不被推荐使用,因其可能带来安全问题。许多路由器会拒绝带有这些选项的报文。

数据

数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的
传输层协议。

ip协议列表

Hex Protocol Number Keyword Protocol References/RFC
0x00 0 HOPOPT IPv6 Hop-by-Hop Option RFC 8200
0x01 1 ICMP Internet Control Message Protocol RFC 792
0x02 2 IGMP Internet Group Management Protocol RFC 1112
0x03 3 GGP Gateway-to-Gateway Protocol RFC 823
0x04 4 IP-in-IP IP in IP (encapsulation) RFC 2003
0x05 5 ST Internet Stream Protocol RFC 1190, RFC 1819
0x06 6 TCP Transmission Control Protocol RFC 793
0x07 7 CBT Core-based trees RFC 2189
0x08 8 EGP Exterior Gateway Protocol RFC 888
0x09 9 IGP Interior Gateway Protocol (any private interior gateway, for example Cisco's IGRP)
0x0A 10 BBN-RCC-MON BBN RCC Monitoring
0x0B 11 NVP-II Network Voice Protocol RFC 741
0x0C 12 PUP Xerox PUP
0x0D 13 ARGUS ARGUS
0x0E 14 EMCON EMCON
0x0F 15 XNET Cross Net Debugger IEN 158[2]
0x10 16 CHAOS Chaos
0x11 17 UDP User Datagram Protocol RFC 768
0x12 18 MUX Multiplexing IEN 90[3]
0x13 19 DCN-MEAS DCN Measurement Subsystems
0x14 20 HMP Host Monitoring Protocol RFC 869
0x15 21 PRM Packet Radio Measurement
0x16 22 XNS-IDP XEROX NS IDP
0x17 23 TRUNK-1 Trunk-1
0x18 24 TRUNK-2 Trunk-2
0x19 25 LEAF-1 Leaf-1
0x1A 26 LEAF-2 Leaf-2
0x1B 27 RDP Reliable Data Protocol RFC 908
0x1C 28 IRTP Internet Reliable Transaction Protocol RFC 938
0x1D 29 ISO-TP4 ISO Transport Protocol Class 4 RFC 905
0x1E 30 NETBLT Bulk Data Transfer Protocol RFC 998
0x1F 31 MFE-NSP MFE Network Services Protocol
0x20 32 MERIT-INP MERIT Internodal Protocol
0x21 33 DCCP Datagram Congestion Control Protocol RFC 4340
0x22 34 3PC Third Party Connect Protocol
0x23 35 IDPR Inter-Domain Policy Routing Protocol RFC 1479
0x24 36 XTP Xpress Transport Protocol
0x25 37 DDP Datagram Delivery Protocol
0x26 38 IDPR-CMTP IDPR Control Message Transport Protocol
0x27 39 TP++ TP++ Transport Protocol
0x28 40 IL IL Transport Protocol
0x29 41 IPv6 IPv6 Encapsulation (6to4 and 6in4) RFC 2473
0x2A 42 SDRP Source Demand Routing Protocol RFC 1940
0x2B 43 IPv6-Route Routing Header for IPv6 RFC 8200
0x2C 44 IPv6-Frag Fragment Header for IPv6 RFC 8200
0x2D 45 IDRP Inter-Domain Routing Protocol
0x2E 46 RSVP Resource Reservation Protocol RFC 2205
0x2F 47 GRE Generic Routing Encapsulation RFC 2784, RFC 2890
0x30 48 DSR Dynamic Source Routing Protocol RFC 4728
0x31 49 BNA Burroughs Network Architecture
0x32 50 ESP Encapsulating Security Payload RFC 4303
0x33 51 AH Authentication Header RFC 4302
0x34 52 I-NLSP Integrated Net Layer Security Protocol TUBA
0x35 53 SwIPe SwIPe RFC 5237
0x36 54 NARP NBMA Address Resolution Protocol RFC 1735
0x37 55 MOBILE IP Mobility (Min Encap) RFC 2004
0x38 56 TLSP Transport Layer Security Protocol (using Kryptonet key management)
0x39 57 SKIP Simple Key-Management for Internet Protocol RFC 2356
0x3A 58 IPv6-ICMP ICMP for IPv6 RFC 4443, RFC 4884
0x3B 59 IPv6-NoNxt No Next Header for IPv6 RFC 8200
0x3C 60 IPv6-Opts Destination Options for IPv6 RFC 8200
0x3D 61 Any host internal protocol
0x3E 62 CFTP CFTP
0x3F 63 Any local network
0x40 64 SAT-EXPAK SATNET and Backroom EXPAK
0x41 65 KRYPTOLAN Kryptolan
0x42 66 RVD MIT Remote Virtual Disk Protocol
0x43 67 IPPC Internet Pluribus Packet Core
0x44 68 Any distributed file system
0x45 69 SAT-MON SATNET Monitoring
0x46 70 VISA VISA Protocol
0x47 71 IPCU Internet Packet Core Utility
0x48 72 CPNX Computer Protocol Network Executive
0x49 73 CPHB Computer Protocol Heart Beat
0x4A 74 WSN Wang Span Network
0x4B 75 PVP Packet Video Protocol
0x4C 76 BR-SAT-MON Backroom SATNET Monitoring
0x4D 77 SUN-ND SUN ND PROTOCOL-Temporary
0x4E 78 WB-MON WIDEBAND Monitoring
0x4F 79 WB-EXPAK WIDEBAND EXPAK
0x50 80 ISO-IP International Organization for Standardization Internet Protocol
0x51 81 VMTP Versatile Message Transaction Protocol RFC 1045
0x52 82 SECURE-VMTP Secure Versatile Message Transaction Protocol RFC 1045
0x53 83 VINES VINES
0x54 84 TTP TTP (Transaction Transport Protocol) (obsoleted March 2023)
0x54 84 IPTM Internet Protocol Traffic Manager
0x55 85 NSFNET-IGP NSFNET-IGP
0x56 86 DGP Dissimilar Gateway Protocol
0x57 87 TCF TCF
0x58 88 EIGRP EIGRP Informational RFC 7868
0x59 89 OSPF Open Shortest Path First RFC 2328
0x5A 90 Sprite-RPC Sprite RPC Protocol
0x5B 91 LARP Locus Address Resolution Protocol
0x5C 92 MTP Multicast Transport Protocol
0x5D 93 AX.25 AX.25
0x5E 94 OS KA9Q NOS compatible IP over IP tunneling
0x5F 95 MICP Mobile Internetworking Control Protocol
0x60 96 SCC-SP Semaphore Communications Sec. Pro
0x61 97 ETHERIP Ethernet-within-IP Encapsulation RFC 3378
0x62 98 ENCAP Encapsulation Header RFC 1241
0x63 99 Any private encryption scheme
0x64 100 GMTP GMTP
0x65 101 IFMP Ipsilon Flow Management Protocol
0x66 102 PNNI PNNI over IP
0x67 103 PIM Protocol Independent Multicast
0x68 104 ARIS IBM's ARIS (Aggregate Route IP Switching) Protocol
0x69 105 SCPS SCPS (Space Communications Protocol Standards) SCPS-TP[4]
0x6A 106 QNX QNX
0x6B 107 A/N Active Networks
0x6C 108 IPComp IP Payload Compression Protocol RFC 3173
0x6D 109 SNP Sitara Networks Protocol
0x6E 110 Compaq-Peer Compaq Peer Protocol
0x6F 111 IPX-in-IP IPX in IP
0x70 112 VRRP Virtual Router Redundancy Protocol, Common Address Redundancy Protocol (not IANA assigned) RFC 5798
0x71 113 PGM PGM Reliable Transport Protocol RFC 3208
0x72 114 Any 0-hop protocol
0x73 115 L2TP Layer Two Tunneling Protocol Version 3 RFC 3931
0x74 116 DDX D-II Data Exchange (DDX)
0x75 117 IATP Interactive Agent Transfer Protocol
0x76 118 STP Schedule Transfer Protocol
0x77 119 SRP SpectraLink Radio Protocol
0x78 120 UTI Universal Transport Interface Protocol
0x79 121 SMP Simple Message Protocol
0x7A 122 SM Simple Multicast Protocol draft-perlman-simple-multicast-03
0x7B 123 PTP Performance Transparency Protocol
0x7C 124 IS-IS over IPv4 Intermediate System to Intermediate System (IS-IS) Protocol over IPv4 RFC 1142 and RFC 1195
0x7D 125 FIRE Flexible Intra-AS Routing Environment
0x7E 126 CRTP Combat Radio Transport Protocol
0x7F 127 CRUDP Combat Radio User Datagram
0x80 128 SSCOPMCE Service-Specific Connection-Oriented Protocol in a Multilink and Connectionless Environment ITU-T Q.2111 (1999)
0x81 129 IPLT
0x82 130 SPS Secure Packet Shield
0x83 131 PIPE Private IP Encapsulation within IP Expired I-D draft-petri-mobileip-pipe-00.txt
0x84 132 SCTP Stream Control Transmission Protocol RFC 4960
0x85 133 FC Fibre Channel
0x86 134 RSVP-E2E-IGNORE Reservation Protocol (RSVP) End-to-End Ignore RFC 3175
0x87 135 Mobility Header Mobility Extension Header for IPv6 RFC 6275
0x88 136 UDPLite Lightweight User Datagram Protocol RFC 3828
0x89 137 MPLS-in-IP Multiprotocol Label Switching Encapsulated in IP RFC 4023, RFC 5332
0x8A 138 manet MANET Protocols RFC 5498
0x8B 139 HIP Host Identity Protocol RFC 5201
0x8C 140 Shim6 Site Multihoming by IPv6 Intermediation RFC 5533
0x8D 141 WESP Wrapped Encapsulating Security Payload RFC 5840
0x8E 142 ROHC Robust Header Compression RFC 5856
0x8F 143 Ethernet Segment Routing over IPv6 RFC 8986
0x90 144 AGGFRAG AGGFRAG Encapsulation Payload for ESP RFC 9347
0x91 145 NSH Network Service Header draft-ietf-spring-nsh-sr
0x92-0xFC 146-252 Unassigned
0xFD-0xFE 253-254 Use for experimentation and testing RFC 3692
0xFF 255 Reserved

你可能感兴趣的:(计算机网络,tcp/ip,网络,计算机网络,网络协议)