计算机网络复习—运输层

运输层协议概述

1、进程之间的通信

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

运输层的作用

“逻辑通信”的意思是“好像是这样通信,但事实上并非真的这样通信”。
从IP层来说,通信的两端是两台主机。但“两台主机之间的通信”这种说法还不够清楚。
严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信。
从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。

端系统之间通信的含义

“主机A和主机B进行通信”实际上是指:“运行在主机A上的某个程序和运行在主机B上的另一个程序进行通信”。端到端的通信是进程之间的通信。

2、运输层的两个主要协议

TCP/IP的运输层有两个主要协议:用户数据报协议UDP、传输控制协议TCP
在这里插入图片描述TCP、UDP特点
两种不同的运输协议:可靠信道于不可靠信道
在这里插入图片描述
使用UDP和TCP的典型应用和应用层协议
在这里插入图片描述

3、运输层的端口

运行在计算机中的进程是用进程标识符来标志的。
用操作系统指派的进程标识符来标志应用层的各种进程是不合适的。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。
为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。

端口号

解决这个问题的方法就是在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。
虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。

在这里插入图片描述

软件端口于硬件端口

  • 两个不同的概念。
  • 在协议栈层间的抽象的协议端口是软件端口。
  • 路由器或交换机上的端口是硬件端口。
  • 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

TCP/IP运输层端口

端口用一个 16 位端口号进行标志,允许有65,535个不同的端口号。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的。
在这里插入图片描述
两大类端口
服务器端使用的端口号

  • 熟知端口,数值一般为 0 ~ 1023。
  • 登记端口号,数值为 1024 ~ 49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。

客户端使用的端口号

  • 又称为短暂端口号,数值为 49152 ~ 65535,留给客户进程选择暂时使用。
  • 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

在这里插入图片描述

用户数据报协议UDP

1、UDP概述

UDP 只在 IP 的数据报服务之上增加了很少一点的功能:

  • 复用和分用的功能
  • 差错检测的功能

UDP的主要特点

  • UDP 是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
  • UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
  • UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
  • UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。
  • UDP 支持一对一、一对多、多对一和多对多的交互通信。
  • UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

2、UDP的首部格式

在这里插入图片描述
在计算校验和时,临时把12字节的“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算校验和。
在这里插入图片描述

传输控制协议TCP概述

1、TCP的最主要特点

  • TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报-服务基础之上,增加了保证可靠性的一系列措施。

  • TCP 是面向连接的运输层协议。

  • 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP - 连接只能是点对点的(一对一)。

  • TCP 提供可靠交付的服务。

  • TCP 提供全双工通信。

  • 面向字节流
    TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。
    “面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次 一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流

    面向流的概念

    TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。
    但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
    在这里插入图片描述
    注意

  • TCP 连接是一条虚连接而不是一条真正的物理连接。

  • TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。

  • TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。

  • TCP 可把太长的数据块划分短一些再传送。

  • TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

2、TCP的连接

TCP 把连接作为最基本的抽象。每一条 TCP 连接有两个端点。TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口。端口号拼接到 (contatenated with) IP 地址即构成了套接字。

在这里插入图片描述
在这里插入图片描述

TCP连接、IP地址、套接字

  • TCP 连接就是由协议软件所提供的一种抽象。
  • TCP 连接的端点是个很抽象的套接字,即(IP 地址:端口号)。
  • 同一个 IP 地址可以有多个不同的 TCP 连接。
    -同一个端口号也可以出现在多个不同的 TCP 连接中。

可靠传输的工作原理

1、停止等待协议

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。全双工通信的双方既是发送方也是接收方。为了讨论问题的方便,我们仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。

无差错情况
在这里插入图片描述
出现差错
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:

  • 在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。
  • 分组和确认分组都必须进行编号。
  • 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

自动重传请求ARQ

  • 通常 A 最终总是可以收到对所有发出的分组的确认。如果 A 不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。
  • 使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
  • 像上述的这种可靠传输协议常称为自动重传请求 ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。

停止等待协议要点

  • 停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组。
  • 编号。对发送的每个分组和确认都进行编号。
  • 自动重传请求。发送方为每个发送的分组设置一个超时计时器。若超时计时器超时,发送方会自动重传分组。
    简单,但信道利用率太低。
    在这里插入图片描述

2、连续ARQ协议

基本思想:

  • 发送方一次可以发出多个分组。
  • 使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号。
  • 每收到一个确认,发送方就把发送窗口向前滑动。
  • 接收方一般采用累积确认的方式。
  • 采用回退N(Go-Back-N)方法进行重传。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、滑动窗口协议

滑动窗口协议比较复杂,是 TCP 协议的精髓所在。发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP报文段的首部格式

TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。因此 TCP 首部的最小长度是 20 字节。

TCP报文段的首部格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么要规定MSS?
MSS 与接收窗口值没有关系。若选择较小的 MSS 长度,网络的利用率就降低。若 TCP 报文段非常长,那么在 IP 层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的 TCP 报文段。当传输出错时还要进行重传。这些也都会使开销增大。因此,MSS 应尽可能大些,只要在 IP 层传输时不需要再分片就行。但最佳的 MSS 是很难确定的。

在这里插入图片描述

TCP可靠传输的实现

1、以字节为单位的滑动窗口

TCP 使用流水线传输和滑动窗口协议实现高效、可靠的传输。 TCP 的滑动窗口是以字节为单位的。发送方 A 和接收方 B 分别维持一个发送窗口和一个接收窗口。发送窗口表示:在没有收到确认的情况下,可以连续把窗口内的数据全部发送出去。接收窗口表示:只允许接收落入窗口内的数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发送缓存与接收缓存的作用

发送缓存用来暂时存放:

  • 发送应用程序传送给发送方 TCP 准备发送的数据;
  • TCP 已发送出但尚未收到确认的数据。

接收缓存用来暂时存放:

  • 按序到达的、但尚未被接收应用程序读取的数据;
  • 不按序到达的数据。

要强调三点

  • 第一,A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。
  • 第二,TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
  • 第三,TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。

在这里插入图片描述

2、超时重传时间的选择

重传机制是 TCP 中最重要和最复杂的问题之一。TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。重传时间的选择是 TCP 最复杂的问题之一。

如果把超时重传时间设置得太短,就会引起很多报文段的不必要的重传,使网络负荷增大。但若把超时重传时间设置得过长,则又使网络的空闲时间增大,降低了传输效率。TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间 RTT。

3、选择确认SACK

问题:若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?

答案是可以的。选择确认 SACK (Selective ACK) 就是一种可行的处理方法。
在这里插入图片描述

TCP的流量控制

1、利用滑动窗口实现流量控制

流量控制 (flow control) 就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
在这里插入图片描述
A
在这里插入图片描述

2、TCP的传输效率

可以用不同的机制来控制 TCP 报文段的发送时机:

  • 第一种机制是 TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。
  • 第二种机制是由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送 (push) 操作。
  • 第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。
    在这里插入图片描述

TCP的拥塞控制

1、拥塞控制的一般原理

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞(congestion)
最坏结果:系统崩溃

在这里插入图片描述

拥塞产生的原因

  • 点缓存的容量太小;
  • 链路的容量不足;
  • 处理机处理的速率太慢;
  • 拥塞本身会进一步加剧拥塞;
    ∑ 对资源需求 > 可用资源

拥塞控制与流量控制的区别

在这里插入图片描述

拥塞控制的一般原理

  • 拥塞控制的前提:网络能够承受现有的网络负荷。
  • 实践证明,拥塞控制是很难设计的,因为它是一个动态问题。
  • 分组的丢失是网络发生拥塞的征兆而不是原因。
  • 在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化、甚至发生死锁的原因。

开环控制和闭环控制

在这里插入图片描述
闭环控制的几种措施

  • 监测网络系统,以便检测到拥塞在何时、何处发生。
  • 将拥塞发生的信息传送到可采取行动的地方。
  • 调整网络系统的运行以解决出现的问题。

2、TCP的拥塞控制方法

  • TCP 采用基于窗口的方法进行拥塞控制。该方法属于闭环控制方法。TCP发送方维持一个拥塞窗口 cwnd (Congestion Window)
  • 发送端利用拥塞窗口根据网络的拥塞情况调整发送的数据量。
  • 发送窗口大小不仅取决于接收方窗口,还取决于网络的拥塞状况,所以真正的发送窗口值为:
    在这里插入图片描述

拥塞的判断

  • 重传定时器超时
  • 收到三个重复的ACK

TCP拥塞控制算法

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、主动队列管理AQM

TCP 拥塞控制和网络层采取的策略有密切联系。若路由器对某些分组的处理时间特别长,那么这就可能使这些分组中的TCP报文段经过很长时间才能到达终点,结果引起发送方超时,对这些报文段进行重传重传会使 TCP 连接的发送端认为在网络中发生了拥塞,但实际上网络并没有发生拥塞。对 TCP 拥塞控制影响最大的就是路由器的分组丢弃策略。

TCP的运输连接管理

运输连接的三个阶段

  • 建立连接
  • 数据传送
  • 连接释放

TCP的连接管理就是使TCP连接的建立和释放都能正常地进行

客户-服务器方式

  • TCP 连接的建立采用客户服务器方式。
  • 主动发起连接建立的应用进程叫做客户 (client)。
  • 被动等待连接建立的应用进程叫做服务器 (server)。

1、TCP的连接建立

TCP 建立连接的过程叫做握手。握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手。采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、TCP的连接释放

TCP 连接释放过程比较复杂。数据传输结束后,通信的双方都可释放连接。ATCP 连接释放过程是四报文握手。
a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
A必须等待2MSL的时间,第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。第二,防止 “已失效的连接请求报文段”出现在本连接中,确保下一个新的连接中不会出现旧的连接请求报文段。
MSL:最长报文段寿命

3、TCP的有限状态机

箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。图中有三种不同的箭头。

  • 粗实线箭头表示对客户进程的正常变迁。
  • 粗虚线箭头表示对服务器进程的正常变迁。
  • 细线箭头表示异常变迁。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44736475/article/details/112132300