TCP/UDP 区别

key:TCP是一种面向连接的、可靠的、字节流服务

   

1.面向链接:TCP面向链接,面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须通过三次握手先建立一个TCP连接。在一个TCP中仅有两方彼此通信,多播和广播不能用于TCP。UDP是不可靠的传输,传输前不需要建立链接,可以应用多播和广播实现一对多的通信。

 
2.可靠性:TCP提供端到端的流量控制,对收到的数据进行确认,采用超时重发,对失序的数据进行重新排序等机制保证数据通信的可靠性。而UDP是一种不可靠的服务,接收方可能不能收到发送方的数据报。

 
3.TCP是一种流模式的协议,UDP是一种数据报模式的协议。进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。TCP应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。TCP会有粘包和半包的现象。

 
4.效率上:速度上,一般TCP速度慢,传输过程中需要对数据进行确认,超时重发,还要对数据进行排序。UDP没有这些机制所以速度快。数据比例,TCP头至少20个字节,UDP头8个字节,相对效率高。组装效率上:TCP头至少20个字节,UDP头8个字节,系统组装上TCP相对慢。

 
5.用途上:用于TCP可靠性,http,ftp使用。而由于UDP速度快,视频,在线游戏多用UDP,保证实时性

 
对于第三点的理解。TCP可能发送100个“包”,而接收到50个“包”,不是丢“包”了,而是每次接受的“包”都比发送的多,其实TCP并没有包的概念。例如,每次发10个字节,可能读得时候一次读了20个字节。TCP是一种流模式的协议,在接收到的缓存中按照发送的包得顺序自动按照顺序拼接好,因为数据基本来自同一个主机,而且是按照顺序发送过来的,TCP的缓存中存放的就是,连续的数据。感觉好像是多封装了一步比UDP。而UDP因为可能两个不同的主机,给同一个主机发送,(一个端口可能收到多个应用程序的数据),或者按照TCP那样合并数据,必然会造成数据错误。我觉得关键的原因还是,TCP是面向连接,而UDP是无连接的,这就导致,TCP接收的数据为一个主机发来且有序无误的,而UDP可能是多个主机发来的无序,可能错误的。

 

 

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)都是传输层的协议,它们的主要区别在于可靠性、流量控制和拥塞控制。 1. 可靠性:TCP是一个可靠的协议,它通过三次握手建立连接,并在整个通信过程中维护数据的有序性和完整性。如果数据包丢失或损坏,TCP会自动重传缺失的数据,保证数据到达目的地。而UDP是无连接的,不保证数据的顺序和完整性,一旦数据包发送出去,就不再关心其是否到达或出错。 2. 流量控制和拥塞控制:TCP提供了流量控制机制,即接收端告诉发送端可以接收多少数据,防止发送方过快导致接收方无法处理。同时还有拥塞控制,当网络拥堵时,TCP会减慢发送速率。UDP则没有这些机制,数据发送的速度取决于应用程序,可能会造成网络拥塞。 3. 速度和开销:由于这些额外的确认、重传和控制信息,TCP通常比UDP更慢,但提供更强的可靠性。UDP的头部较小,适合对延迟敏感的应用,如实时音视频流和在线游戏UDP之所以不可靠是因为它牺牲了可靠性来换取更高的效率和更快的数据传输速度,适用于那些对数据包的完整性和顺序要求不高,但需要快速响应的情况,例如DNS查询、网络游戏和一些实时应用。然而,这种不可靠性也意味着如果数据包丢失,可能需要应用层自行处理错误检测和恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值