IPv4报文格式
- 格式:pptx
- 大小:1.26 MB
- 文档页数:18
以太⽹帧格式、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数据报格式及其语义⼀、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数据报格式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数据报格式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)标志:占三位,但目前只有两位有意义。
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数据报中。
当存在时,它跟在报头后面、数据部分之前。
选项可以用来支持各种特殊功能和测试。