【网络】TCP和UDP的区别

本文详细介绍了TCP和UDP两种传输层协议的区别。TCP是面向连接的,通过三次握手建立连接,确保数据安全可靠传输,而UDP则是面向非连接的,不保证数据传输的可靠性。TCP遵循Nagle算法,可能导致粘包问题,而UDP则不会。虽然TCP传输速度相对较慢,但现代优化后与UDP速度差距不大。此外,TCP是点对点连接,而UDP支持一对一、一对多和多对一的通信模式。TCP首部开销较大,UDP则更轻量级。

1.TCP面向连接,UDP面向非连接(发送数据前不需要连接)

        面向连接是通信前,确认双方链路是否可达(三次握手和四次挥手)

        面向非连接,通信前不去确认链路是否可达

2.TCP提供安全可靠的数据传输服务,UDP不保证传输数据的可靠性

        TCP在数据传输会确认连接与信息是否正确收到,保证数据无差错、不丢失、不重复

        UDP收到什么数据就传递什么数据,不会备份数据,发送数据也不关心对方是否正确接收到了数据

3.TCP面向字节流,UDP面向报文

        字节流是因为TCP遵循Nagle算法,会将数据分组,会造成粘包

                只有上一个分组得到确认,才会发送下一个分组

                手机出多个小分组,在一个确认来时一起发送

        面向报文是将同一种数据包一起打包到IP层,不会出现TCP中两种不同的数据包一起发送到IP层的问题,所以不会出现粘包

4.TCP传输速度慢,UDP传输数据快(现在TCP不比UDP 慢多少)

5.TCP连接只能是点对点的,UDP可以一对一,一对多,多对一

6.TCP首部开销20字节,UDP首部开销小,只需8字节

参考文章

TCP/IP协议之传输层:TCP/UDP协议详解(一)_一个Android菜鸟的博客-优快云博客

面向字节流与面向报文的通俗解释_li123_123_的博客-优快云博客_字节流和报文

什么是TCP粘包?怎么解决这个问题_渔溪大王的博客-优快云博客_tcp粘包

### 计算机网络TCP UDP 的主要区别 #### 面向连接与否 TCP 是一种面向连接的协议,这意味着在两个端点之间建立可靠的通信之前,必须先完成三次握手过程。相比之下,UDP 不需要事先建立连接即可发送数据报文[^1]。 #### 数据传输可靠性 对于依赖于高可靠性的应用程序来说,TCP 提供了错误校验、丢失重传等功能以确保消息按序到达接收方;而 UDP 则不具备这样的保障机制——它只提供基本的数据完整性验证而不做任何额外的努力去纠正可能出现的问题[^5]。 #### 流量控制与拥塞管理 由于实现了滑动窗口等技术手段来进行流量调节并防止网络拥堵现象的发生,因此当遇到较差质量链路状况时,TCP 可自动降低其传送速率从而维持稳定的服务性能表现。然而,UDP 并未内置类似的特性,所以在恶劣环境下容易造成分组丢失等问题出现[^3]。 #### 应用场景适应度 鉴于上述特点的不同之处,在实际部署过程中往往依据具体需求选取合适的底层支撑方案:如果追求高效能且允许一定程度上牺牲准确性,则倾向于采用后者(即用户数据报协议)作为首选项之一;反之亦然,凡是涉及到文件下载/上传操作或是远程登录之类的任务通常都会优先考虑前者(也就是传输控制协议),因为这类业务对精准性连续性有着较高要求[^4]。 ```python import socket def create_tcp_socket(): """创建一个TCP套接字""" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) return sock def create_udp_socket(): """创建一个UDP套接字""" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return sock ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值