ip数据包

news2024/12/24 2:20:27

数据报文格式

首部

版本(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/RFC
0x000HOPOPTIPv6 Hop-by-Hop OptionRFC 8200
0x011ICMPInternet Control Message ProtocolRFC 792
0x022IGMPInternet Group Management ProtocolRFC 1112
0x033GGPGateway-to-Gateway ProtocolRFC 823
0x044IP-in-IPIP in IP (encapsulation)RFC 2003
0x055STInternet Stream ProtocolRFC 1190, RFC 1819
0x066TCPTransmission Control ProtocolRFC 793
0x077CBTCore-based treesRFC 2189
0x088EGPExterior Gateway ProtocolRFC 888
0x099IGPInterior Gateway Protocol (any private interior gateway, for example Cisco's IGRP)
0x0A10BBN-RCC-MONBBN RCC Monitoring
0x0B11NVP-IINetwork Voice ProtocolRFC 741
0x0C12PUPXerox PUP
0x0D13ARGUSARGUS
0x0E14EMCONEMCON
0x0F15XNETCross Net DebuggerIEN 158[2]
0x1016CHAOSChaos
0x1117UDPUser Datagram ProtocolRFC 768
0x1218MUXMultiplexingIEN 90[3]
0x1319DCN-MEASDCN Measurement Subsystems
0x1420HMPHost Monitoring ProtocolRFC 869
0x1521PRMPacket Radio Measurement
0x1622XNS-IDPXEROX NS IDP
0x1723TRUNK-1Trunk-1
0x1824TRUNK-2Trunk-2
0x1925LEAF-1Leaf-1
0x1A26LEAF-2Leaf-2
0x1B27RDPReliable Data ProtocolRFC 908
0x1C28IRTPInternet Reliable Transaction ProtocolRFC 938
0x1D29ISO-TP4ISO Transport Protocol Class 4RFC 905
0x1E30NETBLTBulk Data Transfer ProtocolRFC 998
0x1F31MFE-NSPMFE Network Services Protocol
0x2032MERIT-INPMERIT Internodal Protocol
0x2133DCCPDatagram Congestion Control ProtocolRFC 4340
0x22343PCThird Party Connect Protocol
0x2335IDPRInter-Domain Policy Routing ProtocolRFC 1479
0x2436XTPXpress Transport Protocol
0x2537DDPDatagram Delivery Protocol
0x2638IDPR-CMTPIDPR Control Message Transport Protocol
0x2739TP++TP++ Transport Protocol
0x2840ILIL Transport Protocol
0x2941IPv6IPv6 Encapsulation (6to4 and 6in4)RFC 2473
0x2A42SDRPSource Demand Routing ProtocolRFC 1940
0x2B43IPv6-RouteRouting Header for IPv6RFC 8200
0x2C44IPv6-FragFragment Header for IPv6RFC 8200
0x2D45IDRPInter-Domain Routing Protocol
0x2E46RSVPResource Reservation ProtocolRFC 2205
0x2F47GREGeneric Routing EncapsulationRFC 2784, RFC 2890
0x3048DSRDynamic Source Routing ProtocolRFC 4728
0x3149BNABurroughs Network Architecture
0x3250ESPEncapsulating Security PayloadRFC 4303
0x3351AHAuthentication HeaderRFC 4302
0x3452I-NLSPIntegrated Net Layer Security ProtocolTUBA
0x3553SwIPeSwIPeRFC 5237
0x3654NARPNBMA Address Resolution ProtocolRFC 1735
0x3755MOBILEIP Mobility (Min Encap)RFC 2004
0x3856TLSPTransport Layer Security Protocol (using Kryptonet key management)
0x3957SKIPSimple Key-Management for Internet ProtocolRFC 2356
0x3A58IPv6-ICMPICMP for IPv6RFC 4443, RFC 4884
0x3B59IPv6-NoNxtNo Next Header for IPv6RFC 8200
0x3C60IPv6-OptsDestination Options for IPv6RFC 8200
0x3D61Any host internal protocol
0x3E62CFTPCFTP
0x3F63Any local network
0x4064SAT-EXPAKSATNET and Backroom EXPAK
0x4165KRYPTOLANKryptolan
0x4266RVDMIT Remote Virtual Disk Protocol
0x4367IPPCInternet Pluribus Packet Core
0x4468Any distributed file system
0x4569SAT-MONSATNET Monitoring
0x4670VISAVISA Protocol
0x4771IPCUInternet Packet Core Utility
0x4872CPNXComputer Protocol Network Executive
0x4973CPHBComputer Protocol Heart Beat
0x4A74WSNWang Span Network
0x4B75PVPPacket Video Protocol
0x4C76BR-SAT-MONBackroom SATNET Monitoring
0x4D77SUN-NDSUN ND PROTOCOL-Temporary
0x4E78WB-MONWIDEBAND Monitoring
0x4F79WB-EXPAKWIDEBAND EXPAK
0x5080ISO-IPInternational Organization for Standardization Internet Protocol
0x5181VMTPVersatile Message Transaction ProtocolRFC 1045
0x5282SECURE-VMTPSecure Versatile Message Transaction ProtocolRFC 1045
0x5383VINESVINES
0x5484TTPTTP (Transaction Transport Protocol) (obsoleted March 2023)
0x5484IPTMInternet Protocol Traffic Manager
0x5585NSFNET-IGPNSFNET-IGP
0x5686DGPDissimilar Gateway Protocol
0x5787TCFTCF
0x5888EIGRPEIGRPInformational RFC 7868
0x5989OSPFOpen Shortest Path FirstRFC 2328
0x5A90Sprite-RPCSprite RPC Protocol
0x5B91LARPLocus Address Resolution Protocol
0x5C92MTPMulticast Transport Protocol
0x5D93AX.25AX.25
0x5E94OSKA9Q NOS compatible IP over IP tunneling
0x5F95MICPMobile Internetworking Control Protocol
0x6096SCC-SPSemaphore Communications Sec. Pro
0x6197ETHERIPEthernet-within-IP EncapsulationRFC 3378
0x6298ENCAPEncapsulation HeaderRFC 1241
0x6399Any private encryption scheme
0x64100GMTPGMTP
0x65101IFMPIpsilon Flow Management Protocol
0x66102PNNIPNNI over IP
0x67103PIMProtocol Independent Multicast
0x68104ARISIBM's ARIS (Aggregate Route IP Switching) Protocol
0x69105SCPSSCPS (Space Communications Protocol Standards)SCPS-TP[4]
0x6A106QNXQNX
0x6B107A/NActive Networks
0x6C108IPCompIP Payload Compression ProtocolRFC 3173
0x6D109SNPSitara Networks Protocol
0x6E110Compaq-PeerCompaq Peer Protocol
0x6F111IPX-in-IPIPX in IP
0x70112VRRPVirtual Router Redundancy Protocol, Common Address Redundancy Protocol (not IANA assigned)RFC 5798
0x71113PGMPGM Reliable Transport ProtocolRFC 3208
0x72114Any 0-hop protocol
0x73115L2TPLayer Two Tunneling Protocol Version 3RFC 3931
0x74116DDXD-II Data Exchange (DDX)
0x75117IATPInteractive Agent Transfer Protocol
0x76118STPSchedule Transfer Protocol
0x77119SRPSpectraLink Radio Protocol
0x78120UTIUniversal Transport Interface Protocol
0x79121SMPSimple Message Protocol
0x7A122SMSimple Multicast Protocoldraft-perlman-simple-multicast-03
0x7B123PTPPerformance Transparency Protocol
0x7C124IS-IS over IPv4Intermediate System to Intermediate System (IS-IS) Protocol over IPv4RFC 1142 and RFC 1195
0x7D125FIREFlexible Intra-AS Routing Environment
0x7E126CRTPCombat Radio Transport Protocol
0x7F127CRUDPCombat Radio User Datagram
0x80128SSCOPMCEService-Specific Connection-Oriented Protocol in a Multilink and Connectionless EnvironmentITU-T Q.2111 (1999)
0x81129IPLT
0x82130SPSSecure Packet Shield
0x83131PIPEPrivate IP Encapsulation within IPExpired I-D draft-petri-mobileip-pipe-00.txt
0x84132SCTPStream Control Transmission ProtocolRFC 4960
0x85133FCFibre Channel
0x86134RSVP-E2E-IGNOREReservation Protocol (RSVP) End-to-End IgnoreRFC 3175
0x87135Mobility HeaderMobility Extension Header for IPv6RFC 6275
0x88136UDPLiteLightweight User Datagram ProtocolRFC 3828
0x89137MPLS-in-IPMultiprotocol Label Switching Encapsulated in IPRFC 4023, RFC 5332
0x8A138manetMANET ProtocolsRFC 5498
0x8B139HIPHost Identity ProtocolRFC 5201
0x8C140Shim6Site Multihoming by IPv6 IntermediationRFC 5533
0x8D141WESPWrapped Encapsulating Security PayloadRFC 5840
0x8E142ROHCRobust Header CompressionRFC 5856
0x8F143EthernetSegment Routing over IPv6RFC 8986
0x90144AGGFRAGAGGFRAG Encapsulation Payload for ESPRFC 9347
0x91145NSHNetwork Service Headerdraft-ietf-spring-nsh-sr
0x92-0xFC146-252Unassigned
0xFD-0xFE253-254Use for experimentation and testingRFC 3692
0xFF255Reserved

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1205731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubutun上编译出现undefined reference to symbol ‘dladdr@@GLIBC_2.2.5‘的错误

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> ubutun上编译一段C程序,出现错误: /usr/bin/ld: /tmp/ccghh3FJ.o: undefined reference to symbol ‘dladdrGLIBC_2.2.5’ //lib/…

前端---CSS的盒模型

文章目录 什么是盒模型?设置边框设置内边距设置外边距块级元素水平居中 什么是盒模型? 页面上的每个HTML元素都是一个一个的“盒子”,这些盒子由:内容、内边距、边框、外边距组成。 我们可以和住的房子联系起来,更好…

HarmonyOS开发(二):TypeScript入门

1、编程语言介绍 ArkTS是HarmonyOS主推的应用开发语言,它是在TypeScript语言的基础之上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 ArkTS、TypeScript和JavaScript之间…

打开 Chrome 的 「内存节省程序」开关和关闭硬件加速

不知道从什么时候开始,应该是最近1个月,感觉 Mac 浏览器总是占用很高的 CPU,多开一些标签页,或者浏览器窗口,相互切换时系统就会变得无响应,从 Chrome 浏览器里找到一个「内存节省程序」的配置,…

数据校验:Spring Validation

Spring Validation概述 在开发中,我们经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式,我们会把校验的代码和真正的业务处理逻辑耦…

二维码智慧门牌管理系统升级解决方案:运营可视化之道

文章目录 前言一、系统概述二、数据可视化与运营决策 前言 随着科技的飞速发展和人们生活水平的提高,传统的门牌管理系统已经无法满足现代社会的需求。在这个信息化、智能化的时代,一款升级版的二维码智慧门牌管理系统应运而生,它将以全新的…

手机能做静态二维码吗?用手机做二维码的教程

现在手机上有很多的功能,能够帮助我们应对日常生活中的各种问题,那么如果我们想要在手机上生成一个静态二维码,大家知道该怎么来操作吗?一般制作二维码需要专业的二维码生成工具才可以完成制作,那么下面小编来给大家分…

properties文件乱码

出现如下乱码: 按照步骤修改编码方式就可以解决啦 修改之后结果就是下面这样~

【LabVIEW学习】1.对labview的初步使用,控制数据流动

一。初步使用labview 1.程序图标 2.打开之后继续点击新建VI 原因:最后的程序后缀就是 .vi 3.新建之后,会有三个界面(没有不要紧,找找肯定有) 4.程序操作方法 1.拖动控件到前面板 2.此时程序框图会出现对应的控件 拖动…

利用Python群组分析方法剖析客户行为

大家好,如今的企业有能力收集大量的数据,这些数据可以帮助企业制定更好的策略并了解其客户的行为。Cohort分析可以在其中发挥作用,Cohort分析是一种了解客户行为或用户互动的强大工具,并为企业提供有价值的见解,本文中…

优雅的Java编程:将接口对象作为方法参数

theme: smartblue 目录 概述 在Java编程中,方法的参数传递方式通常是通过基本类型、对象引用或者集合等方式。然而,一种更加优雅且灵活的设计模式是将接口对象作为方法的参数。这种方式为我们带来了许多好处,包括降低耦合性、实现多态性和可…

微信小程序display常用属性和子元素排列方式介绍

wxss中display常用显示属性与css一致,介绍如下: 针对元素本身显示的属性: displayblock,元素显示换行displayinline,元素显示换行,但不可设置固定的宽度和高度,也不可设置上下方向的margin和p…

postgreSQL中的高速缓存

1. 高速缓存简介 ​如下图所示,当一个postgreSQL进程读取一个元组时,需要获取表的基本信息(例如:表的oid、索引信息和统计信息等)及元组的模式信息,这些信息被分别记录在多个系统表中。通常一个表的模式信…

2019年12月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 下列关于舞台的描述,不正确的是? A:Scratch只能设置一个舞台 B:舞台不能进行编程 C:舞台可以有多个背景 D:舞台上可以有角色 答案:B A选项,scratch只有一个舞台,B选项,可以在舞台区进行编程,例如切换背景,设置背景…

[pytorch]设备选择以及卷积神经网络的应用

0.写在前面: 首先这篇文章还没写完,因为今天要尝试对我之前的一个框架做一个简单的更新迭代,所以目前先更新这么多. 1.关于设备的选择 首先,目前的大多数电脑都是自带一些GPU(图形计算单元,在这里被称之为cuda), 需要安装相关的驱动才能正常使用这些设备和调用他们的具体情况…

在Vue.js中,什么是Vuex?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Model Inspector—软件模型静态规范检查工具

产品概述 Model Inspector(MI)原厂商是韩国Suresoft,是KOLAS国际公认测评机构,旨在提升安全关键领域软件可信度。MI用于开发过程中模型的静态检查,包括规范检查、复杂度度量,提供MAAB、HIS、CG、MISRA_AC_…

C++模拟实现——AVL树

AVL树 1.介绍 AVL树是对搜索二叉树的改进,通过特定的方法使得每个节点的左右子树高度差绝对值不超过1,使得避免出现歪脖子的情况,最核心的实现在于插入值部分是如何去实现平衡调整的,由于前面详细实现和解析过搜索二叉树&#x…

算法笔记-贪心1

算法笔记-贪心 什么是贪心算法分配饼干例题理解二分割字符串最优装箱整数配对最大组合整数分配区间问题买股票的最佳时机区间选点 问题什么是贪心算法 分配饼干例题 //贪心算法 //保证局部最优,从而使最后得到的结果是全局最优的 #include<iostream> #include<a…

No199.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…