3.3IP数据包

IP协议控制传输的协议单元称为IP数据报(IP Datagram,IP数据报、IP包或IP分组)。IP协议屏蔽了下层各种物理子网的差异,能够向上层提供统一格式的IP数据报。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。IP数据报的格式能够说明lP协议具有什么功能。IPv4数据报由报头和数据两部分组成,其中,数据是高层需要传输的数据,报头是为了正确传输高层数据而增加的控制信息。报头的前一部分长度固定,共20字节,是所有IP数据报必须具有。在首部固定部分的后面是可选字段,长度可变。

3.3.1数据包传送方法

1.面向连接传送方式

为进行可靠的传输,要传输数据的设备首先必须建立到远程设备(对等系统)的面向连接通信会话,这称为呼叫建立或三次握手。建立会话后,就可以传输数据了。传输完毕后,将通过呼叫终止拆除虚电路。

2.面向无连接传送方式

面向无连接是通信技术之一。是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输。邮政系统是一个无连接的模式,天罗地网式的选择路线,天女散花式的传播形式;IP、UDP协议就是一种无连接协议。

3.3.2IP数据包的分割与重组

‌IP数据包的分割与重组‌是网络通信中重要的过程,主要涉及数据报的分割和重组两个阶段。

一.IP数据包的分割

1‌.分割条件‌

当IP数据报的长度超过网络中最大传输单元(MTU)时,需要进行分割。例如,IPv4中数据报的最大长度为65535字节,但实际传输中很少有超过1500字节的数据报,因此超过1500字节的数据报需要进行分割‌。

‌2.分割过程‌

分割过程由源端的IP层执行。首先确定片长度,然后将原始IP数据报包括报头分成第一个片。如果剩下的数据仍然超过片长度,则进行第二次分割,直到剩下的数据小于片长度为止‌。
‌标识和片偏移‌:每个分片都有一个相同的标识号,以便在目的端进行重组。分片中的“片偏移”字段表示分片在原始数据中的位置和该分片之后是否还有后续分片‌。

二.IP数据包的重组

‌‌1.重组过程‌

分割后的数据报在传输过程中可能经过不同的路径,因此到达目的端的时间可能不同。目的端的IP层负责将这些分片重新组装成一个完整的数据报‌。
‌重组条件‌:只有当所有分片都到达目的端后,才能进行重组。如果某个分片丢失,重组过程将等待丢失的分片到达‌。

‌‌2.路径MTU发现‌

为了避免不必要的分片处理,提高网络效率,可以采用“路径MTU发现”技术。该技术通过发送特定大小的数据包来探测路径中的最小MTU,从而避免在传输过程中进行不必要的分片‌。

三.实际应用场景和影响

‌‌1.网络效率‌

适当的分片和重组可以优化网络资源的利用,特别是在长距离传输或复杂网络环境中。不合理的分片可能导致网络拥堵和延迟增加‌。

‌‌‌2.安全性‌

分片和重组过程增加了数据传输的复杂性,可能为某些攻击提供机会。因此,网络安全措施在分片和重组过程中尤为重要‌。
通过理解IP数据包的分割与重组机制,可以更好地优化网络性能和安全性,确保数据在网络中的高效传输。

3.3.3IP数据包的架构

‌IP数据包的架构主要包括IP头部和数据部分。‌

1.IP头部

IP头部包含了控制和路由信息,确保数据包能够正确地从源地址传输到目标地址。其主要字段包括:

  • ‌版本(Version)‌:标识IP协议的版本号,如IPv4或IPv6。
  • ‌头部长度(Header Length)‌:指示IP头部的长度,以32位字为单位。
  • ‌服务类型(Type of Service, ToS)‌:指示数据包的优先级和服务质量。
  • ‌总长度(Total Length)‌:指示整个IP数据包的长度,包括头部和数据部分。
  • ‌标识(Identification)‌:用于唯一标识数据包,特别是在数据包分片时。
  • ‌标志(Flags)‌:控制数据包的分片。
  • ‌片偏移(Fragment Offset)‌:指示数据包分片的位置。
  • ‌生存时间(Time to Live, TTL)‌:指示数据包在网络中的生存时间,防止数据包无限循环。
  • ‌协议(Protocol)‌:指示数据包携带的上层协议(如TCP、UDP)。
  • ‌头部校验和(Header Checksum)‌:用于校验IP头部的完整性。
  • ‌源地址(Source Address)‌:发送数据包的设备的IP地址。
  • ‌目标地址(Destination Address)‌:接收数据包的设备的IP地址。
  • ‌选项(Options)‌:可选字段,用于扩展IP协议的功能‌。

2.数据部分

数据部分包含了实际传输的数据,通常是上层协议(如TCP、UDP)的数据。IP数据包通常由主机产生,当应用程序需要发送数据时,数据会通过传输层(如TCP或UDP)封装,然后传递给网络层(IP层),在IP层封装成IP数据包‌。

最后修改:2024 年 11 月 09 日
如果觉得我的文章对你有用,请随意赞赏