接收端如何判断一个收到的IP数据包的分片情况

接收端如何判断一个收到的IP数据包的分片情况,第1张

IP数据包的分片情况有以下四种情况:

1、如果收到的包IP头中Fragmentation Flags为0且有UDP字段,则未分片。

2、如果收到的包IP头中Fragmentation Flags为1且有UDP字段,则为第一片。

3、如果收到的包IP头中Fragmentation Flags为1且无UDP字段,则为中间片。

4、如果如果收到的包IP头中Fragmentation Flags为0且无UDP字段,则为最後一片。

分片是分组交换的思想体现,也是IP 协议解决的两个主要问题之一。在IP 协议中的分片算法主要解决异种网最大传输单元(MTU) 的不同, 但是分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。

一、什么是IP分片

IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片( fragmentation)。

二、为什么要进行IP分片

通常要传输的IP报文的大小超过最大传输单位MTU(Maximum Transmission Unit)时就会产生IP分片情况。IP分片通常发生在网络环境中。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。而传输的报文大小要比1500字节(不包括以太协议的首部和尾部18个字节)大,这个时候就需要利用到分片技术,经分片后才能传输此报文。另外,使用UDP很容易导致IP分片,而很难强迫TCP发送一个需要进行分片的报文。

三、IP分片原理及分析

分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达下一站时,才可进行重新组装,且它是由目的端的IP层来完成的。分片之后的数据报根据需要也可以再次进行分片。

IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID(ipid),具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。这三个域就组成了IP分片的所有信息, 接受方就可以利用这些信息对IP数据进行重新组织。

参考资料

IP分片原理及分析 Chinaunix论坛[引用时间2018-4-1]

IPSec是一种用于安全通信的协议,它可以提供加密、认证和完整性保护等安全功能。它的实现方式通常有两种:传输模式(Transport Mode)和隧道模式(Tunnel Mode)。

传输模式是指在两个通信设备之间保护数据的方式,通常用于端到端的通信,只对数据部分进行加密和认证。在传输模式下,IPSec会对IP数据包的有效载荷进行加密和认证,然后再将其添加到一个新的IP头部中。此时,IPSec的处理过程分为以下步骤:

获取有效载荷,并对其进行加密和认证;

创建新的IP头部,并在其中添加加密后的有效载荷;

将新的IP数据包发送到目标设备。

隧道模式是指在两个网络之间保护数据的方式,通常用于网关到网关的通信,不仅对数据部分进行加密和认证,还要保护整个IP数据包。在隧道模式下,IPSec会将整个IP数据包都进行加密和认证,然后再将其添加到一个新的IP头部中。此时,IPSec的处理过程分为以下步骤:

获取要保护的IP数据包,并对其进行加密和认证;

创建新的IP头部,并在其中添加加密后的IP数据包;

将新的IP数据包发送到目标设备。

在公共网络上传输的数据包格式与普通的IP数据包略有不同,它包括以下字段:

IP头部:与普通的IP头部类似,但会添加一些用于IPSec处理的额外字段;

ESP头部:用于传输加密后的数据;

认证头部(AH头部):用于认证整个IP数据包。

实际上,这些字段的使用方式取决于IPSec的配置,例如加密算法、认证算法、安全关联等。

应用层负责产生数据,传输层负责数据分割、可靠传输等,网络层负责数据路由,链路层负责数据的传送。下面我们先介绍一下关键概念,然后再介绍数据的完整路由过程。

首先来看一下下面这幅图,它对本文的理解至关重要,图中表示了一个接入internet的PC电脑,几乎每一个电脑都是用这种逻辑结构接入Internet的,这种结构也反映了PC接入Internet的主要行为。]

图中的方框代表了一个数据流入Internet的通信主体,横向的虚线代表的是通信电路(如:同轴电缆),*代表这是一个IP地址,@代表这是一个以太网地址,O代表这是一个接入节点;理解这幅图对于理解互联网技术很重要。

数据单元(UDP)流经Internet依赖于各种协议栈。在不同的协议模块中,数据单元有着不同的名字,如:

如果一个应用程序使用了TCP协议,那么数据就从应用程序流入TCP模块,同样的道理,数据也可能流入UDP模块。而FTP应用就是一个典型的使用TCP协议的应用程序,它的协议栈: FTP/TCP/IP/ENET ,同样的还有SNMP应用,使用了UDP协议,协议栈为: SNMP/UDP/IP/ENET。数据流流经协议栈的图标方式可以参考图1。

其实TCP、UDP以及以太网驱动模块既是一个多对一的多端合成器,又是一个一对多的多端分解器。当作为多端合成器时,它们将多个输入端口的数据处理然后从一个端口输出(如:TCP可以同时处理多个应用程序的数据,即多任务 *** 作);当作为多端分解器时,它们可以将1个输入端口的数据分解成多个输出传送到不同的模块。

概念可能有点抽象,我们举个例子理解,如以太网模块接入网络,当一个以太网帧流入以太网驱动模块,它接收到以太网帧,既可以传送到IP模块,也可以传送到ARP模块,以太网驱动模块会根据以太网帧头部的类型来判断将数据传送到IP模块或ARP模块。同样的道理,IP包流入IP模块,IP模块IP头部信息决定数据流向TCP模块还是UDP模块。

说到这里不得不说一下以太网地址,IP地址用来唯一的标示某个Internet网络,以太网地址采用的时6个字节的十六进制数,用于唯一的标识某个接入Internet的以太网驱动设备,即我们通常的网卡地址。IP地址随着PC的移动会改变,以太网地址只有在硬件设备更换才会改变。

有时候,某个设备可能同时有多个以太网,多个IP地址,如图所示:

路由器就是一种这样的设备,但是大部分路由器没有也不需要图中所示的TCP和UDP模块以上的模块。

IP模块的主要功能是路由寻址,负责根据目的IP地址查询路由表,决定下一跳的IP地址。

以太网驱动模块接入网络,它可以对外传送数据,并且可以接收自己的数据和广播数据,这里的自己的数据指的是以太网帧的目的以太网地址和自身的以太网地址相同,广播地址指的是FF-FF-FF-FF-FF-FF。

如下图所示是一个以太网帧里面的源/目的IP和以太网地址的对应关系,以太网帧只会被发送到目的以太网地址的以太网设备中:

ARP路由模块负责IP地址到以太网地址的映射,当IP包进入缓存队列,准备发给以太网模块时,ARP模块会查询自身的ARP表,返回一个跟目的IP匹配的以太网地址,然后,以太网才可以将数据发送到这个以太网地址。如果ARP表中没有这个映射关系,以太网模块会向以太网内广播,询问谁是这个IP的设备,来获取IP对应的以太网地址。以太网中的其他设备接收到以太网帧,查询自己的IP后发现这不是自己的IP,丢弃;如果是自己的IP,响应自己的以太网地址给源以太网。至此ARP表得到了更新,重新发送IP包。

如下图所示,有三个网络分别是Development、Accounting、factory。还有一个路由器delta,路由器接入到了三个网络中,所以它有3个IP地址和3个以太网地址。下面我们就来看看一个数据是怎么从alpha网络到达factory网络中的。

当alpha向factory发送数据时,IP路由模块首先会查询自己的IP路由表,IP路由表如下:

如表中所示,首先会根据目的IP的前三位网络号,遍历路由表,进行匹配,匹配到第三行factory选中,direct/indirect flag字段指示factory网络不能直达,只能间接通过devnetrouter路由器到达,可以从1号接口传送数据。IP包仍然包含目的IP地址即factory的IP地址,但是目的以太网地址应该是路由器的以太网地址,所以IP模块结下来查询ARP表,找到对应的devnetrouter路由器的以太网地址,将数据包发送到路由器,路由器以太网接收到以太网帧,发送到IP模块,IP模块发现目的IP不是自己的IP地址,接着查询自身的路由表:

如表中所示,factory网络可以通过3号接口直达,接下来,IP包中仍然带有目的IP地址,IP模块使用ARP表查询factory的以太网地址,然后将IP包发给路由器以太网模块,由以太网模块从3号接口发送出去。factory接收到数据到达IP模块,分离IP头部,发现这是自己的IP,进一步将数据转发至上层。

参考:

RFC 1180 - TCP/IP参考

ip报头的目的地址表示的是目的网络地址和主机地址。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。

IP数据报指的是IP协议控制传输的协议单元,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

IP数据报的格式能够说明lP协议具有什么功能。IPv4数据报由报头和数据两部分组成,其中,数据是高层需要传输的数据,报头是为了正确传输高层数据而增加的控制信息。在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,称为最大传送单元。

IP数据报首部的固顶部分中的各字段:

按顺序是:版本,4bits,首部长度占4bits,服务类型8bits,总长度占16bits,标识占16bits,标志占16bits,片偏移占不确定,生存时间建议值是32秒,协议占8bits,首部检验和占16bits,源地址,占4字节,目的地址占4字节

IP数据报的可变部分从1个字节到40个字节不等,主要用来支持排错,测量以及安全等措施,内容很丰富

以上就是关于接收端如何判断一个收到的IP数据包的分片情况全部的内容,包括:接收端如何判断一个收到的IP数据包的分片情况、IPSec协议的实现方式有哪两种处理的大致过程是什么在公共网络上传输的数据包格式都是怎样的、【网络知识】数据路由方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9697229.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存