全国直销电话:4006-854-568
IT-technology
以人为本,众志成城,以“用户至上”.“服务上乘”为原则,
追求产品和服务高质量,努力实现与客户之间真诚有效的沟通,
不断地圆梦、奔跑与腾飞。
新闻动态   NEWS
UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景-北京赛维博信科技发展有限公司
来源:本文摘自网络,如有侵权请联系删除 | 作者:svbx001 | 发布时间: 2022-12-26 | 1941 次浏览 | 分享到:

添加一行记录(1049576=1024*1024=1M)

net.core.rmem_max=1048576

保存之后输入

/sbin/sysctl -p

使修改的配置生效

此时可以通过 sysctl -a|grep rmem_max 来看配置是否生效.

生效之后可以再次运行程序来 getsockopt 看缓冲区是否变大了,是否还会出现丢包现象了

楼主使用的是 方法2+方法3 双管齐下,已经不会出现丢包现象了,如果还有不同程度的丢包 可以通过方法三种继续增加缓冲区大小的方式来解决。

五、UDP 实现对方百分百收到数据

1、UDP 致命性缺点:

UDP 是无连接的,面向消息的数据传输协议,与TCP相比,有两个致命的缺点

一是:数据包容易丢失
二是:数据包无序

2、解决方案 - 回复 + 重发 + 编号 机制:

1>、分析:

要实现文件的可靠传输,就必须在上层对数据丢包和乱序作特殊处理,必须要有要有丢包重发机制和超时机制。

常见的可靠传输算法有模拟 TCP协议,重发请求(ARQ)协议,它又可分为连续ARQ协议、选择重发ARQ协议、滑动窗口协议等等。

如果只是小规模程序,也可以自己实现丢包处理,原理基本上就是给文件分块,每个数据包的头部添加一个唯一标识序号的 ID 值,当接收的包头部 ID 不是期望中的 ID 号,则判定丢包,将丢包 ID 发回服务端,服务器端接到丢包响应则重发丢失的数据包。

模拟 TCP 协议也相对简单,3次握手的思想对丢包处理很有帮助

2>、回复 + 重发 + 编号 机制

1)接收方收到数据后,回复一个确认包

如果你不回复,那么发送端是不会知道接收方是否成功收到数据的。

比如:A 要发数据 “{data}” 到 B,那 B 收到后,可以回复一个特定的确认包 “{OK}”,表示成功收到。

 

服务热线

1391-024-6332