IP头部结构
RFC 751定义了因特网协议,IP是一个无连接的协议,这意味着它将每个IP分组都看成是与其他IP分组无关的独立数据单元。IP不具备通常为了确保数据的认证机制,如果再分组转发过程中发生错误,IP不会启动任何动作来更正这个错误。分组头部的字段和为之服务的协议功能的复杂度之间存在着直接的联系,头部越简单,相应的协议越简单。
IP头部由头部和数据段组成
头部包含有下列字段:版本(version),该字段占用4位以申明IP版本。目前广泛使用的是IPv4,然而新版本的IPv6正在逐渐的被更多的使用。
头部长度(header length)
IP分组的头部长度占用4位,他使用32位字度量头部长度,通常,头部由20个字节长(5个32位字),然而,如果增加了控制信息,那么通过附加IP可选字段,长度会进一步增加。头部的最大长度为60字节。
服务类型(Tos)(Type Of Service)
或者称呼它的新名字---区别服务字节(differrntiated service byte)(DS 字节)。该字段占用1个字节,与之对应的两个变量:Tos(以前名称)和DS字节(新名称),不管哪种情况,这个字段用来存储反映分组Qos需求的参数。
在Tos中,这个字段被分为两个子字段,其实的3位组成优先权子字段,优先权可取值0(普通分组)到7(控制信息分组)。路由器和计算机会考虑分组的优先权从而优先处理最高优先级的分组。Tos字段还包括3位用来判断路由选择策略(route selection criterion),有三个选项:低延迟、高可靠性或高吞吐量。如果delay(D)位设为1,那么在传送这个分组时路由应该选择将延时最小化。吞吐量(T)位会最大化吞吐量,可靠性(R)位会最大化可靠性。剩余2位是保留为,通常设为0. DS字节只使用该字节的高6位,保留低2位。
总长度(total length)
这个字段占用2个字节,申明分组的总长度,包括头部和数据段。分组最大长度受限于该字段的长度,即65535个字节。然而,多数网络并不适用如此长的分组。以太网帧最大分组长度为1500字节,TCP/IP标准确保所有主机有能力接受576个字节长的分组(无论他们是否分片)。
标识符(identification)
这个字段占用2个字节,用来识别源分组分片所创建的分组,同一个分组的各个分片必须具有形同的标识符值。
标志(flags)
标志占用3位,包含与分片相关的属性。将部分片(do not fragment,DF)位设为1提示路由器不要将此分组分片。但若多片(more fragment,MF)位被设置为1,就意味着此分组被分片且不是最后一片。剩余位属于保留位。
分片偏移量(fragment offset)
该字段占用13位,申明该分组中数据区域相对于分片源分子的数据起点的偏移量,它用于组装或重新组装分组时用,偏移量必须为8的倍数。
剩余生存时间(time to live)TTL
该字段占用1字节,用于指明分组在网络上传输的最大时间间隔,TTL以秒为单位,由发送端指定。分组的当前TTL随着它花费在网络传输中途径的每个路由器上的每一秒递减一。即使路由器处理分组的时间不足一秒,还是必须将TTL计数器减一。因为如今的路由器处理分组极少花费多于1秒的时间。TTL可以被解释分组路过的转换节点数。如果TTL值在到达目的地之前将为0,则丢弃该分组。因此TTL参数是分组的一种“自我破坏”的计时器。
协议(protocol)
该字段占用1字节,包括了数据字段中的信息所要传递的高一层协议的标识符。不同协议的标识符在“分配号码”RFC 1340中列出。序列号16代表TPC分组消息,17代表UDP,1代表ICMP。
头部校验和(header checksum)
这个字段占用2个字节,只计算头部的校验和。因为有些头部字段在网络传输过程中会改变(如 TTL),必须检查校验和并在每个路由器和终端节点上重新计算。校验和---16位---计算头部中所有16位字和的补码。在计算校验和时,头部校验和字段被设为零。如果校验和不正确,将会报告错误,那么该分组在错误被发现的同时被丢弃。
源IP地址(Source IP Address)和目的IP地址(Destination IP Address)
这两个字段长度相同--32位。
IP选项(IP Optitions)
这个字段是可选的。原则上是在网络纠错时才使用。该字段包含好多个子字段,每个具有八个预设类型。在这些字段中,可以指定途径路由器的准备路由,注册分组路过的路由器,存储安全系统数据或保存时间戳。
填充(padding)
既然IP选项字段的子字段数是任意的,但有必要在分组头部的最后增加几个字节以将分组对齐到32位边界。这个字段都用0来填充。
相关推荐
IP头部结构是网络层协议IP(Internet Protocol)的核心组成部分,主要负责在网络中定位和传输数据。IP协议的主要任务是确定设备的位置,即IP地址,并为传输层协议如TCP(Transmission Control Protocol)和UDP(User...
最后,将 IP 包头部复制到定义的 IP 头部结构中,并且依次将那些需要解析的字段值取出。 知识点: * IP 协议 * IP 数据包结构 * 原始套接字 * socket 函数 * bind 函数 * setsockopt 函数 * ioctlsocket 函数 * ...
#### 一、IP头部结构详解 在TCP/IP模型中,IP数据包是互联网通信的基本单位。IP头部作为数据包的重要组成部分,负责携带必要的控制信息,确保数据能准确无误地从源主机传送到目的主机。下面详细介绍IP头部各个字段...
这通常涉及到对IP头部结构的了解,以及可能的TCP或UDP头部解析。`libpcap`库也提供了辅助函数来帮助解析这些头部信息。 4. **流量统计**:根据解析出的信息,你可以计算每IP地址的发送和接收字节数,或者按协议类型...
IP头部结构包括版本号、头部长度、服务类型、总长度、标识、标志、片偏移、生命周期、协议、头部校验和、源IP地址、目的IP地址等字段。 TCP协议与IP协议的关系 TCP协议和IP协议是OSI七层模型中的传输层和网络层...
4. **定义数据结构**:为了解析IP数据包,需要定义与IP头部结构对应的C语言结构体,包含版本号、头部长度、服务类型(TOS)、总长度、标识符、标志、片段偏移、生存时间(TTL)、协议、头部校验和、源IP和目的IP等字段。...
IP头部结构是IP协议的核心,包含了版本(定义IP协议的版本,如IPv4或IPv6)、头长度、服务类型、总长度、标识符、标志、片断偏移、存活时间(TTL,用于防止数据包无限循环)、协议(定义上层协议,如TCP、UDP、ICMP...
在本例中,使用结构体来定义IP头部结构,包括版本号、服务类型、总长度、标识、标志+片偏移、生存时间、协议等字段。 6. 链表编程:链表编程是指使用链表来存储和管理数据。在本例中,使用链表来存储IP结点,每个IP...
在给定的“IP数据包解析代码参考.pdf”中,主要涉及的是IP数据包的解析过程,包括IP头部结构的定义、校验和计算以及服务类型和服务优先级的解析。以下是对这些知识点的详细说明: 1. **IP头部结构**: IP数据包的...
2. IP协议解析:理解IP头部结构,包括版本、服务类型、总长度、标识符、标志、片偏移、生存时间、协议、头部校验和、源IP和目标IP地址等字段。 3. 过滤规则:如何使用BPF(Berkeley Packet Filter)语法来筛选感兴趣...
开发这样的工具需要对OSI模型的网络层有深入的理解,包括IP头部结构、路由选择、分片与重组等概念。 压缩包内的文件名提供了以下信息: 1. **说明.htm**:这通常是一个HTML文档,包含了IP测试工具的使用说明、功能...
对于IP包,需要理解IP头部结构,包括源和目标IP地址、协议类型(TCP、UDP、ICMP等)、服务类型、总长度、标识符、标志和片段偏移等字段。 3. **MFC UI设计**:利用MFC的控件(如CListCtrl或CGridCtrl)展示捕获到的...
5. **IP头部结构**:IP数据包头部包括版本号、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、头部校验和、源IP地址和目的IP地址等字段。 6. **TCP连接管理**:TCP通过三次握手建立连接,保证...
书中可能会涉及IP头部结构、子网掩码、默认网关和路由选择算法等内容。 TCP/IP网络编程往往涉及到套接字(socket)编程,这是应用层与传输层之间的接口。在Linux下,程序员通常使用C语言的套接字API来实现TCP/IP...
- IP协议:包括IP头部结构、IP分片与重组、IP选项等。 - 网络嗅探技术:理解数据包捕获原理,使用嗅探库如libpcap或WinPcap。 - 数据处理:学习如何对捕获的数据进行筛选、过滤和统计。 - 数据可视化:使用图形...
这涉及到对TCP/IP协议的理解,包括IP头部结构和TCP/UDP头部结构的解析。 5. **并发处理**:网络环境通常需要处理多个并发的数据包,因此源码可能包含多线程或多进程技术,以确保在处理大量网络事件时系统的高效运行...
- 对IP协议的详细讲解,包括IP头部结构、IP地址的分类与子网掩码、广播和多播的概念。 - 探讨TCP协议的工作流程,如TCP头部结构、连接管理、序列号与确认应答、拥塞控制等。 - 可能还会涉及ICMP(Internet ...
- **数据包封装与解封装**:了解IP头部结构,知道如何解析IP数据包。 2. **DNS解析**: - **域名到IP转换**:使用`gethostbyname`或`getaddrinfo`函数将域名转换为IP地址,支持IPv4和IPv6。 - **DNS查询**:通过...
2. 网络层IP协议:详细解释了互联网协议(IP),包括IP地址、IP头部结构、路由选择和IP分片等关键概念。 3. 传输层TCP和UDP:深入探讨了传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供了面向连接的、可靠的...