数据发一半,网络就异常了,应用层能收到一些数据吗?

本文探讨了在网络异常情况下,UDP和TCP协议如何处理数据传输。UDP不分包、不重传,若数据分片未全部接收,应用层可能收不到数据。而TCP具有分段和重传功能,能确保数据的有序传输,即使部分分片丢失,TCP会通过重传保障数据完整性。
摘要由CSDN通过智能技术生成

数据发一半,网络就异常了,应用层能收到一些数据吗?
不一定。
如果传输层采用的是UDP,UDP是不分包,不组包,不重传的。UDP收到应用的发送请求,直接将数据包加上UDP头后,丢给IP层。IP层是会分片,组片。IP层根据MTU将数据分片传送,IP层也不重发。接收方收到IP片后,在IP层进行组片,如果组成功,就丢给传输层;如果组失败,就丢弃这个垃圾包。所以在UDP传输下,如果UDP丢给IP层的数据很大,分片后,传输一半网络异常后,接收方的IP层就会把收到的一片片丢弃,导致传输层收不到数据,应用层就收不到了。如果UDP传给IP层是多个数据包,在网络异常时,接收方已经组成功一些,那么应用层就能收到一些数据。

如果传输层采用的是TCP协议,TCP具有分段和重传功能。如果TCP丢给IP一包很大的数据,接收方IP层没有组包成功,接收方传输层也收不到数据,后续需要靠发送方重发。如果TCP分多包给IP,情况也类似于UDP场景,接收方IP层组片成功的,都收到了,组片不成功的,靠TCP重发。TCP层根据序号,需要将序号排序好给应用层,如果第一个序号就没有,则也无法给应用层。

如下是之前我看过两遍的一段描述,后来才明白其中含义,后文整理有其它网友详细说明。

分片分为两种: 一种是MTU,MTU是链路层的最大传输单元,是链路层中的网络对数据帧的一个限制。 一个IP数据报在以太网中 传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值