IPv4报文格式

合集下载

5.1ipv4数据报和ICMP报文

5.1ipv4数据报和ICMP报文
5.5 IP数据报和ICMP协议
IP数据报的结构
由 IP协议 定义
来自上一 层
首部
数据
比特 0 固 定 首 部 部 分
4 标 生存时间
8 服务类型 识 协 议
16 标志 源 地 址
19
24 总 长 度 片 偏 移
31
版 本 首部长度
首 部 检 验 和
可变 部分
目 的 地 址
可 选 字 段 (长 度 可 变) 数 据 数 据 部 部 分 分 填 充
比特 0 固 定 首 部 部 分
4 标 生存时间
8 服务类型 识 协 议
16 标志 源 地 址
19
24 总 长 度 片 偏 移
31
版 本 首部长度
首 部 检 验 和
目 的 地 址
可变 部分 可 选 字 段 (长 度 可 变) 数 据 部 分 填 充
协议(8 bit)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程
比特 0 固 定 首 部 部 分
4 标 生存时间
8 服务类型 识 协 议
16 标志 源 地 址
19
24 总 长 度 片 偏 移
31
版 本 首部长度
首 部 检 验 和
目 的 地 址
可变 部分 可 选 字 段 (长 度 可 变) 数 据 部 分 填 充
生存时间(8 bit)记为 TTL (Time To Live),这是为了 限制数据报在网络中的生存时间,其单位最初是秒, 但为了方便,现在都用“跳数”作为 TTL 的单位。 数据报每经过一个路由器,其 TTL 值就减 1。
31
版 本 首部长度
首 部 检 验 和

以太网帧格式、IP报文格式、TCPUDP报文格式

以太网帧格式、IP报文格式、TCPUDP报文格式

以太⽹帧格式、IP报⽂格式、TCPUDP报⽂格式1、ISO开放系统有以下⼏层:7应⽤层6表⽰层5会话层4传输层3⽹络层2数据链路层1物理层2、TCP/IP ⽹络协议栈分为应⽤层(Application)、传输层(Transport)、⽹络层(Network)和链路层(Link)四层。

通信过程中,每层协议都要加上⼀个数据⾸部(header),称为封装(Encapsulation),如下图所⽰不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报(datagram),在链路层叫做帧(frame)。

数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部,最后将应⽤层数据交给应⽤程序处理。

其实在链路层之下还有物理层,指的是电信号的传递⽅式,⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤等都属于物理层的概念。

3、集线器(Hub)是⼯作在物理层的⽹络设备,⽤于双绞线的连接和信号中继(将已衰减的信号再次放⼤使之传得更远)。

交换机是⼯作在链路层的⽹络设备,可以在不同的链路层⽹络之间转发数据帧(⽐如⼗兆以太⽹和百兆以太⽹之间、以太⽹和令牌环⽹之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层⾸部重新封装之后再转发。

路由器是⼯作在第三层的⽹络设备,同时兼有交换机的功能,可以在不同的链路层接⼝之间转发数据包,因此路由器需要将进来的数据包拆掉⽹络层和链路层两层⾸部并重新封装。

4、⽹络层的IP 协议是构成Internet 的基础。

IP 协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应⽤程序中提供⽀持。

传输层可选择TCP 或UDP 协议。

TCP 是⼀种⾯向连接的、可靠的协议,有点像打电话,双⽅拿起电话互通⾝份之后就建⽴了连接,然后说话就⾏了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。

IPv4数据报格式及其语义

IPv4数据报格式及其语义

IPv4数据报格式及其语义⼀、IP数据报的格式如下图所⽰版本⾸部长度服务类型数据报长度16⽐特标识标志13⽐特⽚偏移寿命上层协议⾸部检验和32⽐特源IP地址32⽐特⽬的IP地址选项(如果有的话)数据IPv4数据报格式⼆、各部分语义1)版本(号):4bit,规定了数据包的IP协议版本;通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分2)⾸部长度:因为IPV4数据报可包含⼀些可变数量的选项,所以需要⽤这4bit来确定⾸部的长度,以确定IP数据报的数据部分实际从哪⾥开始。

⼤多数IP数据报不包含选项,所以⼀般IP数据报具有20字节的⾸部3)服务类型:8bit,服务类型包含在⾸部中以使不同类型的IP数据报能相互区分开来,例如,将实时数据报(如⽤于IP电话应⽤)与⾮实时流量(如FTP)区分开来也许是有⽤,提供特定等级的服务是⼀个由路由器管理员决定的策略问题4)数据报长度:这是IP数据报的总长度(⾸部加上数据),以字节计,因为该字段长为16bit,所以IP数据报的理论最⼤长度为65535字节,然⽽数据报很少有超过1500字节的(因为IP数据还要靠数据链路层运输的,⽽链路层帧能承载的最⼤数据量为叫做最⼤运输单元(Maximum Transmission Unit,MTU))5)标识、标志、⽚偏移: 要理解这三个内容,要先理解⼀些其他知识 (1)分⽚:把IP数据报中的数据分成两个或者更多个较⼩的IP数据报,⽤单独的链路层帧封装成较⼩的IP数据报,每个这些较⼩的数据报称为⽚ (2)为什么要分⽚:因为每个IP数据报封装在链路层帧中从⼀台路由器传输到下⼀台路由器,⽽链路层帧能承载的最⼤数据量(最⼤运输单元(Maximum Transmission Unit,MTU)是⼀定的,故链路层帧严格限制着IP数据报的长度;⽽且发送⽅和与⽬的路径上的每段链路可能使⽤不同的链路层协议,且每种协议可能具有不同的MTU,所以就更有可能需要分⽚了,以便能够使得数据报能够顺利的传递数据报 (3)组装:⽬的主机从相同源收到⼀系列数据报时,需要确定哪些数据报是分⽚,如果是分⽚的话,还要进⼀步指导何时收到最后⼀个分⽚,如何将接收到的分⽚拼接起来以形成初始的数据报,故IPV4的设计者将标识、标志和⽚偏移字段放在IP数据报⾸部中,当⽣成⼀个数据报时,发送主机为该数据报设置源和⽬的地址的同时,再填上标识号标识:16bit,源主机发送IP数据报的时候,通常为它发送的每个数据报的标识号加1,所以当某个路由器需要对某⼀个数据报分⽚时,形成的每个数据报(分⽚)具有初始数据报的源地址、⽬的地址、与标识号,这样⽬的主机就可以判别哪些分⽚是属于⼀个初始数据报的标志:3bit,由于IP是⼀种不可靠服务,⼀个或者多个⽚可能永远到不了⽬的地,所以为了让⽬的主机绝对的相信它已经收到了初始数据报的最后⼀个⽚,最后⼀个⽚的标志⽐特被设置为0,⽽所有其他⽚的标志⽐特被设置为1⽚偏移:13bit,标⽰数据相对于初始数据报的偏移值,并且偏移值应当被规定以8字节块为单位。

详谈IPv6与IPv4数据报格式

详谈IPv6与IPv4数据报格式

详谈IPv6与IPv4数据报格式1.IPv6数据包每一个分组由必须要有的基本首部和跟随在后面的有效载荷组成。

有效载荷有两部分组成:可选的扩展首部和从上层来的数据(不超65535字节)。

具体如图所示:详细说明:Version:和ipv4包头中的一样,4个bit区域表示ip的版本(0110)优先级:即Traffic Class是一个8位bit的区域,同ipv4中的tos区域一样。

但是在这些年中随着TOS区域的进化,这个区域也可以用来被 DifferentiatedClass of Service (DiffServ)使用。

但是尽管这里这样的标识仍然符合老的Tos的格式,只不过Traffic Class这个名字更符合当前的应用。

流标记:Flow Label流量标签是在ipv6中独有的区域。

这个20个bit的区域设计的目的在于可以给一些特殊的数据做标记。

也就是说尽管数据包并非是从原来的源发到目的,但是仍然包含原有的源和目的的应用。

区分数据流有很多好处,可以确保不同类别服务的处理方式得以区分,在数据流经多个路径的负载均衡时,在同一个数据流的数据包将使用经由同一个路径转发,从而避免了数据包可能继续查找路径的现象。

典型的flow(更加精确一点的说法是微流)就是在源地址和目的地址上加一个团体的源地址和目的地址。

如果使用定义源和目的端口号,路由器必须识别ip包头还要进一步识别tcp或者udp(或者其他传输层协议)的头,这样就增加了转发进程的复杂性,可能会影响路由器的处理。

因为出现扩展包头(下一段介绍),所以在ipv6数据包中查找传输层协议的头就成为一个特殊的问题。

支持ipv6的路由器必须从按照数据包格式的顺序从头到位查找,可能会经过很多扩展包头再会找到传输层地址(这样的话影响查找时间)。

如果在数据包发起是适当的加入流量标签,路由器更比查找数据包头更容易辨识数据流。

然而,在本书书写时,如何使用流量标签区域的完全详细文档仍在讨论中,所以当前路由器读取数据时忽略这个区域。

Ipv4和Ipv6数据报格式详解

Ipv4和Ipv6数据报格式详解

IPv4和IPv6数据报格式一、IPv4数据报格式1)数据报可以分为报头区和数据区,数据区的数据来自上一层。

说明:首部和报头和头等字眼是同一意思。

2)版本:指明IP协议是哪个版本,IPv4为0100。

3)报头长度:也叫首部长度,指明报头区的长度。

最小值为20个字节,最大值为60字节。

说明:a.当没有选项和填充字段时,32位(每行的长度)*5(5行固有的)=160位=20字节,这个时候4个比特位的值为0101,为什么呢?因为这里规定以4个字节为单位,如果把0101用换算成十进制,0101=5,5*4=20字节。

如果4个比特位为1111,把1111换算成十进制则等于15,则它表示15*4=60个字节。

(简单记成换算成十进制后乘以4才等于它报头区的字节数)b.当 IP 分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

4)服务类型:转发过程中对该数据报的处理方式。

5)总长度:等于报头区及数据区的长度相加。

说明:a.最大长度为65535个字节(当8个bit都等于1时),2^16-1=65535个字节。

b. IP数据报的最大长度的确是65535字节。

但是实践中最大长度很少用,因为大多物理网络都有长度限制,例如,数据链路层有自己的帧格式,其中包括了数据字段的最大长度,即最大数据传输单元MTU,当一个数据报封装成链路层的帧时,此数据报的总长度一定不能超过下面的数据链路层的MTU 值,以太网把载荷长度限制在1500字节。

6)标识:IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。

但这个“标识”并不是序号,因为 IP是无连接的服务,数据报不存在按序接收的问题。

当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。

相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

附加:IP数据报在各个物理网络中需要重新封装:与路由器连接的各个网络的MTU可能不同:当数据报超过网络的MTU进行分片后,路由器可以为每个分片独立选路:7)标志:占三位,但目前只有两位有意义。

IPv6

IPv6

链路本地地址(Link-Local Address)
相当于v4中的169.254.0.0/16,不能被路由,以FE0ห้องสมุดไป่ตู้开头
站点本地地址(Site-Local Address)
相当于v4中的私有地址,仅局域网使用,以FEC0~FEFF开头
本地环回地址(Local Loopback Address)
IPv6 扩展报文
Next Header value 0
6 17 43 44 50 51 58 59 60
Type 逐跳选项扩展报头
TCP UDP 路由扩展报头 分片扩展报头 封装安全有效载荷扩展报头 认证扩展报头 ICMPv6信息报文扩展报头 无下一报头 目的选项扩展报头
IPv6 扩展报文应用
IPv6报文头长度固定为40字节,分为8个字段 Version:4比特,值为6表示IPv6报文 Traffic Class:8比特,类似于IPv4中的TOS域 Flow Label:20比特。IPv6中新增。流标签可用来标记特定流的报文,以便在网络 层区分不同的报文。转发路径上的路由器可以根据流标签来区分流并进行处理。由 于流标签在IPv6报文头中携带,转发路由器可以不必根据报文内容来识别不同的流, 目的节点也同样可以根据流标签识别流,同时由于流标签在报文头中,因此使用 IPSec后仍然可以根据流标签进行QoS处理。
IPv6 报文头格式Ⅱ
0 1 2 3 4 5 6 7 8 9 a b c d e f 0 1 2 3 4 5 6 7 8 9 a b c d e f
Version
Traffic Class Payload Length
Flow Label Next Header Hop limit

ipv4 报文格式解析

ipv4 报文格式解析

ipv4 报文格式解析IPv4(Internet Protocol version 4)是互联网协议(IP)的第四版,也是第一个广泛使用的协议版本。

它构成了当今互联网技术的基础。

IPv4使用32位地址,因此可以提供大约43亿个唯一地址。

下面是IPv4报文的基本格式解析:IPv4报文(或称为数据报)主要由两部分组成:报头和数据部分。

1. 报头:版本(Version):占4位,指定IP协议的版本。

对于IPv4,此值为4。

报头长度(Header Length):占4位,表示IP报头的长度,以32位字为单位。

最小值为5,表示报头长度为20字节。

服务类型(Type of Service):占8位,用于QoS(服务质量)等目的。

总长度(Total Length):占16位,表示整个IP数据报的长度,包括报头和数据。

标识(Identification):占16位,帮助分片后的数据报重新组装。

标志(Flags):占3位,与分片相关。

片段偏移(Fragment Offset):占13位,表示分片在原始数据中的偏移量。

生存时间(Time to Live, TTL):占8位,表示数据报在网络中的生存时间或经过的路由器数量。

每经过一个路由器,此值减1,直到为0时被丢弃。

协议(Protocol):占8位,表示上层协议类型,例如TCP、UDP等。

报头校验和(Header Checksum):占16位,用于确保IP报头的完整性。

源IP地址(Source IP Address):占32位,表示发送方的IP地址。

目标IP地址(Destination IP Address):占32位,表示接收方的IP地址。

2. 数据部分:此部分包含上层协议(如TCP、UDP等)的数据。

其长度和具体内容取决于上层协议。

3. 选项(Options):这是一个可选的部分,不总是出现在IPv4数据报中。

当存在时,它跟在报头后面、数据部分之前。

选项可以用来支持各种特殊功能和测试。

TCPIP几种协议数据报格式简介

TCPIP几种协议数据报格式简介
z TCP 报文格式如下图:
TCP 是面向连接的可靠数据传输协议,因此比较复杂,在此仅作简单介绍。“序号”指数据在发送端数据流中 的位置。“确认号”指出本机希望下一个接收的字节的序号。与 IP 校验不同的是 TCP,UDP 校验采用伪头标加整个 报文一同校验的方法。TCP 协议工作原理另行介绍。
TCP 数据报中依次包括以下信息:
协议采用分层结构,因此,数据报文也采用分层封装的方法。下面以应用最广泛的以太网为例说明其数据报 文分层封装,如下图所示:
任何通讯协议都有独特的报文格式,TCP/IP 协议也不例外。对于通讯协议编程,我们首先要清楚其报文格式。 由于 TCP/IP 协议采用分层模型,各层都有专用的报头,以下就简单介绍以太网下 TCP/IP 各层报文格式。
1、 16 位源端口 Source Port。该部分占 16 个 BIT。通过此值,可以看出发起连接的计算机源端口号。
2、 16 位目的端口 Destination Port。该部分占 16 个 BIT。通过此值,可以看出要登录的目的端口号。
3、 32 位序列号 Initial Sequence Number。表示初始连接的请求号,即 SEQ 值。该部分占 32 个 BIT。
4、 32 位确认号 Next Expected SEQ Numbe。对方返回的 ACK 值。该部分占 32 个 BIT。
5、 4 位数据偏移 Data Offset。表示数据偏移的大小。该部分占 4 个 BIT。
6、 6 位保留位 Reserved Bites:保留位,此处不用。该部分占 6 个 BIT。
的 16 次方减 1,即:65535 个字节。因此,在以太网中能够传输的最大 IP 数据包为 65535 个字节。
5、 16 位标识号 Identification。该部分占 16 个 BIT,以十进制数表示。

IPV4&IPV6报文的对比

IPV4&IPV6报文的对比

Network Layer
4-4
冒号十六进制记法: (colon hexadecimal notation) 每个 16 位的值用十六进制值表示,各值之 间用冒号分隔。 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF 零压缩(zero compression),即一连串连续 的零可以为一对冒号所取代。 FF05:0:0:0:0:0:0:B3 可以写成: FF05::B3
Priority: identify priority among datagrams in flow Flow Label: identify datagrams in same “flow.” (concept of“flow” not well defined). Next header: identify upper layer protocol for data (详见下一张幻灯片)
length ID fragflag =1500 =x =1 offset =0 offset =185 offset =370
1480 bytes in data field offset = 1480/8
length ID fragflag =1500 =x =1 length ID fragflag =1040 =x =0
additional message types, e.g. “Packet Too Big” multicast group management functions

Network Layer
4-7
解决iPv4到ipv6过度的问题
Tunneling
Logical view: A
IPv6
B
IPv6

Ipv4与ipv6比较

Ipv4与ipv6比较

采用具有分级结构地 址的改进路由结构及 简化的报头定 长结构 和更合理的分段方法 , 提高了网络的整体吞 吐量
服务质量保证 对互联网上涌现的新的业 为服务质量控制提供 务类型缺 乏有效的支持及 了良好的网络平台 服务质量保证
IPV4 VS IPV6
号称可以给全世界的沙子分配一个ip地址.。 允许扩充。如果新的技术或应用需要时,IPV6允许协议迚行扩充。 IPv6增加了增强的组播支持以及对流的支持。这使得网络上的多媒体应用有了长足 发展的机会,为服务质量控制提供了良好的网络平台。 IPv6加入了对自动配置的支持。这是对DHCP协议的改迚和扩展,使得网络(尤其 是局域网)的管理更加方便和快捷。 新的选项。IPV6有一些新的选项来实现附加的功能。。
多播地址也称组播地址,也被指定到一群
不同的接口,传统方法是从MAC地址产生, 故只有组群识别码中的最低32位有使用。
IPV6编址
现从IPv4到IPv6最显 著的变化就是网络地址的 长度。IPv6地址的表达形 式一般采用32个十六迚制 数。 • IPv6中可能的地址有 3.4×10^3 8个。也可以 想象为16个因为32位地 址每位可以取16个不同的 值。 •
Thank you!
计网1031
Ipv4与ipv6的主要差异
主要差异
地址空间
IPV4
IPV6
采用 128 位的 IP 地址标识 , 采用 32 位 IP 地址标 理 论 上 大 约 可 以 容 纳 3 4 识 ,理论上大约可以容 × 10^3 8 个主机 纳 43 亿个主机
路由选择效率 庞大的路由表增加了路由 查找和存储的开销 :数据包 的报头长度不固 定 ,不利 于进一步提高路由器的数 据吞吐率
E类地址:240.0.0.0 —— 255.2555.255.255

IP报文格式详解

IP报文格式详解

清默网络 CCIE Team
技术群:137962123
电话 0551-5436206
185+185=370
报文分析专题
之 IP 报文格式
那么第一段的分段偏移为0,第二段分段偏移为1480/8=185,第三段为
Time to Live(生存时间):用于防止数据包在网络上无休止地被传输;长度8位,最大值255,每经过一台 路由器,TTL被减1。
| Time to Live | Protocol |
Header Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Verbose(详细内容):查看数据包传送的详细内容;一般用于查看延迟;
Padding(填充):通过在可选字段后面添加0来补足32位,为了确保报头长度是32的倍数。

IP报文格式

IP报文格式

2.2 TCP/IP报文格式1、IP报文格式IP协议是TCP/IP协议族中最为核心的协议。

它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。

在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送。

而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。

如图2-3所示:图2-3 TCP/IP报文封装图2-4是IP头部(报头)格式:(RFC 791)。

图2-4 IP头部格式其中:●版本(Version)字段:占4比特。

用来表明IP协议实现的版本号,当前一般为IPv4,即0100。

●报头长度(Internet Header Length,IHL)字段:占4比特。

是头部占32比特的数字,包括可选项。

普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。

此字段最大值为60字节。

●服务类型(Type of Service ,TOS)字段:占8比特。

其中前3比特为优先权子字段(Precedence,现已被忽略)。

第8比特保留未用。

第4至第7比特分别代表延迟、吞吐量、可靠性和花费。

当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。

这4比特的服务类型中只能置其中1比特为1。

可以全为0,若全为0则表示一般服务。

服务类型字段声明了数据报被网络系统传输时可以被怎样处理。

例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。

实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。

IPv4报文格式

IPv4报文格式

IPv4分析IPv4的头部格式:1. Version版本号,默认是4。

2. IHL(Internet Header Length)就是IPv4头部长度。

这个长度的单位是32bit,一般是5,那么头部的长度就是5x32bit=160bit。

3. DSCP(Differentiated Services Code Point),ECN(Explicit Congestion Notification)原来这8字节是被定义成TOS(Type of Service),现在被RFC2474定义成Differentiated services(差异化服务)和ECN。

背景:随着互联网的发展,各种各样的服务被提供,比如语音、视频、流音乐、网页、邮件等等。

原来的TOS定义已经跟不上时代的需要,所以在1998年,IETF发布了RFC 2474,将原来的TOS 替换成DSCP和ECN。

4. Total Length整个数据包的长度,含头部,单位为Byte。

5. Identification数据包标识,用来区分相同的包,比如ping包。

6. Flagsbit 0 : 保留,总是0bit 1 : Don’t Fragment, DF。

表示不分片。

当需要发送的数据大于最长数据包限制的时候,数据需要分片发送。

如果这位置1,IP模块将不会对数据报进行分片。

这种情况下,如果IP数据报长度超过MTU,IP模块将丢弃数据报并返回一个ICMP差错报文。

bit 2 : More Fragment,MF。

表示更多分片,除了数据报的最后一个分片外,其他分片都要把它置1.7. Fragment Offset。

ipv4的报文格式

ipv4的报文格式

ipv4的报⽂格式IPV4 数据报头部格式摘⾃:《深⼊理解计算机⽹络》王达著机械⼯业出版社图解前⾔发送端的⽹络层在收到它的上⼀层——传输层发来的数据段时,需要通过⽹络层协议将其封装成数据报,也就是加上⽹络层IP协议(在此仅以IP协议为例进⾏介绍)头部。

IP协议头部主要是源和⽬的⽹络的IP地址,以便可以数据分段传输到⽬的⽹络中。

然后数据包向下传输,到了数据链路层后⼜要封装成数据帧。

与在数据帧格式中包括帧头和数据部分类似,⼀个IP数据报也包括报头和数据这两个部分,如上图所⽰。

其中数据部分就是来⾃传输层的完整数据段,⽽报头部分是为了正确传输数据报⽽增加的⽹络层IPV4/IPV6协议信息。

格式版本(Version)版本字段指定了IP数据报中使⽤的IP协议版本,占四位。

如过协议是IPV4,则值为0100。

头部长度(Header Length)头部长度字段指⽰IP数据报头部的总长度,IP数据报头部的总长度以4字节为单位,该字段占4位。

当报头中⽆选项字段时,报头的总长度为5,也就是5×4=205×4=20字节(此时,报头长度的值为0101)。

这就是说IP数据报头部固定部分长度为20字节。

当IP头部长度为1111时,头部的固定长度为15×4=6015×4=60字节。

但报头长度必须是32位(四字节)的整数倍,如果不是,需要在选项字段的填充(PAD)字段中补0凑齐。

区分服务(Differentialted Services)最开始IP数据报的这个字段为优先级和服务类型字段,⼜称为服务类型(ToS)字段,⽤于表⽰数据报的优先级和服务类型,占⼋位。

它包括⼀个3位长度的优先级、4位长度的标志位。

标志位分别是D(Delay延迟)、T(Throughput吞吐量)、R(Reliability可靠性)和C(Cost 开销),分别表⽰延迟、吞吐量、可靠性和开销值,⽤来获得更好的服务。

最⾼1位未⽤。

IPv4协议简介

IPv4协议简介

一、IPv4协议报头格式0 4 8 16 19 24 32说明:Version : 4 bits,显示当前正在运行的IP版本信息。

当前为4IHL : 4 bits,标明了以32比特为单位的消息中数据报报头的长度,这是所有报头的总长度。

注意:它的最小值为5Type of Service : 8 bits,标明了一个特定的上层协议所分配的重要等级。

TOS字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。

4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。

4 bit中只能置其中1 bit。

如果所有4 bit均为0,那么就意味着是一般服务。

每TOS值最多只能有一个为1.如下所示:协议TOS 值TELNET/RLOGIN (1)1000 (minimize delay)FTPControl 1000 (minimize delay)Data (2) 0100 (maximize throughput)TFTP 1000 (minimize delay)SMTP (3)Command phase 1000 (minimize delay)DATA phase 0100 (maximize throughput)Domain Name ServiceUDP Query 1000 (minimize delay)TCP Query 0000Zone Transfer 0100 (maximize throughput)NNTP0001 (minimize monetary cost)ICMPErrors 0000Requests 0000 (4)Responses <same as request> (4)Any IGP 0010 (maximize reliability)EGP0000SNMP0010 (maximize reliability)BOOTP0000Total Length: 16 bits,标明整个分组的长度,以字节为单位。

IPv4网络简介

IPv4网络简介

IPv4⽹络简介Ipv4⽹络IPv4数据报格式⾸部各字段描述版本号:⽤来确定IP协议的版本(⽐如IPv4还是IPv6),路由器根据版本号来判断怎样解析⾸部其他的字段信息,不同协议版本,数据报格式不同。

——4⽐特⾸部字段:IPv4协议包含⼀些可选字段,即⾸部长度不固定,该字段⽤来确定⾸部长度,⼤多数版本的IP协议不包含可选字段,因此通常IP⾸部⼀般长20个字节。

——4⽐特服务类型(TOS):有些数据报要求低时延\⾼吞吐量\可靠性传输。

——8⽐特数据报长度:IP数据报总长度,以字节计算,包括IP⾸部和运输层报⽂段的长度,因为以太⽹帧最⼤传输单元不超过1500字节,所以⼀般数据报长度⼀般不超过1500字节。

——16⽐特标识,标志,⽚偏移:与IP分⽚相关。

——16⽐特——3⽐特——13⽐特寿命:每次经过⼀个路由器该值减⼀,当该值为0时必须丢弃该数据报。

——8⽐特上层协议:IP数据报的数据部分应该交给哪个特定的运输层协议,跟运输层要存储哪个端⼝号来接收信号,即沟通运输层跟应⽤层。

链路层帧也有⼀个字段来连接链路层跟⽹络层。

——8⽐特⾸部检验和:将⾸部中的每两个字节当作⼀个数,按反码求和,⽤来检验⾸部信息是否发⽣错误,运输层的检验和是对整个报⽂段包括数据部分进⾏检验。

——16⽐特源IP地址。

——32⽐特⽬的地址。

——32⽐特可有选项(IPv6已经不包含该选项)。

数据部分。

——有效载荷(要传输的数据)。

若IP数据报不包含可有选项则⾸部⼀共有20个字节IPv4数据报的分⽚MTU:链路层帧的最⼤传输单元,限制着IP数据报的长度。

现在考虑⼀种情况,⼀个数据长度为4000字节的数据报进⾏传播,但是当他被⼀个路由器转发时,出链路帧的MTU为1500字节,该数据报必须被分割为⼩的数据报,即数据分⽚。

然后我们要考虑怎样分⽚以后的数据报我们怎么再把它拼接起来,什么时候拼接。

什么时候拼接?假如我们在到达⽬的地前就拼接,那么在剩下的链路中仍然有被分⽚的可能,⽽且这样增加多次拆分和拼接的操作⽆疑增加了路由器的负担,所以应该在⽬的地进⾏拼接。

ipv4报文格式解析

ipv4报文格式解析

ipv4报文格式解析IPv4报文格式如下:1. 版本号(Version):占4位,表示IP协议的版本。

目前广泛使用的是IPv4,其版本号为0100。

2. 首部长度(Header Length):占4位,表示IP首部的长度。

首部长度单位为32位字长(4字节),4位二进制表示最大的十进制数值为15,因此,当首部长度为1111时(即十进制的15),首部长度达到最大长度60字节。

通常情况下,首部长度为20字节。

3. 区分服务(Type of Service):占8位,用于表示数据包的服务质量,如延迟、吞吐量、可靠性和成本等。

现在通常使用3位优先级字段和5位TOS字段。

4. 总长度(Total Length):占16位,表示整个IP数据包的长度,包括首部和数据部分。

范围为0-65535字节。

5. 标识(Identification):占16位,用于标识数据包。

当原始报文超过最大传输单元(MTU)时,需要进行分片,每个分片打上相同的标识符,以便接收端识别为同一个报文的分片。

6. 标记(Flags):占3位,用于表示数据包是否分片以及分片顺序。

其中,第一位未使用;第二位表示“不允许分片”(Don't Fragment,DF),第三位表示“更多分片”(More Fragments,MF)。

7. 分片偏移量(Fragment Offset):占13位,用于标记分片在分组中的位置。

8. 生存时间(Time to Live,TTL):占8位,表示数据包可以在网络中传输的最大跳数。

9. 协议(Protocol):占8位,表示传输层使用的协议类型,如ICMP、IGMP、TCP、UDP等。

10. 头部校验和(Header Checksum):用于校验IP报头的正确性,仅校验头部,数据部分由传输层协议负责校验。

11. 源IP地址(Source IP Address):占32位,表示数据包的源IP 地址。

12. 目的IP地址(Destination IP Address):占32位,表示数据包的目的IP地址。

解析IPV4报文和IPV6报文的checksum的算法

解析IPV4报文和IPV6报文的checksum的算法

解析IPV4报文和IPV6报文的checksum的算法:校验和(checksum)算法,简单的说就是16位累加的反码运算:计算函数如下:我们在计算时是主机字节序,计算的结果封装成IP包时是网络字节序,注意这两者之间的区别,我们在从IP包里读取要转化为主机字节序,往IP包里存入时要转化为网络字节序在存入。

UINT32 Checksum(UINT32 cksum, VOID *pBuffer, UINT32 size){INT8 num = 0;UINT8 *p = (UINT8 *)pBuffer;if ((NULL == pBuffer) || (0 == size)){returncksum;}while (size > 1){cksum += ((UINT16)p[num] << 8 & 0xff00) | (UINT16)p[num + 1] & 0x00FF;2个字节累加,先取网络字节序低位左移8位(变成主机字节序高位),与(加)上网络字节序中的高位(主机字节序地位),即网络字节序要先变成主机字节序在进行累加, size -= 2;num += 2;}if (size > 0)如果长度为奇数{cksum += ((UINT16)p[num] << 8) & 0xFFFF;如果总的字节数为奇数,则最后一个字节单独相加num += 1;}while (cksum>> 16){cksum = (cksum& 0xFFFF) + (cksum>> 16);累加完毕将结果中高16位再加到低16位上,重复这一过程直到高16位为全0}returncksum;}注意:UINT32 cksum的类型,这里是4个字节的,防止在累加的过程中,数据溢出,(例如0xFF累加时就会内存溢出)详细的计算过程和原理如下一:ip头的计算:直接对头部数据进行累加(不包括原来的checksum值):1、ipv4包头ipHeadLen = (pIpHeader->ver_ihl& 0x0F) << 2;在ipv4头中,版本类型和头长度加在一起是1个字节(8位),各占4位,版本类型在前,长度在后,所以要取长度只能取低4位,pIpHeader->chksum = 0;因为不包括原来的checksum值,所以在每次计算前先把checksum的值置0,然后计算 sum = Checksum(0, (VOID *)pIpHeader, ipHeadLen);对整个ip包头的累加pIpHeader->chksum = HTONS((UINT16)(~sum));结果为计算值的反码,(别忘转化为网络字节序)2、ipv6包头在ipv6中已经省略了checksum部分,但在后面的部分要有的,比如TCP/UDP包,别高兴的太早二、TCP/UDP报文的计算(举例UDP):这里的checksum包含两部分,一部分是伪头的累加,还有一部分是UDP包的累加(不包括原来的checksum值)伪头有分ipv4和ipv6两种,分别包含如下几部分,这里做下比较1、 ipv4类型的:第一部分,伪头部分的计算:sum = 0;udpLen =sizeof(UDP_HEADER_T) + dhcpLen;UDP的长度= UDP的包头长度+ UDP的数据长度sum += udpLen;或者,下面也是一样的,这里就是网络字节序和主机字节序的区别了,上面的是(主机字节序)直接累加,下面的是网络字节序,一定要变成主机字节序后累加pUdpHeader->len = HTONS(udpLen);主机字节序转化为网络字节序,存入数据包中,一定要注意,我们做的所有累加也是网络字节序,这里一定要搞清楚,以防混淆搞错了sum += (pUdpHeader->len>> 8 & 0x00FF);2个字节的累加,先取网络字节序的高位,右移8位,变成主机字节序的低位,累加sum += (pUdpHeader->len<< 8 & 0xFF00);在取网络字节序的低位,左移8位,变成主机字节序的高位,累加sum = Checksum(sum, (VOID *)&pIpHeader->saddr, 4);sum = Checksum(sum, (VOID *)&pIpHeader->daddr, 4);对4位的地址进行累加sum += ((UINT16)pIpHeader->proto & 0x00FF);对1位的协议类型进行累加伪头部分计算完成第二部分,UDP数据包的计算pUdpHeader->chksum = 0;注意:每次计算前别忘先把checksum的值置0,然后计算sum = Checksum(sum, (VOID *)pUdpHeader, udpLen);对整个UDP包的累加pUdpHeader->chksum = HTONS((UINT16)(~sum));结果为计算值的反码,(别忘转化为网络字节序)UDP数据包部分计算完成2、 ipv6类型的:第一部分,伪头部分的计算:sum = 0;udpLen =sizeof(UDP_HEADER_T) + dhcpLen;sum += udpLen;或者pUdpHeader->len = HTONS(udpLen);sum += (pUdpHeader->len>> 8 & 0x00FF);sum += (pUdpHeader->len<< 8 & 0xFF00);sum = Checksum(sum, (VOID *)&pIpHeader->saddr, 16); sum = Checksum(sum, (VOID *)&pIpHeader->daddr, 16); 对16位的地址进行累加sum += ((UINT16)pIpHeader->proto & 0x00FF); 伪头部分计算完成第二部分,UDP数据包的计算pUdpHeader->chksum = 0;注意:每次计算前别忘先把checksum的值置0,然后计算sum = Checksum(sum, (VOID *)pUdpHeader, udpLen);对整个UDP包的累加pUdpHeader->chksum = HTONS((UINT16)(~sum)); 结果为计算值的反码,(别忘转化为网络字节序)UDP数据包部分计算完成。

IPv4报文格式

IPv4报文格式

IPv4报文格式路由 的 分 类01 01000100010101010101001001001000110…… IPv4报文格式IPv4报文格式路 由 的 分 类01目录Contents1 IPv4报文格式2 IPv4报文各字段含义3 IPv4报文应用方式版本(4)头长度(4)TOS (8)总长度(16)标识(16)标志(3)片偏移(13) TTL (8)协议(8)校验和(16)源IP 地址(32) 目的IP 地址(32) 选项(0 or 32 if any )数据bit0bit31报头区 20-60 Bytes头长度(4)TOS (8)总长度(16)标识(16)标志(3)片偏移(13) TTL (8)协议(8)校验和(16)源IP 地址(32) 目的IP 地址(32) 选项(0 or 32 if any )数据bit0bit31报头区 20-60 Bytes版本(4)版本(version )1表示该数据报所使用的IP 协议版本号0100 IPv4 0110IPv6版本(4)TOS (8)总长度(16)标识(16)标志(3)片偏移(13) TTL (8)协议(8)校验和(16)源IP 地址(32) 目的IP 地址(32) 选项(0 or 32 if any )数据bit0bit31报头区 20-60 Bytes头长度(4)头长度(IHL )2指明“报头区”的长度 单位是32bits 如: 0111 7报头区长度为:7*32bits=224bits=28Bytes版本(4)头长度(4)总长度(16)标识(16)标志(3)片偏移(13) TTL (8)协议(8)校验和(16)源IP 地址(32) 目的IP 地址(32) 选项(0 or 32 if any )数据bit0bit31报头区 20-60 Bytes服务类型(TOS )3区分不同的服务种类,对传输速度及可靠性等方面加以控制TOS (8)优先级 可靠性吞吐量 延迟版本(4)头长度(4)TOS (8)标识(16)标志(3)片偏移(13) TTL (8)协议(8)校验和(16)源IP 地址(32) 目的IP 地址(32) 选项(0 or 32 if any )数据bit0bit31报头区 20-60 Bytes总长度(Total Length )4定义了报文总长,包含首部和数据,单位为字节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据
11 源、目的IP地址
源IP地址是报文的发送端的地址, 目的IP地址是报文接收端的地址。
发送端
源IP 目的IP
接收端
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
总长度(16)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
2
头长度(IHL)
指明“报头区”的长度
单位是32bits
如: 0111
7
报头区长度为: 7*32bits=224bits=28Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
6 标志位(Flags)
用于控制和识别分片。
0 DF MF
DF =0 时才允许分片 MF为1 表示后面还有分片 MF为0 表示最后一个分片
片偏移(13) 校验和(16)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
10 校验和(Header Checksum)
只检验数据报的首部部分(报头区), 不包括数据部分(数据区)
校验和(16)
选项(0 or 32 if any)
数据
8 存活时间(TTL)
避免报文在网络中永远存在。 最大的生存期为255秒
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
优先级 吞吐量
可靠性 延迟
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16)
片偏移(13) 校验和(16)
选项(0 or 32 if any)
数据
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
3
服务类型(TOS)
区分不同的服务种类,对传输速度及可 靠性等方面加以控制
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
7
片偏移(Fragment Offset)
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
指明了每个分片相对于原始报文开头 的偏移量,以8字节作单位
分片1 分片2 分片3
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
IPv4报文格式
IPv4报文格式 01000100010101010101001001001000110……
IPv4报文格式
目录
1 IPv4报文格式
2 IPv4报文各字段含义 3 IPv4报文应用方式
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
校验和(16)
选项(0 or 32 if any)
数据
5
标识符(Identification)
让目标主机确定一个新到达的分段属 于哪一个数据报。
同一个数据报的所有分段包 含相同的Identification值
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
9 协议(Protocol)
定义了该报文数据区使用的协议
协议字段值 1 2 6 17 89
协议类型 ICMP IGMP TCP UDP OSPF
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
4
总长度(Total Length)
定义了报文总长,包含首部和数据, 单位为字节。
20~65,535
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
协议(8)
源IP地址(32)
目的IP地址(32)
总长度(16) 片偏移(13)
校验和(16)
选项(0 or 32 if any)
数据
1 版本(version)
表示该数据报所使用的IP协议版本号
0100 0110
IPv4 IPv6
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
数据区的错误留 待上层协议处理
1. IPv4报文格式
bit0
bit31
版本 头长度
(4) (4)
TOS(8)
报头区
20-60 Bytes
标识(16)
标志(3)
TTL(8)
协议(8)
源IP地址(32)
总长度(16) 片偏移((0 or 32 if any)
相关文档
最新文档