传输层协议UDP和TCP

UDP和TCP的比较:

UDP TCP

UDP是无连接的

UDP提供不可靠服务

UDP同时支持点到点和多点通信

UDP是面向报文的

UDP首部8个字节

TCP是面向连接的

TCP提供可靠服务

TCP只能进行点到点通信

TCP是面向字节流的

TCP首部20个字节

TCP连接管理:

连接建立(三次握手):

扫描二维码关注公众号,回复: 125376 查看本文章

注意:TCP报文首部SYN和FIN置位的时候需要消耗一个序列号,而仅有ACK置位时不需要消耗序列号。

连接释放(四次握手):

TCP可靠传输

TCP是可靠的传输层协议,主要通过确认机制和超市重传机制实现可靠传输。

确认机制:

连接的建立和释放用的就是确认机制。

TCP和确认是对接收到的最高序号表示确认。但返回的确认序号是已收到的数据的最高序号加一。也就是说确认序号表示下次希望收到的数据字节的序号。确认具有累计确认效果。

超时重传机制:

超时重传机制最关键的因素的重传定时器的定时设置,但确定合适的往返时延RTT是相当困难的事情。

TCP采用了一种自适应算法。算法思想描述如下:记录每一个报文段发出的时间以及收到相应的确认报文段的时间,这两个时间差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得到报文段的平均往返时延RTT。

  • RTT新值 = RTT样本(第一次测量)
  • RTT新值 = α*RTT旧值 + (1-α)*新的RTT样本

TCP有三种定时器:重传定时器、持续定时器、保活定时器。

TCP流量控制

通过接收方的接收窗口rwnd实现。在通信过程中,接收方可以根据自己的接受情况动态地调整自己的接收窗口,然后告诉发送方,让发送方的发送窗口和自己的接收窗口一致。

TCP拥塞控制

拥塞控制的基本功能是避免网络发生拥塞。TCP/IP的拥塞控制机制主要集中在传输层实现。拥塞控制的前提条件是网络能够承受现有的网络负荷。

拥塞控制通过拥塞窗口cwnd实现。注意:发送窗口的取值依据拥塞窗口和接收窗口中的较小值,即Min[rwnd,cwnd]。发送方控制拥塞窗口的原则是:只要网络没有出现阻塞,拥塞窗口就可以再大一些;但只要出现阻塞,拥塞窗口就减小一些。

为了更好的进行拥塞控制,用到四种技术:慢启动、拥塞避免、快速重传、快速恢复。

  • 慢启动:在TCP刚建立连接或当网络发生拥塞超时时,将拥塞窗口设置为一个报文段大小,并且当cwnd<=ssthresh时,指数方式增大cwnd。
  • 拥塞避免:当cwnd>=ssthresh时,为避免网络发生拥塞,进入拥塞避免算法,这时线性增大cwnd(每次增大一个报文段)。当网络发生拥塞时,就要把门限值ssthresh设置为出现拥塞时发送方cwnd的一半(但不能小于2),然后把拥塞窗口重置为1,执行慢启动算法。
  • 快速重传:发送方如果连续收到对同一报文段三个重复确认ACK, 则立即重传该报文段,而不必等重传定时器超时后重传。
  • 快速恢复:当采用快速重传算法时,直接执行拥塞避免算法。这样可以提高传输效率。

猜你喜欢

转载自my.oschina.net/HuoQibin/blog/1631921