TCP和UDP的区别

TCP和UDP的区别:首先,两者都是传输层协议。区别一:TCP是面向连接的、可靠的的传输协议。UDP是无连接的网络传输协议。

面向连接即在正式收发数据之前,双方必须建立可靠的连接。一个可靠TCP连接的简历需要3次“对话”,也就是我们常说的“三次握手”。这里不详述三次握手。然后断开需要“四次挥手”。UDP是面向非连接的,所以在源端与收端通信之前,不需要建立连接。当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

区别二:TCP是面向字节流的,而UDP是面向数据报的。

面向数据报的传输方式是应用层交给UDP多长的报文,UDP就加上自己的头部后转发出去,即一次发送一个报文,所以应用层需要选择合适的报文大小。面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分的短一些再传送。若应用层一次只发送一个字节,TCP也可以等待有足够多的字节后再构成报文段转发出去。

区别三:TCP提供可靠的服务,UDP不保证可靠性。

TCP面向连接、需要确认(ACK)、具有流量控制(滑动窗口)、拥塞控制(慢开始、拥塞避免、快重传、快恢复),通过TCP传输的数据是无差错、无重复、无乱序、无丢包。而UDP无连接、没有流量控制、拥塞控制这些机制,不保证可靠交付。由于TCP提供的可靠性的这些服务,所以TCP头部相关的控制字节比较多,TCP头部一共20字节,而UDP头部只有8字节。基于可靠性,可以得知,TCP适合对可靠性要求高的业务,而UDP适合对可靠性要求不高的、实时性要求高的环境。举一个IP电话进行通话的例子。如果使用TCP,数据在传输过程中如果丢失,会被重发,这样会导致无法流畅地传输通话人的声音,从而无法正常交流。而采用UDP,数据丢失不会进行重发,也就不会有声音大幅度延迟到达的问题。即使有部分数据丢失,也只影响一小部分的通话。再比如,我们经常使用ping命令来测试两台主机之间通信是否正常,原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包到达的消息及时反馈回来,那么网络就是通的。qq也是使用UDP传送消息,所以有时候会出现收不到消息的情况。此外,在多播和广播通信中也使用UDP。

ps:虽然UDP是不可靠的,但是在一些应用场景下对可靠传输的要求不高的情况下,UDP协议具有更好的实时性,工作效率要比TCP高。同时,UDP的段结构要比TCP的段结构简单,能降低网络开销。

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值