IP数据报文格式

article/2025/10/3 17:37:57
【转载】http://blog.csdn.net/shinezhang86/article/details/47145907

由于记性不好的原因, 一直对报文格式的字段记的不是很牢固, 故花了一天时间学习IP报文格式, 第二天来总结. 过两天再继续学习TCP和UDP.


IP报文格式如下图所示(图片来源—百度百科):

 

版本(Version, 4bit):为4代表ipv4, 为6代表ipv6

报头长度(Header Length, 4bit):一般为5, 代表IP首部一共占用20个字节. (4*5)

服务类别(Type Of Service, 8bit):

报文长度(Length, 16bit):  IP首部+数据部分的总长度, 一般再加上以太头长度即为数据包的长度.

标识(Identification, 16bit): 用于在IP层对数据包进行分段的时候,标识数据包.

标志(IP Flags, 3bit): 0x80—保留字段, 0x40—不分段, 0x20—还有更多的分段

分段偏移(Fragment Offset, 13bit): 本数据包的数据在分段中的偏移(需要再乘以8).

生存时间(Time To Live, 8bit): 本数据包的TTL.

用户协议(Protocol, 8bit): 1—icmp, 2—igmp, 6—tcp, 17—udp, 89—ospf.

报头校验和(Header Checksum, 16bit): IP首部的校验和.

源IP地址(Source IP, 32bit): 源IP地址.

目的IP地址(Destination IP, 32bit): 目的IP地址.

 

 

问题点:

1.   IP层的分片和重组分别发生在什么时候?

IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层。

 

2.   IP分片和TCP分段有什么区别?

IP分片的原因是MTU, TCP分段的原因是MSS.


3.      IP协议对分片进行重组的时候, 是不是也要像TCP协议一样, 启动一个定时器, 等到3片都到齐?

启用定时器.但只是一个针对分片重组的定时器。如果定时器超时还没有收到完整的数据包,则直接将数据包丢弃.

注: 关于这个问题, 今天专门去分析了协议栈的源代码. lwIP中并没有在ip层启动定时器, 只是简单的回收最旧的ip分片组. linux内核(2.6.18)的协议栈中确实有在ip层对分片做了定时器处理. 注册了一个timer, 当过期的时候, 回调函数会调用从而收受内存. 在linux内核协议栈中, ip分片的默认超时时间为600秒. (ipfragment.c中有源代码ip4_frags.secret_interval = 10 * 60 * HZ;)

最近刚好在关注TI5, secret站队很强大. 不知道内核源代码开发者为什么要用secret_interval 这样的名字~~


4.   IP层会不会对错误的数据包进行重传?

IP层不会对丢弃或者错误的数据包进行重传,但是上层协议可能会提供重传机制(tcp等).

 

5.    为什么要避免IP分片

IP层是没有超时重传机制,一旦分片中有一个数据包丢失就只能由上层协议重传整个数据包,效率低下. 

使用UDP开发的时候,我们需要在应用层去限制每个包的大小,一般不要超过1472字节(即以太网MTU—UDP首部—IP首部),来避免IP层的分片。TCP程序由于有MSS, TCP协议本身会避免IP分片,则不用考虑这些.

 

6.   TOS的作用是什么?

RFC 791中定义了TOS位的前三位为IP Precedence,划分成了8个优先级,即:IP优先级字段。可以应用于流分类,数值越大表示优先级越高。IP优先权与CoS相同,有8种服务(0到7)可以标记。在网络中实际部署的时候8个优先级是远远不够的,于是在RFC 2474中又对TOS进行了重新的定义。把前六位定义成DSCP差分服务代码点(Differentiated Services Code Point),后两位保留。(总结:该字段比较复杂,以后可以做为专题再研究).

 

分片攻击

  这种攻击的原理是:在IP的分片包中,所有的分片包用一个分片偏移字段标志分片包的顺序,但是,只有第一个分片包含有TCP端口号的信息。当IP分片包通过分组过滤防火墙时,防火墙只根据第一个分片包的Tcp信息判断是否允许通过,而其他后续的分片不作防火墙检测,直接让它们通过。

这样,攻击者就可以通过先发送第一个合法的IP分片,骗过防火墙的检测,接着封装了恶意数据的后续分片包就可以直接穿透防火墙,直接到达内部网络主机,从而威胁网络和主机的安全。

 

 

下面这张图对IP报文格式描述的更加清晰:



http://chatgpt.dhexx.cn/article/MCLdVqW9.shtml

相关文章

IPv6报文格式

IPv6报文 IPv6报文分为两大部分:报头,负载。 报头 IPv6的报头是固定的320bit,不同与IPv4,IPv6把可选项从标准头部中移除,标准头部包含着版本号、流量类型、流标签、负载数据的长度、下一协议报头、生存时间&#xff08…

IP 协议报文格式 【IPv4】

前言: IP 数据报文由首部(称为报头)和数据两部分组成;首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的;在首部的固定部分的后面是一些可选字段,其长度是可变的 每个 IP 数据报…

TCP和UDP以及IP报文格式

TCP和UDP以及IP报文格式 TCP报文: 源端口: 数据发送方的端口号。 目的端口: 数据接受方的端口号。 序号:本数据报文中的的第一个字节的序号(在数据流中每个字节都对应一个序号)。 确认号:希望…

ipv4 报文格式中文描述

ipv4 报文格式中文描述 ipv4 英文描述 第一行 报文头部 20 byte 选项 40 byte ver 版本:4位 ipv40100hlen 头部长度:4bit 固定头部 选项 用4byte 为单位标记头部长度 (5-15)0101-1111tos服务类型:8位total length 报…

以太网 以太网帧格式与IP报文分片

2.1.0 以太网 以太网帧格式与IP报文分片 一、以太网数据帧信息简介 以太网有两种类型的数据帧,一种是Ethernet_II另一种是IEEE802.3。 两者并没有明确的规定两种类型的使用场景,通常都是由协议/应用程序的开发者定义的。 通过观察发现: …

SOME/IP报文格式-Message ID

–回目录页 SOME/IP报文格式-Message ID Message ID [32 Bit] The Message ID is a 32 Bit identifier that is used to dispatch the RPC call to a method of an application and to identify an event. The Message ID has to uniquely identify a method or event of a …

TCP/IP报文格式详解

1.端口号   标记同一台计算机上的不同进程   源端口:占2个字节,源端口和IP的作用是标记报文的返回地址。   目的端口:占2个字节,指明接收方计算机上的应用程序接口。   TCP报头中的源端口号和目的端口号同IP报头中的源…

ping内网流程以及ARP,ICMP,IP报文格式

ping内网流程 正常ping流程 A->B arp广播报文格式: 以太网目的MAC 以太网源MAC 帧类型 硬件类型 4 6 OP 发送端以太网MAC 发送端IP地址 目的MAC 目的IP FF-FF-FF-FF-FF-FF 00-50-56-C0-00-01 0806 0800 1 00-50-56-C0-00-01 1.1.1.1 00-00-0…

TCP,IP,UDP等各种报文格式

1.TCP:全双工,传输层协议 源端口和目的端口:各占2个字节,是运输层与应用层的服务接口。 序号:占4个字节。TCP连接传送的数据流中的每一个字节都被编上一个序号。首部中序号字段的值指的是本报文段所发送的数据的第一个…

IP报文格式及各字段的意义

IP数据包由报头和数据两部分组成。报头的前一部分是固定长度,共20字节。在报头的固定部分的后面是可选部分——IP选项和填充域。 首部各字段的含义如下 1、版本 占4位,指IP协议的版本。 2、报头长度 占4位,该字段的单位是32位字(1…

IP报文格式和实例分析

上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。 1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此…

TCP/IP协议中IP数据保报文格式详解

在 TCP/IP 协议中,使用 IP 协议传输数据的包被称为 IP 数据包,每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文(IP Datagram)或者 IP 数据包。 IP 数据报文由首部(称为报头)…

TCP/IP报文格式及通讯

目录 1 分层结构 1.1 PHY物理层 1.2 MAC层(LLC逻辑链路层) 1.3 IP层(net网络层) 1.3.1 IP报路由时MAC变IP不变 1.3.2 ARP原理 1.3.3 IP报拆分 1.3.4 生存时间 1.3.5 协议种类 1.3.7 划分子网 1.4 TCP报文、UDP报文 1.5 应…

TCP/IP 报文格式(IP数据包、TCP报头、UDP报头)

TCP/IP 报文格式(IP数据包、TCP报头、UDP报头) 一、IP包格式 IP数据包,是一种可以变长的分组,由首部与数据负载组成。首部长度为20-60字节(Byte),后40字节是可选的,但长度不固定&a…

SOMEIP报文格式部分字段概述(二)

书非借而不能读也! 为了提高效率,现在参考了某网友的(忘记来源了)相关文章。 【SOMEIP报文格式部分字段概述】 【Message ID】 Message ID是一个32位标识符,用于将RPC调用分派给应用程序的method并识别event 。 Mess…

【TCP/IP详解】IP报文格式

我将工作中用到的报文格式进行了汇总,方便查阅: 【TCP/IP协议】各层报文首部数据格式汇总 解析: 4位版本:目前的协议版本号是4,因此IP有时也称作IPv4。4位首部长度:普通的IP首部长为20个字节,除非含有选项字…

IP报文格式

每一行由32bit组成(4字节) 每一个小格子称为“字段” 每一个字段或者某些字段的组合用来表达IP协议相关的功能如下图 字段解释: 1、版本 ver 占4bit表示IP协议的版本 通行双方的版本必须一致,目前广泛使用ipv4版本 2、首部长…

IP 报文格式详解(IPv4、IPv6)

文章目录 1 概述2 IP 报文格式2.1 IPv42.2 IPv62.3 两者区别 3 网工软考真题 1 概述 #mermaid-svg-Z10Ft1t2MtizhS0J {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Z10Ft1t2MtizhS0J .error-icon{fill:#552222;}#m…

IP数据报格式

1、报文格式 前几篇总结过较多网络层的知识,ARP,ip地址、子网掩码等等。这次总结一下IP数据报的报文格式 IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述…

IP报文格式详解

转载:https://www.cnblogs.com/zhangbing12304/p/11016921.html 下图为常见的IP报文格式表: 上面是IP的报文格式,接下来我们先说明各个字段的意义。然后,用Etheral软件转包分析IP的报文格式。 1.版本:ip报文中&#…