传输层

作者: 源来是你啊 | 来源:发表于2019-09-28 15:28 被阅读0次

传输层

传输层(Transport Layer)是ISO OSI协议的第四层协议,实现端到端的数据传输。该层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求;当网络层服务质量较好时,它只用很少的工作。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。

传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控、分段/重组和差错控制。一些协议是面向链接的。这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。

1.传输层作用

  • 传输层实现应用进程间的端到端(end-to-end)通信

  • 向应用层提供通信服务

2.多路分解与复用

  • 多路复用:所有应用进程的数据通过传输层传输到IP层;

  • 多路分解:传输层收到的数据交付给相应的应用进程。

3.用户数据报协议UDP

端到端的、尽力而为的、无连接的数据报传输服务 1.无连接的 2.尽最大努力交付,即不保证可靠交付 3.面向报文的(在IP的功能上简单扩展了端到端) 4.没有拥塞控制 5.支持一对一、一对多、多对一和多对多的交互通信(需要组播的通信都是建立在UDP之上)

2019-06-08_210153.png

4.传输控制协议TCP

端到端的、可靠的、面向连接的字节流服务 a).面向连接:先建立逻辑连接,进行双向数据流传输,通信结束后撤销连接 b).面向字节流 c).点对点的全双工通信 d).可靠传输:对一个连接上传输的每个字节编号,通过接收确认和重传来保证可靠传输 c).流量控制:防止发送方发出的数据超出接收方的接收能力

2019-06-08_210420.png

多路复用:源、目的端口 连接管理:序号、确认号、SYN、FIN 可靠传输:序号、确认号 流量控制:接收窗口 拥塞控制:未在TCP首部中体现(序号、确认号、接收窗口)

4.1.连接管理

  • 每条TCP连接是一对点到点的字节流

  • 每条TCP连接者两个端点,即套接字(sokect)={IP : port}

  • 每条TCP连接由两个端点唯一标识,TCP连接={socket1, socket2} = {{IP1 : port1}, {IP2 : port2}}

  • TCP连接有3个阶段:连接建立、数据传输、连接释放

1)TCP连接建立的目的

①使通信双方确知对方的存在 ​ ②双方确定自己的初始序列号,并通知对方 ​ ③允许双方协商一些参数(最大报文长度、窗口大小等) ​ ④对传输实体资源进行分配

2)TCP连接建立的方式

采用客户端服务器方式(C/S),主动发起连接建立的应用进程叫做客户端,被动等待连接建立的叫服务器端。

3)连接建立(三次握手)

①服务器进程B被动打开连接,进入LISTEN(收听)状态,等待客户端发出请求 ​ ②客户进程A主动打开连接,向B发送连接请求报文段(报文段不挟带数据),SYN=1,序号=x,进入SYN-SENT(同步已发送)状态 ​ ③服务器进程B收到请求后,向A发送确认报文段(报文段不挟带数据),SYN=1,ACK=1,确认号=x+1,序号=y,进入SYN-RCVD(同步收到)状态 ​ ④客户进程A收到确认后,向B发送确认报文段(报文段可以携带数据,不携带数据时不消耗序号,下一个序号依然是x+1),ACK=1,确认号=y+1,序号=x+1,进入ESTABLISHED(已建立连接)状态,B收到确认后,也进入ESTABLISHED状态

2019-06-08_211004.png

为什么A需要向B发送最后一个确认报文段:为了防止“已失效的连接请求报文段”突然又传到B发生错误,以至于B一直等待A发送数据,B的资源被浪费。

4)连接释放(四次挥手)

①A,B都处于ESTABLISHED状态; ​ ②客户进程A主动关闭连接,向B发送连接释放请求报文段(报文段不挟带数据),FIN=1,序列号=u,进入FIN-WAIT-1(终止等待1)状态; ​ ③B收到A的连接释放报文段后,应答确认,ACK=1,确认号=u+1,序号=v,进入CLOSE-WAIT (关闭等待)状态,B仍然可以向A发送数据,A进入FIN-WAIT-2(终止等待2)状态; ​ ④若B已经没有向A的数据,其应用进程通知TCP连接释放,B向A发送连接释放报文段,FIN=1,ACK=1,确认号=u+1,序号=w,进入LAST-ACK(最后确认)状态; ​ ⑤A收到B的链接释放报文段后,应答确认,ACK=1,确认号=w+1,序号=u+1,进入TIME-TIME-WAIT(时间等待)状态,B收到A的确认后,进入CLOSED状态

2019-06-08_211029.png

A必须经过时间等待计时器设置的时间2MSL(默认2分钟)后,进入CLOSED状态:确保A发送的最后一个ACK报文段能够到达B;防止“已失效的连接请求报文段”出现在本连接中。

4.2可靠传输

  • 发送方的TCP:维护一个发送缓冲区

  • 维护3个指针:LastByteAcked、LastByteSent、LastByteWritten

  • 发送窗口=min(通知窗口,拥塞窗口)

  • 累积确认(Cumulative ACK) :对按序到达的最后一个报文段进行确认

  • 选择确认(Selective ACK) :确认接收到的不连续的数据块的边界(使用首部的SACK选项,不影响确认号字段的使用)

2019-06-08_211136.png

4.3.流量控制

目的:为了防止发送方给慢接收方发数据造成接受崩溃,缓冲区溢出 原理:接收方通知发送方自己的接受窗口大小,发送方的发送窗口≤接收方的接受窗口

问题:

B向A发送了零窗口报文段后,B的接受缓存有了一些存储空间,于是B向A发送了rwnd=400的报文段,然而报文段在传送过程中丢失,这样A一直等待B发送的非零窗口通知,B一直等待A发送数据,从而形成死锁局面。

解决:

TCP为每一个连接设置一个持续计时器,只要TCP链接一方收到零窗口通知,就启动持续计时器,计时器到期,发送零窗口探测报文段,而对方就在确认这个探测报文段时给出现在的窗口值,①如果窗口仍然是零,那么重新设置持续计时器;②否则死锁的僵局就可以打破。

4.自适应重传

1)超时重传

报文段的往返时间:RTT 加权平均往返时间:RTTS RTT的偏差加权平均值:RTTD 超时重传时间:RTO RTTS = (1 - α) * RTTS + α * 新的RTT样本值 (α一般为1/8) RTTD = (1 - β) * RTTD + β * | RTTS - 新的RTT样本值 | (β一般为1/4) RTO = RTTS + 4 * RTTD

Karn算法: ①每次超时重传一个报文段时,停止计算新RTT样本值 ②每次超时重传一个报文段时,就把超时重传时间RTO增大y倍(一般为2倍) ③当不发生报文段重传时,才计算RTTS和超时重传时间RTO

2)快速重传

原因:超时重传作为TCP最基本的重传机制,效率较低。

2019-06-08_212845.png

超时的粗粒度实现方法导致连接在等待一个定时器超时时,很长一段时间连接无效。

基本思想: ①接收方:当报文段到达,立刻回复ACK,即使该序号已被确认过 ②发送方:收到一个重复ACK(同一个确认的再一次重传称为重复确认),就知道接收方必定收到乱序到达的报文段,表明其前面的分组可能丢失。收到3个重复ACK时,立刻触发重传。


2019-06-08_212923.png

5.拥塞控制

1)窗口大小

MaxWindow = min (cwnd, AdvertisedWindow) 拥塞窗口cwnd (Congestion Windows):拥塞控制算法决定,可以同时发出的最大字节数以防止造成网络拥塞 通知窗口 (AdvertisedWindow):接收方决定,可以同时发出的最大字节数以防止超出接收方的接收能力

2)拥塞控制算法

①慢启动 把初始拥塞窗口 cwnd 设置为不超过2至4个SMSS(最大报文段长度),在每收到一个对新的报文段的确认后,把cwnd增加1个 SMSS 的数值数(每经过一个传输轮次,cwnd就加倍) 设置一个慢开始门限ssthresh 当cwnd < ssthresh时,使用慢开始算法 当cwnd ≥ ssthresh时,使用拥塞避免算法

2019-06-08_213007.png

②拥塞避免(加法增大):每经过一个往返时间RTT把发送方的cwnd加1,使得cwnd慢性增加 ③快重传(乘法减小):收到3个重复ACK立即触发重传 ④快恢复(在快重传之后)

  1. ssthresh减小为当前cwnd的一半:ssthresh = cwnd / 2

  2. 新拥塞窗口 cwnd = 新的 ssthresh

  3. 执行拥塞避免 (AIMD),使cwnd缓慢线性增大

相关文章

  • 传输层

  • 传输层

    摘自https://www.cnblogs.com/whgk/p/6118206.html 通过mac地址可以找到...

  • 传输层

    传输层的功能:传输层寻址和端口;无连接服务和面向连接服务 UDP协议:UDP数据报,UDP校验 TCP段:TCP连...

  • 传输层

    TCP和UDP TCP:提供可靠的通信运输。是面向连接的,可靠的流协议。它充分实现了数据传输时的各种控制功能,可以...

  • 传输层

    传输层需要完成的功能 为网络应用程序提供接口 为应用程序提供访问网络的途径 多路复用/多路分解机制 多路复用表示从...

  • 传输层

    在网络层之上,是传输层。由于网络层提供的尽力而为的服务,不保证数据传输的准确性,于是传输层提供了保证准确性的 TC...

  • 传输层

  • 传输层

  • 传输层

    传输层 传输层是OSI模型中第 4 层。 传输层的主要作用是直接向在不同主机上运行的应用程序进程提供通信服务。 传...

  • 传输层

    ICMP UDP TCP TCP的三次握手 TCP四次挥手 TCP状态机Tcp_status_map.jpg

网友评论

      本文标题:传输层

      本文链接:https://www.haomeiwen.com/subject/lqwquctx.html