【计算机网络】-传输层-传输服务的要素

【计算机网络】-传输层-传输服务的要素

传输服务

通过建立连接的两个传输实体之间所用的传输协议来实现的
必须解决差错控制、分组顺序、流量控制等问题(指面向连接传输服务)

传输协议和数据链路层协议的区别

传输层需要显式地给出目的端的地址
传输层初始连接复杂
传输层源端和目的端之间的子网具有存储能力
传输层管理大量动态变化的连接,和数据链路层的数据缓冲和流量控制具有不同的处理方法

传输层的编址

  • 传输层添加了TSAP
  • 多个客户端和服务器可以在具有单个网络(IP)地址的主机上运行
  • TSAP是TCP / UDP的端口

建立连接

  • 网络可能丢失、重复包,特别是延迟的重复包的存在,导致传输层建立连接的复杂性
  • 三次握手方案解决了由于网络层会丢失、存储和重复包带来的问题


补充:https://blog.csdn.net/Handoking/article/details/93738231

关键问题
即使包可能丢失,损坏,延迟或重复,也要确保可靠性
不要将旧的或重复的数据包视为新数据包
使用ARQ和校验和进行丢失/损坏

方法:

  • 不要在2T = 240秒的MSL(最大段生命周期)的两倍内重用序列号
  • 建立连接的三向握手
  • 使用足够大的序号空间,以便即使以全速率发送时也不会换行,时钟(高位)提前并保持崩溃状态

释放连接

不需要连接的时候,传输层的实体必须将它释放

释放连接的方式

不对称方式

任何一方都可以关闭双向连接,一方释放连接,整个连接断开,存在丢失数据的危险,当链接建立之后,主机1发送一段,它正确的到达了主机2,然后主机1发送了另外了一段,不幸的是,主机2在第二段到达之前发出了Disconnect端,结果这个连接被释放了,这样的话数据丢失了。

对称方式

每个方向的连接单独关闭,双方都执行DISCONNECT才能关闭整条连接。
比如主机1对说我已经完成任务了,你也完成任务了吗?主机2说我也完成了,再见,咱们俩可以正常释放连接了。

每个方向单独释放,互不影响,但是对称式连接释放的方法有时不能正确地工作,这个情况的例子就是两军对垒问题。

两军对垒问题

两军对垒,两只蓝军围困白军于峡谷之中。
任何一只蓝军单独向白军发起进攻都会导致战役失败,唯有蓝军同时进攻才可以打败白军。
这个时候两只军队同时发起进攻就很重要。
如何确保两只军队同时发起进攻?
蓝军A派 一个通讯员去通知蓝军B在晚上10.发起攻击,这个时候蓝军B收到了通知。然后让通信员去告诉蓝军A,我收到通知了。
这个时候通信员在回去的途中可能会被老虎吃了,然后蓝军A就无法知道蓝军B是否收到了信息。蓝军A断然不敢发动攻击。
退一步讲,蓝军A收到了收到了蓝军B的回复。但这个时候蓝军B并不知道蓝军A有没有收到它的回复。他可能就会在心里寻思,A到底有没有收到我的信息啊,我该不该发起攻击啊。以此类推,并没有一个方式能够完全确定双方都收到了信息。

如何解决的?在实际的通信过程中,使用三次握手 + 定时器的方法释放连接在绝大多数情况下是成功的

学习链接:https://blog.csdn.net/O9A0MA/article/details/90731748

连接释放的四种情况

1.正常三次握手的情况

  • 用户发送一个DR段(DISCONNECTION REQUEST)来启动释放连接的过程
  • 当该段到达对方,接收端也发回一个DR段,并启动一个计时器,设置计时器的目的是防止DR丢失
  • 当这个DR到达的时候,最初的发送方也会发回一个ACK段,并且释放连接,最后当ACK返回后,接收端也释放连接。

释放连接代表什么?
传输实体将该传输实体有关该连接的信息从它的内部表中删除,并且通知该连接的所有者,这个动作与传输原语发出一个DISCONNECT原语有所不同。

2.最后一个ACK丢失的情况
该情况是通过一个计时器来进行补救,如果计时器超时,无论如何连接都要被释放

3.响应DR丢失的情况
发送释放连接的用户接受不到期望的相应,所以它将超时,于是会尝试再次尝试释放连接,重新发送DR,请求接受方相应。

4.响应和随后的DR都丢失
最后一个场景和C中相同,但是由于丢失段的原因,所有的重传DR都尝试失败了,经过N次重试之后,发送方放弃了并释放连接,于是接受方由于超时最后放弃了

差错控制和流量控制

差错检测
传输层采用端到端的校验机制

流量控制
传输层利用可变滑动窗口协议来实现流控

缓存
如果网络层服务是不可靠的,发送方的传输层实体必须缓存所有连接发出的TPDU,而且为每个连接单独做缓存,以便用于错误情况下的重传
接收方的传输层实体既可以做也可以不做缓存

误差控制

理论上是一个滑动窗口(来自数据链路层),带有校验和以及重传,传输层采用端到端的校验机制

流控制和缓冲

传输层利用可变滑动窗口协议来实现流控

发送方/接收方的缓冲区管理
问题:数据在不同时间进出网络和应用程序
窗口告诉发送方在接收方的可用缓冲区制作可变大小的滑动窗口

缓冲

如果网络层服务是不可靠的,发送方的传输层实体必须缓存所有连接发出的TPDU,而且为每个连接单独做缓存,以便用于错误情况下的重传接收方的传输层实体既可以做也可以不做缓存。

不同的缓冲策略:交易效率和复杂性

传输层中的流控制问题和数据链路层中的情形相似与不同

相似:
相似都需要在每个连接上使用滑动窗口或者其他的方案来避免快速发送方淹没掉一个慢速的接收方

不同:
一台路由器通常仅仅对应少量的线路,而一台主机可能的大量连接,这个差异决定了在传输层上实现数据链路层的缓冲策略是不切实际的

缓冲
数据链路层中国发送方必须将往外发送的帧缓冲起来,因为以后可能将来要重传这些帧,同理,传输层中传输实体也要缓冲TPDU,理由相同

三种缓冲策略

a.固定缓冲区策略:如果大多数的TPDU长度都差不多的话,那么很自然的做法是将缓冲区组织成一个大小相等大小缓冲区的池,每个缓冲区容纳一个TPDU。
但是这样会出现问题,比如浪费空间

b.可变化缓冲区:可变缓冲区,代价是缓冲区管理复杂

c.每个连接使用一个大的循环缓冲区

多路复用

向上多路复用

将几个会话复用到少数的连接,在传输层上,对多路复用的需求来自多个方面,比如如果一台主机上只有一个网络地址可以使用,那么这台机器所有的传输必须使用同一个地址,当一个TPDU进来的时候,传输实体需要某一种方法来指明应该交给哪一个进程,这种情形被称为向上多路复用

4个不同传输连接全部使用同样的网络连接IP地址

向下多路复用

如果一个用户所需要的带宽超过了一条虚电路所能够提供的带宽,那么,一种办法是打开多个网络连接,并且采用轮循的方法将流量分布到这些网络连接上,这种操作方式叫做多路复用

原文地址:https://www.cnblogs.com/mengxiaoleng/p/11929445.html