ip数据包
- IT业界
- 2025-08-13 03:36:02

数据报文格式 首部 版本(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协议列表 HexProtocol NumberKeywordProtocolReferences/RFC0x000HOPOPTIPv6 Hop-by-Hop OptionRFC 82000x011ICMPInternet Control Message ProtocolRFC 7920x022IGMPInternet Group Management ProtocolRFC 11120x033GGPGateway-to-Gateway ProtocolRFC 8230x044IP-in-IPIP in IP (encapsulation)RFC 20030x055STInternet Stream ProtocolRFC 1190, RFC 18190x066TCPTransmission Control ProtocolRFC 7930x077CBTCore-based treesRFC 21890x088EGPExterior Gateway ProtocolRFC 8880x099IGPInterior Gateway Protocol (any private interior gateway, for example Cisco's IGRP)0x0A10BBN-RCC-MONBBN RCC Monitoring0x0B11NVP-IINetwork Voice ProtocolRFC 7410x0C12PUPXerox PUP0x0D13ARGUSARGUS0x0E14EMCONEMCON0x0F15XNETCross Net DebuggerIEN 158[2]0x1016CHAOSChaos0x1117UDPUser Datagram ProtocolRFC 7680x1218MUXMultiplexingIEN 90[3]0x1319DCN-MEASDCN Measurement Subsystems0x1420HMPHost Monitoring ProtocolRFC 8690x1521PRMPacket Radio Measurement0x1622XNS-IDPXEROX NS IDP0x1723TRUNK-1Trunk-10x1824TRUNK-2Trunk-20x1925LEAF-1Leaf-10x1A26LEAF-2Leaf-20x1B27RDPReliable Data ProtocolRFC 9080x1C28IRTPInternet Reliable Transaction ProtocolRFC 9380x1D29ISO-TP4ISO Transport Protocol Class 4RFC 9050x1E30NETBLTBulk Data Transfer ProtocolRFC 9980x1F31MFE-NSPMFE Network Services Protocol0x2032MERIT-INPMERIT Internodal Protocol0x2133DCCPDatagram Congestion Control ProtocolRFC 43400x22343PCThird Party Connect Protocol0x2335IDPRInter-Domain Policy Routing ProtocolRFC 14790x2436XTPXpress Transport Protocol0x2537DDPDatagram Delivery Protocol0x2638IDPR-CMTPIDPR Control Message Transport Protocol0x2739TP++TP++ Transport Protocol0x2840ILIL Transport Protocol0x2941IPv6IPv6 Encapsulation (6to4 and 6in4)RFC 24730x2A42SDRPSource Demand Routing ProtocolRFC 19400x2B43IPv6-RouteRouting Header for IPv6RFC 82000x2C44IPv6-FragFragment Header for IPv6RFC 82000x2D45IDRPInter-Domain Routing Protocol0x2E46RSVPResource Reservation ProtocolRFC 22050x2F47GREGeneric Routing EncapsulationRFC 2784, RFC 28900x3048DSRDynamic Source Routing ProtocolRFC 47280x3149BNABurroughs Network Architecture0x3250ESPEncapsulating Security PayloadRFC 43030x3351AHAuthentication HeaderRFC 43020x3452I-NLSPIntegrated Net Layer Security ProtocolTUBA0x3553SwIPeSwIPeRFC 52370x3654NARPNBMA Address Resolution ProtocolRFC 17350x3755MOBILEIP Mobility (Min Encap)RFC 20040x3856TLSPTransport Layer Security Protocol (using Kryptonet key management)0x3957SKIPSimple Key-Management for Internet ProtocolRFC 23560x3A58IPv6-ICMPICMP for IPv6RFC 4443, RFC 48840x3B59IPv6-NoNxtNo Next Header for IPv6RFC 82000x3C60IPv6-OptsDestination Options for IPv6RFC 82000x3D61Any host internal protocol0x3E62CFTPCFTP0x3F63Any local network0x4064SAT-EXPAKSATNET and Backroom EXPAK0x4165KRYPTOLANKryptolan0x4266RVDMIT Remote Virtual Disk Protocol0x4367IPPCInternet Pluribus Packet Core0x4468Any distributed file system0x4569SAT-MONSATNET Monitoring0x4670VISAVISA Protocol0x4771IPCUInternet Packet Core Utility0x4872CPNXComputer Protocol Network Executive0x4973CPHBComputer Protocol Heart Beat0x4A74WSNWang Span Network0x4B75PVPPacket Video Protocol0x4C76BR-SAT-MONBackroom SATNET Monitoring0x4D77SUN-NDSUN ND PROTOCOL-Temporary0x4E78WB-MONWIDEBAND Monitoring0x4F79WB-EXPAKWIDEBAND EXPAK0x5080ISO-IPInternational Organization for Standardization Internet Protocol0x5181VMTPVersatile Message Transaction ProtocolRFC 10450x5282SECURE-VMTPSecure Versatile Message Transaction ProtocolRFC 10450x5383VINESVINES0x5484TTPTTP (Transaction Transport Protocol) (obsoleted March 2023)0x5484IPTMInternet Protocol Traffic Manager0x5585NSFNET-IGPNSFNET-IGP0x5686DGPDissimilar Gateway Protocol0x5787TCFTCF0x5888EIGRPEIGRPInformational RFC 78680x5989OSPFOpen Shortest Path FirstRFC 23280x5A90Sprite-RPCSprite RPC Protocol0x5B91LARPLocus Address Resolution Protocol0x5C92MTPMulticast Transport Protocol0x5D93AX.25AX.250x5E94OSKA9Q NOS compatible IP over IP tunneling0x5F95MICPMobile Internetworking Control Protocol0x6096SCC-SPSemaphore Communications Sec. Pro0x6197ETHERIPEthernet-within-IP EncapsulationRFC 33780x6298ENCAPEncapsulation HeaderRFC 12410x6399Any private encryption scheme0x64100GMTPGMTP0x65101IFMPIpsilon Flow Management Protocol0x66102PNNIPNNI over IP0x67103PIMProtocol Independent Multicast0x68104ARISIBM's ARIS (Aggregate Route IP Switching) Protocol0x69105SCPSSCPS (Space Communications Protocol Standards)SCPS-TP[4]0x6A106QNXQNX0x6B107A/NActive Networks0x6C108IPCompIP Payload Compression ProtocolRFC 31730x6D109SNPSitara Networks Protocol0x6E110Compaq-PeerCompaq Peer Protocol0x6F111IPX-in-IPIPX in IP0x70112VRRPVirtual Router Redundancy Protocol, Common Address Redundancy Protocol (not IANA assigned)RFC 57980x71113PGMPGM Reliable Transport ProtocolRFC 32080x72114Any 0-hop protocol0x73115L2TPLayer Two Tunneling Protocol Version 3RFC 39310x74116DDXD-II Data Exchange (DDX)0x75117IATPInteractive Agent Transfer Protocol0x76118STPSchedule Transfer Protocol0x77119SRPSpectraLink Radio Protocol0x78120UTIUniversal Transport Interface Protocol0x79121SMPSimple Message Protocol0x7A122SMSimple Multicast Protocoldraft-perlman-simple-multicast-030x7B123PTPPerformance Transparency Protocol0x7C124IS-IS over IPv4Intermediate System to Intermediate System (IS-IS) Protocol over IPv4RFC 1142 and RFC 11950x7D125FIREFlexible Intra-AS Routing Environment0x7E126CRTPCombat Radio Transport Protocol0x7F127CRUDPCombat Radio User Datagram0x80128SSCOPMCEService-Specific Connection-Oriented Protocol in a Multilink and Connectionless EnvironmentITU-T Q.2111 (1999)0x81129IPLT0x82130SPSSecure Packet Shield0x83131PIPEPrivate IP Encapsulation within IPExpired I-D draft-petri-mobileip-pipe-00.txt0x84132SCTPStream Control Transmission ProtocolRFC 49600x85133FCFibre Channel0x86134RSVP-E2E-IGNOREReservation Protocol (RSVP) End-to-End IgnoreRFC 31750x87135Mobility HeaderMobility Extension Header for IPv6RFC 62750x88136UDPLiteLightweight User Datagram ProtocolRFC 38280x89137MPLS-in-IPMultiprotocol Label Switching Encapsulated in IPRFC 4023, RFC 53320x8A138manetMANET ProtocolsRFC 54980x8B139HIPHost Identity ProtocolRFC 52010x8C140Shim6Site Multihoming by IPv6 IntermediationRFC 55330x8D141WESPWrapped Encapsulating Security PayloadRFC 58400x8E142ROHCRobust Header CompressionRFC 58560x8F143EthernetSegment Routing over IPv6RFC 89860x90144AGGFRAGAGGFRAG Encapsulation Payload for ESPRFC 93470x91145NSHNetwork Service Headerdraft-ietf-spring-nsh-sr0x92-0xFC146-252Unassigned0xFD-0xFE253-254Use for experimentation and testingRFC 36920xFF255Reserved