tcp和udp的理解

本文深入解析TCP与UDP在网络数据传输中的关键区别。TCP通过三次握手建立连接,确保数据的可靠传输,即使在网络不稳定的情况下也能自动重传丢失的数据包。而UDP则侧重于速度,不保证数据包的送达,适合实时应用如视频通话。文章还讨论了两种协议在包拆分、重组和粘包处理上的不同机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从TCP与UDP的区别讲起
网络数据经过路由器,如果数据很小,没有超过路由器的封包大小,就会直接直接经过路由器到达下一个路由器,一层一层最终到达目的地
如果数据很大,这里指一个发送,超过了路由器的封包大小,那么路由器就会把这个数据包进行拆分,比如拆分成A B
C三个包,这三个包都没有超过路由器的封包大小,到达下一个路由器的时候,TCP与UDP的区别就来了:
TCP收到A的时候,会resp通知源路由器,A到达,B C包依然如此,如果由于网络的各种原因,目的路由收到了A
C,B没有收到,TCP会要求源路由把B包重新发一次
,直到ABC包目的路由都接受到了,那么目的路由把ABC包重新组成起始包,继续往下一个路由发送
,这就是TCP安全连接的由来,只要发送,我就能保证目的一定能收到(网络断开能检测到)
UDP则不是这样,如果ABC包拆分之后,目的路由只收到AC
,经过检测,B没有被收到,那么此包就会被当作不完整,直接被丢弃。由于UDP没有resp的通知过程
,所以,UDP的传输效率要高一些,当然安全性也低一些
由上面的这些可以得出结论:UDP是绝对不会被粘包,因为路由器收到的只会是完整数据才会继续下发,什么粘包处理完全没有必要
一般网络编程时候,也会定义数据包头,包体 TCP接收数据的时候,可以先接收包头进行安全验证,通过继续接受包体,不通过直接断开连接
UDP接受则没有办法这样做
,你再大的一个数据,一个RECV,也是直接接受,不能说我先接受多长,这样是不可能的(不过一般大文件数据,都不会用UDP这种不安全传输)

---------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值