TCP,UDP优缺点以及区别

本文详细介绍了TCP协议中的粘包和拆包现象,以及这两种情况的原因。粘包是指接收端收到的数据包中包含了多个发送端的数据包信息,而拆包则是接收到的数据包不完整或有多余部分。为了解决这些问题,提出了四种策略:禁用Nagle算法、设定数据包长度、使用分隔符和在数据包前添加长度字段。这些方法有助于确保数据的正确传输和解析。
摘要由CSDN通过智能技术生成

https://www.cnblogs.com/williamjie/p/9390164.html

此外:
TCP会发生粘包拆包,UDP则不会。

粘包现象:
接收端收到一个数据包中包含了发送端发送的两个数据包的信息。(主要产生原因是因为接收方不知道消息之间的界限,不知道数据包的大小,不知道一次性应该提前多少个字节的数据)

[Packet1,Packet2]

拆包现象:
接收端收到两个数据包,但这两个数据包可能不完整或者多出一块。

[Packet1-1] . . . . . . . . . . . . . . [Packet1-2,Packet2]
[Packet1,Packet2-1] . . . . . . . [Packet2-2]

如何解决粘包:
https://www.cnblogs.com/cangqinglang/p/11503057.html
1、接收端关闭Nagle算法
(Nagle算法是为了减少广域网的小分组数目,从而减小网络拥塞的出现;)
https://blog.csdn.net/e21105834/article/details/93185784
2、约定数据包长度
3、使用分隔符
4、在每个数据包的开头利用2个或者4个字节填充整个数据包的长度,这样接收端可以先接收2个或者4个字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值