IP数据包的分包与组包:网络通信的幕后英雄

欢迎浏览高耳机的博客

希望我们彼此都有更好的收获

感谢三连支持!

🥥在网络通信的世界里,数据的传输并非总是一帆风顺。有时,数据需要被分割成更小的单元,以便在复杂的网络环境中顺利传输。这个过程,就是我们今天要探讨的IP数据包的分包与组包。

分包与组包?

🍍当我们在互联网上发送数据时,这些数据会被封装成IP数据包。由于不同网络技术对数据包大小有限制,超过这个限制的数据包就需要被分割成更小的单元,这个过程称为分包。相应地,当这些小单元到达目的地后,它们会被重新组合成原始的数据包,这个过程称为组包。

类似于归并排序算法,先拆后合,分而治之。🙉

为什么需要分包

🥝适应不同网络的MTU :最大传输单元(MTU)是指网络层单次能够传输的最大数据包大小。不同网络的MTU不同,为了适应这些差异,超过MTU的数据包需要分包。

🍎减少网络拥塞 :小的数据包更容易在网络中快速传输,有助于减少网络拥塞。

🫐提高数据传输的可靠性 :小的数据包更容易被处理和传输,提高了数据传输的可靠性。

可以参考这篇博客: TCP(下):三次握手四次挥手 动态控制-CSDN博客

分包组包的关键IP报头字段

🍓IP协议具备内置的分包和组包功能。当传输层生成的数据包超过64KB(即16位总长度所能表示的最大值64KB)时,IP协议会将这个大的数据包分包进行传输,携带原始大数据包的全部信息。

🍑

🍋TTL是指一个数据包在网络中最多存活的时间。假设一个IP数据包的目的IP写错成了不存在的IP地址,那么如果让这个数据包在网络中无限寻找,无限传输,就会消耗很多的网络资源。TTL约定了传输时间的上限,达到上限后,数据包就会自动被丢弃掉,消失在网络中。

TTL的单位不是s或者min,而是**'次数'** ,是指经过路由器转发的次数,发送IP数据包会有一个初始的TTL的值(32,64,128...),数据包每经过一个路由器转发,TTL就会-1(经过交换机则不会减少),一旦TTL减为0,此时这个数据包就会由当前的路由器直接丢弃掉~~~

六度空间理论

🍇根据TTL,我们知道路由器会在网络中不断寻找离目的IP较近的下一个路由器进行转发数据包,而初始的TTL值是有限的,而当今世界理论上具有约40亿个IPv4地址,路由器是如何在有限的情况下找到目的IP的呢?

🍉六度空间理论,也被称为六度分隔理论,是一个数学领域与传播学的猜想,它表明世界上任何两个互不相识的人只需要很少的中间人就能建立起联系。这个理论的核心观点是,任何两个素不相识的人,通过一定的方式,总能够产生必然联系或关系。具体来说,这个理论认为,你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个中间人你就能够认识任何一个陌生人。

六度空间理论并不是说任何人与其他人之间的联系都必须通过六个层次才会产生联系,而是表达了这样一个重要的概念:任何两个素不相识的人,通过一定的方式,总能够产生必然联系或关系。随着联系方式和联系能力的不同,实现个人期望的机遇将产生明显的区别。这个理论在社会网络分析、人际交往以及互联网社交网络中有着广泛的应用和影响。

🍊例如我想和川普 建立联系,理论上如果调用所有人的人际关系网,用朋友的朋友这种方式链接,是有很大概率建立联系的。但实际情况往往不可能,会受到各种因素的制约。

但是计算机和网络的世界不一样,每个路由器的执行力都是非常强大的,个体路由器虽然不能感知到网络结构的全貌,但是都可以了解其中的一部分。具体来说,每个路由器都能知道有哪些设备是和它所相邻的。

🍍不信?那我们来试试 ,首先呼出cmd并输入要ping的域名:

按下回车,呼叫世界!!!

🥥由于学校有教学楼在进行考试,屏蔽仪对网络有一定影响,这里两个响应已经丢包了 。但是成功的两个也能够说明路由器是可以在TTL有限的情况下 (这里TTL初始值为64,响应的TTL=55说明路由器用了9跳) 找到目的IP的。

如何保证数据的顺序和完整性

🍑序列号:每个分包都有一个序列号,用于在接收端重新组装数据包时保持正确的顺序。

🥝校验和:IP头部包含一个校验和字段,用于检测数据在传输过程中是否出现错误。如果校验和不正确,数据包将被丢弃。

🍎标识和片偏移:标识字段和片偏移字段共同工作,确保接收端能够识别哪些分包属于同一个原始数据包,并按照正确的顺序组装它们。

🍓重组缓冲:接收端通常有一个重组缓冲区,用于临时存储到达的分包,直到所有分包都到达并按顺序组装完成。

🥑超时重传:如果某个分包丢失,发送端可能会在一定时间后重传该分包,确保数据的完整性。

小结

🫐 IP数据包的分包与组包是网络通信中不可或缺的一部分。它们确保了数据能够在不同网络环境中高效、可靠地传输。虽然这个过程对于大多数用户来说是透明的,但了解这些幕后英雄的工作机制,有助于我们更好地理解互联网的工作原理。


希望这篇博客能为你理解网络传输分包组包提供一些帮助

如有不足之处请多多指出

我是高耳机

相关推荐
Peter_chq3 小时前
【计算机网络】HTTP协议
linux·c语言·开发语言·网络·c++·后端·网络协议
琢瑜5 小时前
TCP 三次握手和四次挥手
网络·网络协议·tcp/ip·linux网络编程
可涵不会debug9 小时前
【Linux|计算机网络】HTTPS工作原理与安全机制详解
linux·网络协议·http·网络安全·https
三石峰科技9 小时前
三格电子-EtherNet IP转Modbus TCP网关
网络协议·无线通讯·工业以太网
lu云之东10 小时前
Harbor2.11.1生成自签证和配置HTTPS访问
网络协议·http·docker·https·harbor
helloWorldZMY10 小时前
超文本传输协议(HTTP)与超文本传输安全协议(HTTPS)
网络协议·计算机网络·http·https
helloWorldZMY12 小时前
传输控制协议(TCP)和用户数据报协议(UDP)
网络协议·tcp/ip·计算机网络·udp
网络安全Ash12 小时前
深信服技术服务工程师(网络安全、云计算方向)面试题
网络·网络协议·安全·网络安全
全栈小酷Cool13 小时前
动态IP黑白名单过滤的设计与实现(下篇原理实现)
网络协议·tcp/ip·c#
ff_juju16 小时前
ESP8266 AP模式TCP客户端 电脑手机网络调试助手
网络·网络协议·tcp/ip