第六章 传输层-Transport Layer(上)

6.1传输层概述

在之前的几章内容中,我们自底向上的描述了计算机网络的各个层次,还描述了一些处于不同层次下的经典网络协议(如以太网、无线局域网、或者因特网)。现在我们将把视野放在传输层,看看这一层的的协议提供了怎样的服务、以及他们是如何实现的。由于传输层的内容也比较多,所以也会拆分成两篇来写。这一篇文章会介绍一下传输层的功能、提供给上层的服务,以及传输层是如何完成差错控制、流量控制、拥塞控制等任务的。

6.1.1 传输层概述

在网络层,我们使用VC和Datagram实现了链路上的通信;而传输层把传输服务扩展到了存在于两台计算机的进程上(provides end-to-end delivering),并强调提供一种可靠的跨网络传输方法。传输层的任务主要是:1.接收应用层的数据(并有可能需要切分成小段);2.发送数据段segment;3.区分属于不同进程的segment

同时,传输层还决定了究竟提供哪种类型的服务。如果应用层不需要一种可靠的数据流(比如斗鱼这种视频直播),那么传输层向网络层发送的数据就不会设计过多的差错控制及确认机制以节省资源;而反过来,如果应用层需要一种可靠的无错信道(虽然现实中不可能完全不出错),那么传输层发送给网络层的段就会包含序列号以保证顺序、ACK机制以应对丢包发生...此外,传输层还需要继续考虑拥塞控制的问题,因为仅仅凭借网络层是无法彻底解决网络拥塞的。

6.1.2 传输层提供给上层的服务

  • 提供了面向连接的服务(如TCP)与无连接(如UDP)的服务

6.1.3 传输服务原语

6.2 传输协议的要素

这部分将描述一些传输协议的要素(比如传输层如何寻址或者进行流量控制),为后面介绍TCP、UDP做好铺垫。但是这些要素并不是全部出现在传输层的所有协议之中。比如UDP协议就没有连接建立的过程。

6.2.1 寻址

传输服务的访问点:端口(port)

相对应的,网络层服务的访问点可以理解成:IP地址

6.2.2 传输建立(连接建立)

连接建立的过程是一个很经典的三次握手的过程。如下。

简单的三次握手其实包含了很多考量,如在连接建立时发送的序列号(是为了防止早先发送的数据包超时到达导致重复接受),以及设置的计时器,等等。主机发送一个连接建立请求(CR),接收方收到后返回一个ACK表示已经收到,并返回一个自己的起始需要y(Host2的后续数据包将从y开始发送),最后主机一把对于这一消息的确认夹带在需要发送的数据中。下面我们考虑几种特殊的情况(其实在实际的操作过程中是很容易发生的)

首先考虑上图的情况。主机1在很久之前向主机2发送了一个连接请求,而当这个请求真正到达的时候H1已经不再需要这个连接了。在这种情况下,尽管主机2并不知道到达的这个请求是否是真心实意的需要建立,H2仍旧可以通过确认机制实现对于数据包的判断(如,H1已经不需要这个连接,就会向H2发送拒绝的数据)

在下图这种情况中,H1所发送的超时CR和超时DATA同时存在于网络中。当H2收到一个请求后,照常发出一个ACK等待H1开始发送数据(此时H2并不知道这是一个已经过期的请求)。而下一刻,当超时的DATA数据包也到达H2,H2经过判断发现这个数据包的ACK和自己发送的确认序列号不符(y和z),所以判断出这是一个超时的数据包,继续等待H1的回复。

总而言之,在传输层,三次握手的存在使得老的段的任何组合都不会让协议失败,主机间也不会出人意料的建立一个连接

6.2.3 连接释放(2)

连接释放的问题相对复杂。一个典型的例子是两军对垒问题(感兴趣的同学可以搜索一下,这里不再花费大量篇幅展开)。总之,不存在一种两方都完全确认并做好准备的释放连接。现在的释放连接方法分成两种,对称释放与非对称释放

非对称释放

例如电话,在一方挂机之后连接直接断开

对称释放

将一个连接看成是两个单向的连接,需要分别单独释放。

6.2.3 差错控制&流量控制

在之前的内容里,我们已经讨论过链路层和网络层的流量控制。

差错控制:确保数据传输具备可靠性(所有的数据被无差错的传输至目的地)

流量控制:防止快速发送端淹没慢速接收端

这两个问题已经在链路层考察过,而在传输层,我们采用了和链路层基本一致的解决方案,即:

    1. 帧中携带一个验错码(如CRC或者checksum),在接收端检测信息是否正确。
    1. 使用自动重复请求(ARQ)
    1. 使用停-等式协议
    1. 使用滑动窗口

6.2.4 多路复用(可以解决地址匮乏问题!!!!

除了在网络层讲到了的三种解决方案之外,在传输层还有一个方法可以用于缓解地址匮乏问题,那就是多路复用(multiplexing)。

上图中左图使用的方法就是多路复用。同一个地址上到达的端,分给不同的进程(前面已经讲过传输层和网络层接入点的问题)。相对应的,另一种方法称为逆向多路复用,即把一个连接的流量分给多条路径。通过逆向多路复用,传输层可以合并多条低速链路,把他们当作一条告诉链路来使用。

6.3 传输层拥塞控制

如果读者还能想起来,在网络层中,我们说到拥塞控制需要网络层与传输层的共同努力。下面的内容将解释传输层如何进行拥塞控制

拥塞控制的唯一途径就是减少传输层向下发送数据包的速度

6.3.1 最大-最小公平

上图很形象的阐述了最大最小公平的原则:如果分配给一个流的带宽,在不减少分配给另一个流带宽的前提下,无法得到进一步增长,那么就不分配给这个流更多带宽。

这个定义绕来绕去不好理解,我们还是用图片来阐释。上图中存在6个路由器、一个工字形的链路以及ABCD四条数据流。我们假设每一段链路的最大上限都是1。任意拿一条流距离,分配给B流的带宽,在不减少其它流的前提下已经无法再进一步增长(比如再R4和R5之间已经达到了瓶颈,不能再增加了)。同理用A流举例来说,尽管在R1R2之间没有到达流量上限,但是A流在R2R3之间已经达到了上限(如果不减少流B就无法进一步增长),全部判断之后,我们可以说这种分配是符合最大-最小公平的。读者可以自行判断一下流C和流D。

6.3.2 调整发送速率

然而,单独依靠最大-最小公平仍旧不足以使每个流都公平的分配到最大带宽。下面介绍的内容将是传输层一个重点算法的基础。

在传输层,发送速率会受到两个因素的影响。分别是流量控制和拥塞控制。当接收端没有足够的缓冲区,据必须进行流量控制;而拥塞控制针对的是网络层容量不足的情况,如下图。

加法递增与乘法递减:AIMD-additive increase and multiplicative decrease

我们还是通过图片来理解。假设在某一条网络上存在两个用户(或着说,两个数据流)同时需要占用带宽。我们构建一个坐标系,横轴是用户1的实际带宽,纵轴是用户2的带宽,网络的总容量为C。由于两个用户处于一个网络下,易知对于任意的x,y,一定存在:

\[x+y<=C
\]

当x+y=c,这条网络的带宽被全部占满,我们称这条曲线位效率线。同时,对于x和y两个用户来说,为了维持收发速度的公平,两个用户应该能够获取相同大小的带宽,即:

\[x-y=0
\]

这条线被称作公平线我们把这两条曲线表示在刚刚的坐标系中,他们的交点被称作最优点。这是每一个网络希望达到的理想状态。因此现在的问题是,网络应该采取何种策略,到达之前所说的公平点呢?我们给出的答案称作加法递增与乘法递减控制法

所谓加法,指的是同时增加或减少用户1和用户2 的带宽;而所谓乘法,指的是按照比例改变用户1和用户2的带宽。可想而知,如果在图像上表示这两种更改方式,加法一定是一条斜率为1的直线,乘法一定是一条过原点的直线。

而之所以加法只用在增加,乘法只用在减少,是由于TCP拥塞控制中的稳定性观点:驱使网络拥堵非常容易,而想要使其恢复,则相对困难。因此,递增策略应相对温柔,递减策略应相对积极

对于刚才的网络,我们假设当前网络的效率处在A点。(即用户1 的带宽位x1,用户2的带宽为x2)

从A点开始,首先进行加法递增(蓝紫色实线)。当X+Y到达1号点,超出了网络的容量之后,网络层会向用户发送一个拥塞信号,这是各个用户开始使用乘法递减原则,共同减少自己占用的带宽,到达2号点(路径为途中红色实线)。反复执行这一流程多次后,系统会慢慢趋近最优点。

AIMD是TCP采用的拥塞控制法则。但这个法则不是完全的公平。因为TCP每次都要根据往返时间测量值来调整窗口的大小,所以接近主机的连接往往比距离远的连接要获得更多带宽(距离近则往返时间短)。


到此为止,本章的内容已经全部结束。下一章将继续传输层的下半部分内容,介绍两个传输层的超重要协议:TCP与UDP协议。传送门:传输层(下)

传输层-Transport Layer(上):传输层的功能、三次握手与四次握手、最大-最小公平、AIMD加法递增乘法递减的更多相关文章

  1. 传输层-Transport Layer(下):UDP与TCP报头解析、TCP滑动窗口、TCP拥塞控制详解

    第六章 传输层-Transport Layer(下) 上一篇文章对传输层的寻址方式.功能.以及流量控制方法做了简短的介绍,这一部分将介绍传输层最重要的两个实例:TCP协议和UDP协议,看一看之前描述的 ...

  2. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).2

    3.5 面向连接的运输: TCP 3.5.1 TCP连接 TCP是因特网运输层的面向连接的可靠的运输协议. TCP连接提供全双工服务(full-duplex service). TCP连接是点对点的连 ...

  3. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1

    3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...

  4. 层定位layer

    一.如何实现层定位position属性 二.相对定位relative 三.绝对定位absolute 四.元素堆叠z-index 一.实现层定位的方法 position属性实现层定位,把元素分出层次形成 ...

  5. 传输层(一)TCP的三次握手和四次挥手及关闭套接字的原理

    TCP连接需三次握手才能建立,断开连接则需要四次握手. 客户端TCP状态迁移: CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_W ...

  6. 第6章 传输层(详解TCP的三次握手与四次挥手)

    第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...

  7. jQuery layer弹出层插件 http://layer.layui.com/直接上官网学

    在许多网站中,经常用到弹出层,有时候为了达到更好的用户体验,你将写繁琐的css跟js,这款 jquery-layer可以让你想到即可做到的web弹窗/层js组件.layer侧重于用户灵活的自定义,为不 ...

  8. 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接建立---三次握手、tcp连接释放---四次握手)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105516090 学习课程:<2019王道考研计算机网络> 学习目的 ...

  9. Secure Sockets Layer(安全套接层)

    SSL SSL(Secure Sockets Layer安全套接层)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TL ...

随机推荐

  1. Idea eclipse 快捷键版

    查找/搜索 打开搜索界面     Ctrl+H 查找类文件             Ctrl+Shift+T 最近访问上一个文件      Ctrl+Alt+ ← 最近访问下一个文件        C ...

  2. Java解释单链表中的头插法以及尾插法

    单链表属于数据结构中的一种基本结构,是一种线性结构,在此使用Java对其中的头插法以及尾插法进行解释. 首先定义好链表中的节点类: 其中,data代表节点所存放的数据,next代表指向下一节点 对于单 ...

  3. mimikatz使用

    mimikatz使用 需要用管理员权限打开 privilege::debug sekurlsa::logonpasswords 已测试系统 Windows Server 2008 R2 Datacen ...

  4. pikachs 渗透测试2-XSS漏洞及利用

    一.概述 XSS(跨站脚本)概述 Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XS ...

  5. 如何使用ABBYY FineReader处理文档图像的缺陷?

    通过扫描仪或者数码相机获取的图像文件,容易出现文本扭曲.页面歪斜等缺陷,会影响到OCR的识别质量.此时,用户可使用ABBYY FineReader 15(Windows系统)OCR文字识别软件的自动和 ...

  6. 再论<? extends T>和<? super T>

    参考: https://www.cnblogs.com/drizzlewithwind/p/6100164.html Java 泛型 <? super T> 中 super 怎么 理解?与 ...

  7. Hibernate的配置跟简单创建一个表并插入一条数据

    首先官网下载一个hibernate的架包,由于时间关系,博主已经分享到了百度网盘:https://pan.baidu.com/s/1Mw0Og3EKnouf84Njz9UicQ,提取码lens Hib ...

  8. Python实现树莓派摄像头持续录像并传送到主机

    关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文读法,树莓派诞生于英国,由"Raspberry Pi 基金会"这个慈善组织注册开 ...

  9. IEEE浮点数标准

    IEEE浮点数标准 阅读笔记:Computer System : A Programmmer's Perspective 基本概念 IEEE浮点数标准采用 \[V=(-1)^s\times M\tim ...

  10. mysql主从同步上---主从同步原理

    1.主从同步机制   1.1 主从同步介绍和优点   在多台数据服务器中,分为主服务器和从服务器.一台主服务器对应多台从服务器. 主服务器只负责写入数据,从服务器只负责同步主服务器的数据,并让外部程序 ...