浅谈运输层协议

** 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务——(两台主机各自的进程在交换数据)。因此也只有主机的协议栈才会有运输层,路由器就只有网络层、数据链路层和物理层。**
在这里插入图片描述
运输层的两个主要协议:

UDP(用户数据报协议)

在这里插入图片描述

UDP只在IP的数据报服务之上增加了复用和分用以及差错检测的功能。
它的主要特点是:
(1)UDP是无连接的,在发送数据前不需要建立连接。
(2)UDP使用尽最大努力交付,不保证可靠交付
(3)UDP是面向报文的,即给它什么它就转什么。不会拆开也不会合并。
(4)UDP没有拥塞控制,这点很适合实时应用。
(5)UDP支持N对M的交互通信,N=1,2,3…,M=1,2,3…;
(6)首部开销小。

TCP(传输控制协议)

在这里插入图片描述

TCP的特点:
面向连接;每一条TCP连接只能有两个端点;提供可靠交付;提供全双工通信;面向字节流。

每一条TCP连接只能有两个端点,这个端点称为套接字(socket)或插口。
socket=(IP地址:端口号);
TCP连接::={socket1,socket2};

TCP实现可靠传输的两个协议——停止等待协议和连续ARQ(自动重传请求)协议。
最简单的停止等待协议:发送一个分组并备份直到收到对应的确认才发下一个分组并清除备份。
而如果超过规定的时间(设置超时计时器)还没有收到确认则会自动进行重传操作,这就是自动重传请求ARQ。
但这样一个一个发送分组的传输效率太低,并且由于要收到确认才能发送下一个分组,在分组的往返时间中,信道的数据传输大小只有一个分组的大小,导致信道利用率非常低。
为了提高传输效率,发送方不采用低效率的停止等待协议,而是采用流水线传输,其中使用了连续ARQ协议和滑动窗口协议。
确定一个窗口大小,将窗口大小的分组数量一次发出去,接受方采用累积确认的方式,在收到几个分组后,对按序到达的最后一个分组发送确认,收到确认窗口会向前滑动对应确认的分组数。
如果中间有分组丢失了,接受方只能对这个丢失的分组的前面几个分组发送确认。所以发送方需要对丢失分组及其后面几个分组进行重传。

TCP的拥塞控制

在某段时间,若对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫拥塞。

引起拥塞的原因有很多,并且很容易恶化,所以需要进行过拥塞控制——防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。

TCP进行拥塞控制的算法有4种,即慢开始,拥塞避免,快重传,和快恢复。

基于窗口的拥塞控制,发送方维持一个叫做拥塞窗口cwnd的状态变量,窗口大小取决于网络的拥塞程度,并且在动态变化,发送方让自己的发送窗口等于拥塞窗口。
控制拥塞窗口的原则,在网络没有出现拥塞的时候,增大拥塞窗口大小以便能发送更多的分组,但是如果有要出现网络拥塞的迹象时,就需要将拥塞窗口减少,以减少网络拥塞。
在这里判断网络拥塞的依据就是出现超时。

在这里插入图片描述
慢开始算法:主机开始发送数据不清楚网络负荷情况时,由小到大逐渐增大拥塞窗口。每经过一个传输轮次(一个往返时间),拥塞窗口就加倍。
拥塞避免算法:让拥塞窗口缓慢增大,经过一个传输轮次,就加一。
快重传算法:首先要求接收方即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认,一旦发送方一连收到3个重复确认就立即进行重传。

TCP的运输连接管理
3次握手建立连接:
在这里插入图片描述
为什么客户端最后还要发一次确认(即为什么是3次握手而不是2次握手)?这主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。
“已失效的连接请求”原来以为丢失的报文没有真正丢失,可能在某些网络结点长时间滞留了。
在正常情况下,客户端A发送第一次请求连接的报文真正丢失了,然后就会进行重传,而服务器B只会收到第二次重传的报文,丢失了的收不到。然后进行上面图中的操作,建立连接。
如果没有真正丢失的话,如果A进行了重传的话,服务器B也只是进行了2次确认之后按上面步骤建立连接。
但是如果客户端A在第一次没有收到B的确认然后放弃连接,不进行重传。而在后一点时间服务器B收到了迟来的第一次请求连接的报文,建立连接,一直等待放弃连接的客户端A,白白浪费服务器B的资源。
但是是3次握手的话,服务器B在对“迟来的第一次请求连接的报文”向客户端A发送确认,如果客户端A放弃连接,B收不到A的确认就不会建立连接。

4次挥手释放连接:
在这里插入图片描述
为什么最后还有等2MSL(最长报文段寿命)时间,理由有2个:

  1. 为了保证A最后发的确认报文能够到达B,如果中间丢失了这个确认报文,B就会因为超时没有收到确认而重传释放连接的报文。
  2. 为了防止上面说的“已失效的连接请求”出现在本连接中,在A发完最后一个确认报文后,再经过2MSL时间,就可以使本连接持续时间内产生的所有报文段都从网络中消失,这样就可以使下一个新的连接中就不会出现这种旧的连接报文。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值