当听到TCP与UDP的区别时,请保持笑容;

 

前言

  • 这篇文章,带你全面解读TCP与UDP的一点一滴;
  • 当被问到TCP与UDP时,如何回答才比较好。
  • 老规矩的暴打

 

一、UDP是什么?

UDP协议的全称是用户数据报协议,有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的

UDP的特点:

(1)面向无连接:UDP是不需要和TCP一样在发送数据前进行三次握手建立连接,并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

(2)有多种类型的播功能:UDP是支持一对多,多对多,多对一的传输方式。对应一下就是UDP提供单播、多播、广播的功能。

(3)面向报文:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。

(4)不可靠性:UDP并不保证可靠传输,它只是尽最大努力交付的一种协议,UDP只会把想发的数据报文一股脑的丢给对方,并不在意数据有无安全完整到达。UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

(5)头部开销小,传输数据报文效率高哦:UDP 头部的数据源端口(可选字段)和目标端口,数据报文的长度,数据报文的检验和。因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的。


二、TCP是什么?

TCP协议是一种面向连接、可靠、基于字节流的传输层通信协议啊。

TCP的特点:

(1)面向连接:在发送数据之前先在两端建立连接,就是我们的三次握手啦。

(2)单播传输:每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

(3)面试字节流:以字节流的方式进行传输数据报文。

(4)可靠传输:TCP不像UDP那么浪哦,它是保证数据报文是可以交到对方手上,在传输过程中没了,还是会重传的哦。

(5)流量控制:A计算机向B计算机发送数据,A计算机发送太快啦,B计算机处理不过来时就会告诉A计算机让其慢一点。

(6)拥塞控制:A计算机向B计算机发送数据的过程中,某路段网堵了,那TCP有堵塞避免的机制。

(7)全双工通信:TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。

 感性的看下TCP传输的图

 


三、TCP与UDP的使用场景

  • TCP适合对传输效率要求低,但准确率要求高的应用场景,因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。比如万维网(HTTP)、文件传输(FTP)、电子邮件(SMTP)等。
  • UDP适合效率要求相对高,对准确性要求相对低的场景。举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。


四、TCP的流量控制与拥塞控制

(1)TCP如何进行流量控制?

  • 流量控制就是让发送方的发送速率不要太快,即要让接收方来得及接收,也不要使网络拥塞。
  • 利用滑动窗口的机制可以方便地在TCP连接上实现流量控制。接收端会告诉发送端窗口大小,这是在报文里面可以加载的信息。

(2)TCP的拥塞控制?

  • 拥塞控制是全局性的过程,涉及到所有的主机、所有的路由器。以及与降低网络传输性能有关的所有因素。
  • 主要涉及到的算法有:慢开始、快重传、快恢复、拥塞避免
  • 拥塞窗口的原则:只要网络没有出现拥塞,拥塞窗口就再大些,出现拥塞了,拥塞窗口就小一些。

我们来看一个实例:

(1)每一个轮询(往返时间),拥塞窗口大小会加倍增加。比如:1,2,4,8,16....,该阶段我们称为慢开始阶段

(2)显然拥塞窗口是不能无限增大的,拥塞窗口都会有一个门限大小(默认为16),当慢开始到达门限大小的时候,就不在是加倍增长了,而是每一个轮询拥塞窗口大小都加1加1的增大,比如16,17,18,19...,该阶段我们称为拥塞避免。其实拥塞避免就是把窗口控制为线性增长,这让网络不易拥塞。

(3)我们先来看看快重传算法的定义:快重传算法要求接收方每收到一个失序的报文段后就立刻发出重复确认。这可以让发送方早点知道有报文段没有达到。

(4)当发送端收到连续三个重复确认时,我们就认为是网络拥塞了,就执行“乘法减少”策略,设置窗口门限大小为当前窗口的一半,注意哦这时是窗口大小是从门限开始,进入拥塞避免状态。这个阶段就是快恢复算法

五、凭什么TCP可以可靠传输?

根本原因:确认和超时重传机制,数据报文是基于序号确认的。

发送端会一直等待接收端发送的确认信息,等待一段时间然后重传(超时重传

确认丢失

 我们可以看到这样的停止等待协议的优点简单,缺点是信道利用率太低了,因为我们要等上一个信息的确认消息到了,才可以发送下一个。

改进方法:滑动窗口流水线传输,连续发送多个分组,不必每发送一个分组就停下来等待对方确认。

当收到1的确认报文时,我们来看看窗口的移动。 

 

  • 发送端维持发送窗口,比如上图被框的序号,被框住的可以不等待连续发送。
  • 接收方一般是采用累积确认的方式,接收方收到数据包时是积累一些后,在发送确认报文。比如,接收方收到1,2,3,4号报文,那接收方会给一个4号的确认报文给发送方,这表示4号之前的报文都确认收到了。

 


总结

当被问到TCP与UDP的区别时,回答的步骤:

(1)露出胜利的微笑,yep。

(2)讲UDP和TCP的特点。

(3)讲UDP和TCP的使用场景。

(4)讲TCP的流量控制,拥塞控制,超时重传。

致命4连击,怕了怕了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值