TCP协议与UDP协议的区别
程序员文章站
2022-07-10 13:55:16
...
1.TCP协议
TCP:传输控制协议(Transmission Control Protocol)
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,位于计算机网络OSI模型中的IP层之上,应用层之下的中间层,即传输层。
当应用层向TCP层发送数据流时,TCP则把数据流分割成适当长度的报文段,之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传
2.UDP协议
UDP:用户数据报协议(User Datagram Protocol)
UDP是一种无连接的、不可靠的协议。在OSI模型中,位于计算机网络OSI模型中传输层,处于IP协议的上一层。提供面向事务的简单不可靠信息传送服务。
对于来自应用层的数据包,直接加上UDP报头然后传送给IP层。UDP头部中有一个校验和字段,可用于差错的检测,但是UDP是不提供差错纠正的。此外IPV4不强制这个校验和字段必须使用,但IPV6是强制要求使用的。
它不提供数据包分组、组装和不能对数据包进行排序,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
它的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据
3.TCP与UDP区别
1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3.TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4.TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5.TCP工作效率比UDP低,UDP具有较好的时实性,适用于对高速传输与时实行有较高的通信或广播通信
6.TCP对系统资源要求较多,UDP对系统资源要求较少。TCP首部有20个字节,UDP的首部只有8个字节,开销小。
7.TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
4.为什么UDP有时比TCP更有优势?
UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。
1.网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。
2.基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响
上一篇: python中的tcp协议
下一篇: python爬虫re模块
推荐阅读
-
Linux UDP socket 设置为的非阻塞模式与阻塞模式区别
-
第二十七章 网络通信协议、UDP通信、TCP通信
-
Android编程使用HTTP协议与TCP协议实现上传文件的方法
-
Android编程使用HTTP协议与TCP协议实现上传文件的方法
-
基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
-
TCP/IP协议中三次握手四次挥手的原理及流程分析
-
基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
-
.Net WInform开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用
-
Python实现TCP/IP协议下的端口转发及重定向示例
-
Python实现TCP协议下的端口映射功能的脚本程序示例