计算机网络(第7版谢希仁)笔记-第五章 运输层

时间:2024-04-25 07:44:33

1、传输层的地位:为源主机上的进程和目的主机上的进程提供可靠透明的数据传送,使其不关 心具体通信细节。传输层是协议层最核心的一层。

传输层的功能:

1)提供应用进程之间逻辑通信 。

2)复用和分用。

传输层一个很重要的功能就是复用和分用。

复用:应用层不同进程的报文通过不同的端口向下交到传输层,再往下就共用网络层提供的 服务。

分用:当这些报文到达目的主机后,目的主机的传输层就使用其分用功能,通过不同的端口 将报文分别交付到相应的进程。

3)对收到的报文进行差错控制

4)提供两种不同的传输协议。

在传输层,可靠传输包括如下四个方面:差错控制、次序控制、丢失控制、重复控制。

2、两种不同的运输协议:TCP协议(传输控制协议)和UDP协议(用户数据报协议)。

  • 当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
  • 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。

3、TCP和UDP的比较?

UDP面向报文的 TCP面向字节流

没有拥塞控制

首部8个字节,开销比较小

4、主机上可能有多个进程同时进行通信,进程是动态创建和撤销的.

5、使用 UDP 和 TCP 的典型应用和应用层协议

6、运输层的 UDP 用户数据报与网际层的IP数据报有很大区别。

  1. IP 数据报要经过互连网中许多路由器的存储转发。
  2. UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。

7、TCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。

8、在协议栈层间的抽象的协议端口是软件端口 路由器或交换机上的端口是硬件端口

9、端口用一个 16 位端口号进行标志,允许有65,535个不同的端口号。

端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的。

10、两大类端口号:服务端使用的端口号、客户端使用的端口号

  • 服务器端使用的端口号
  1. 熟知端口,数值一般为 0 ~ 1023。
  2. 登记端口号,数值为 1024 ~ 49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
  • 客户端使用的端口号
  1. 又称为短暂端口号,数值为 49152 ~ 65535,留给客户进程选择暂时使用。
  2. 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。**

11、熟知端口号

12、TCP 连接的端点叫做套接字 (socket) 或插口。(套接字由两部分组成: IP地址和端口号)

13、可靠传输的工作原理有两个:停止等待协议、连续 ARQ 协议。

停止等待协议的要点

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

自动重传请求 ARQ :重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。”(就是第三点里面说的)

连续 ARQ 协议

  • 发送方一次可以发出多个分组。
  • 使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号。
  • 每收到一个确认,发送方就把发送窗口向前滑动。
  • 接收方一般采用累积确认的方式。(即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认).
  • 采用回退N(Go-Back-N)方法进行重传。(表示需要再退回来重传已发送过的 N 个分组。)

14、IP地址的作用范围是两台主机的线路上;TCP和UDP的作用范围是两台主机之间。

15、为什么要规定最大的报文段 MSS ?(数据字段的最大长度)

选择较小的 MSS 长度,网络的利用率就降低。

16、发送缓存与接受缓存的作用

  • 发送缓存用来暂时存放:
  1. 发送应用程序传送给发送方 TCP 准备发送的数据;
  2. TCP 已发送出但尚未收到确认的数据。
  • 接收缓存用来暂时存放:
  1. 按序到达的、但尚未被接收应用程序读取的数据;
  2. 不按序到达的数据。

17、用不同的机制来控制TCP报文段的发送时机

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

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

19、拥塞产生的原因:

  • 网络拥塞往往是由许多因素引起的。例如:
  1. 点缓存的容量太小;
  2. 链路的容量不足;
  3. 处理机处理的速率太慢;
  4. 拥塞本身会进一步加剧拥塞;

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

拥塞控制:

防止过多的数据注入到网络中,使网络中的路由器或链路不致过载;

是一个全局性的过程,涉及到与降低网络传输性能有关的所有因素。

流量控制

抑制发送端发送数据的速率,以使接收端来得及接收;

是点对点通信量的控制,是端到端的问题;

21、拥塞控制的两种方法

开环控制:

在设计网络时,事先考虑周全,力求工作时不发生拥塞;

思路:力争避免发生拥塞。

闭环控制

基于反馈环路的概念;

根据网络当前的运行状态采取相应控制措施;

思路:在发生拥塞后,采取措施进行控制,消除拥塞。

22、监测网络的拥塞的指标有那些?

主要指标有:

  1. 由于缺少缓存空间而被丢弃的分组的百分数;
  2. 平均队列长度;
  3. 超时重传的分组数;
  4. 平均分组时延;
  5. 分组时延的标准差,等等。
  • 上述这些指标的上升都标志着拥塞的增长。

23、解决拥塞的两条思路

  • 增加网络可用资源;
  • 减少用户对资源的需求。

24、TCP拥塞控制的方法

TCP 采用基于窗口的方法进行拥塞控制。该方法属于闭环控制方法。

发送端利用拥塞窗口cwnd根据网络的拥塞情况调整发送的数据量。

拥塞的判断:重传定时器超时(网络已经发生了拥塞)、收到三个重复的 ACK(预示网络可能会出现拥塞(实际可能还未发生拥塞))。

TCP的四种拥塞控制算法

  • 慢开始 (slow-start): 由小到大逐渐增大拥塞窗口数值。

当拥塞窗口到达门限值之后

  • 拥塞避免 (congestion avoidance): 让拥塞窗口 cwnd 缓慢地增大,避免出现拥塞。每经过一个传输轮次,拥塞窗口的值会加1。

  • 快重传 (fast retransmit):发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传。

  • 快恢复 (fast recovery):当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复算法。

26、TCP的连接的三个阶段

连接建立

数据传送

连接释放

27、TCP 连接建立过程中要解决的三个问题:

  1. 要使每一方能够确知对方的存在。
  2. 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)。
  3. 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

28、A 必须等待 2MSL 的时间

  • 第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。
  • 第二,防止 “已失效的连接请求报文段”出现在本连接中。以免它们干扰到新的连接的建立。

三次握手

29、三次握手是什么/工作原理?

第一次:客户端发送连接请求报文段。

第二次:服务端收到之后为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接。

第三次:客户端给该TCP连接分配缓存和变量,并向服务端返回确认的确认。可以携带数据。

30、四次握手是什么/工作原理?

第一次:客户端发送连接释放报文段,停止发送数据,助攻关闭TCP连接。

第二次: 服务端回送一个确认报文段,客户到服务器这个方向的连接就释放了—半关闭状态。

第三次:服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。

第四次:客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。

30、TCP如何实现可靠传输的?

使用校验、序号、确认、重传等机制来实现可靠传输这一目的的。

  • 校验:与UDP校验一样,增加伪首部,然后通过使用二进制反码求和的计算方法,来判断有没有错误。
  • 序号:TCP连接传输的数据流中的每个字节都边上一个序号。
  • 确认:TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 重传:分为两种:1、超时 2、冗余ACK(收到同一个报文段的3个冗余ACK,就可以知道在这个确认报文段之后的报文段已经丢失)

31、为什么要进行四次挥手释放连接呢?

因为不像建立连接的过程,接收方收到连接请求后可以立即发送SYN进行连接,释放资源时,

服务器在收到客户机的释放连接请求后,还需要一段时间来处理未完成的发送请求,这里需要两次确认发送方的请求:

第一次是未处理完,我还不能释放,但是收到了你的请求,

告诉发送方一声,等等我;

第二次确认表示已经处理完请求了,我也可以进行释放了。因此需要四次。

32、三次握手过程中可以携带数据?

采用三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。

第三次握手的时候可以携带数据。