计算机网络复习——Ch6传输层

传输层

    • 知识点
      • 1. UDP协议:无连接、不可靠、提供复用和分用功能
      • 2. 端口的概念;熟知端口的范围0-1023
        • 端口的概念
        • 端口
        • 两类端口
      • 3. TCP报文段格式
      • 4. TCP可变窗口的实现:报文段中的窗口字段
      • 5. TCP编号:面向字节
      • 6. TCP流量控制:可变滑动窗口
      • 7. TCP拥塞控制:慢开始、拥塞避免、加法增大、乘法减小、快重传、快恢复
        • 接收端窗口 rwnd 和拥塞窗口 cwnd
        • 慢开始
        • 拥塞避免
        • 乘法减小:
        • 慢开始和拥塞避免算法的实现举例
        • 快重传
        • 快重传举例
        • 快恢复
      • 8. TCP的连接建立:三次握手(注意TCP报文段中的相关字段设置)
        • 连接建立要解决的三个问题
        • 客户服务器方式
        • 三次握手
        • TCP的正常连接建立和关闭
    • 例题

知识点

1. UDP协议:无连接、不可靠、提供复用和分用功能

  • UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
  • 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
    • 发送数据之前不需要建立连接

    • UDP 的主机不需要维持复杂的连接状态表。

    • UDP 用户数据报只有8个字节的首部开销。

    • 网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

      UDP传送速度快!

2. 端口的概念;熟知端口的范围0-1023

端口的概念

  • 端口就是运输层服务访问点 TSAP。通俗讲,就是传输层地址
  • 端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
  • 从这个意义上讲,端口是用来标志应用层的进程

端口

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

两类端口

  • 熟知端口,数值一般是0~1023。一些流行的服务,如Web、Email、Ftp等,使用熟知端口。
  • 一般端口,用来随时分配给请求通信的客户进程。

3. TCP报文段格式

计算机网络复习——Ch6传输层_第1张图片

  • 源端口和目的端口字段
    各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
  • 序号字段
    占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号字段
    占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 数据偏移
    占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字(4 字节为计算单位)。
  • 保留字段
    占 6 bit,保留为今后使用,但目前应置为 0。
  • 紧急比特 URG
    当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
  • 确认比特 ACK
    只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
  • 推送比特 PSH (PuSH)
    接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位比特 RST (ReSeT)
    当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 同步比特 SYN
    同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
  • 终止比特 FIN (FINal)
    用来释放一个连接。当FIN = 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 窗口字段
    占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
  • 检验和
    占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
  • 紧急指针字段
    占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
  • 选项字段
    长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS 个字节。
    (MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。)
  • 填充字段
    这是为了使整个首部长度是 4 字节的整数倍。

4. TCP可变窗口的实现:报文段中的窗口字段

占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

5. TCP编号:面向字节

  • TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
  • 在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号
  • TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号

6. TCP流量控制:可变滑动窗口

  • TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。
  • 在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限
  • 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。
    计算机网络复习——Ch6传输层_第2张图片

7. TCP拥塞控制:慢开始、拥塞避免、加法增大、乘法减小、快重传、快恢复

接收端窗口 rwnd 和拥塞窗口 cwnd

  • 接收端窗口 rwnd:来自接收端的流量控制
  • 拥塞窗口 cwnd:来自发送端的流量控制
  • 发送窗口的上限值 = Min [rwnd, cwnd]

慢开始

  • 先不考虑接收窗口
  • 刚刚开始发送报文段时,可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 。
  • 每收到一个报文段的确认,将拥塞窗口增加一个 MSS 。
  • 如果当前窗口的所有报文段的确认都收到,则拥塞窗口大小翻倍
  • 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理
    计算机网络复习——Ch6传输层_第3张图片
    Cwnd:1-> 2-> 4-> 8;指数规律增长

拥塞避免

  • 慢启动导致拥塞窗口大小指数规律增长
  • 为了控制慢启动,发送端为每个连接设置一个慢启动门限(slow start threshold)。
  • 其初始值很大,可以达到流量控制窗口的大小。
  • 连接建立后执行慢开始算法;如果拥塞窗口不断增大,超过了慢启动阈值,则转而执行拥塞避免算法
  • 当前窗口所有报文段的确认都收到,拥塞窗口大小增加一个MSS
  • 因此,拥塞窗口的增长变为线性规律 – 加法增大

乘法减小:

只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5

慢开始和拥塞避免算法的实现举例

计算机网络复习——Ch6传输层_第4张图片

  • 当 TCP 连接进行初始化时,将拥塞窗口置为 1个MSS。
  • 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。
  • 发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。
  • 假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。

快重传

  • 快重传算法规定,接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。
  • 发送端只要一连收到三个重复的 ACK 即可认为有数据丢失,则可以立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时
  • 不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。

快重传举例

计算机网络复习——Ch6传输层_第5张图片

快恢复

  • 快重传一般配合快恢复使用
  • 快恢复:
    (1) 设置慢开始门限 ssthresh为当前拥塞窗口的一半。
    (2) 拥塞窗口 cwnd 不是设置为 1,而是设置为 ssthresh + n * MSS (n > 3), n代表重复的 ACK 数。
    (3) 重传丢失的报文段;
    (4) 收到重复的ack,则cwnd增加1;情况允许,发送一个新的报文段。
    (5) 若收到了新的 ACK,就将 cwnd 设置为 ssthresh(第1步中设置的数值) ,执行拥塞避免算法(加法增大)。

8. TCP的连接建立:三次握手(注意TCP报文段中的相关字段设置)

连接建立要解决的三个问题

  1. 要使每一方能够确知对方的存在。
  2. 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
  3. 分配运输实体资源(如缓存大小,连接表中的项目等)。

客户服务器方式

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

三次握手

计算机网络复习——Ch6传输层_第6张图片

  • A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x。
  • B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
    • B 在确认报文段中应将 SYN 置为 1,其确认号应为 x+1,同时也为自己选择序号 y。
  • A 收到此报文段后,向 B 给出确认,其确认号应为 y + 1。

TCP的正常连接建立和关闭

计算机网络复习——Ch6传输层_第7张图片

例题

  1. 主机甲和主机乙之间建立一个TCP连接,TCP最大段长为1000字节,若主机甲的当前拥塞控制窗口为4000字节,在主机甲向主机乙连续发送2个最大段后,成功收到主机乙发送的第一段确认段,确认段中通告的接受窗口大小为3000字节,则此时主机甲还可以向主机乙发送的最大字节数是
    A:1000 B:2000 C:3000 D:4000

  2. 主机甲和主机乙间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确收到两个段后,发给主机甲的确认序列号是
    A:500 B:700 C:800 D:1000

  3. 一个TCP连接总是以1KB的最大段发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的5个RTT(往返时间)时间内的TCP段的传输都是成功的,那么当第5个RTT时间内发送的所有TCP段都得到肯定应答时,拥塞窗口大小是多少?
    答:
    发生拥塞后,拥塞门限设为8KB,拥塞窗口大小1KB;
    执行慢开始算法,每经过一个RTT,拥塞窗口翻倍;则经过3个RTT,拥塞窗口大小为8KB,转而执行拥塞避免算法;
    经过第5个RTT,拥塞窗口加2,为10KB。

  4. 主机A与主机B的TCP连接的MSS=1000B。主机A当前的拥塞窗口为4000B,主机A连续发送了两个最大报文段后,主机B返回了对第1个报文的确认,确认段中通知的接受窗口大小为2000B。那么,这时主机A最多能发送多少字节?
    答:
    1000B

  5. 假设TCP拥塞控制的AIMD算法中,慢开始SST1的阈值设置为8,当拥塞窗口上升到12时,发送端检测出超时,TCP使用慢开始与拥塞避免。那么,第1次到第15次传输的拥塞窗口分别为多少?
    答:
    超时后,拥塞门限降为6
    1到15次的拥塞窗口分别为2 4 8 9 10 11 12 1 2 4 6 7 8 9 10;

  6. 一个TCP连接采用慢开始算法进行拥塞控制。它的最大段长度为1KB,发送端一直有数据要发送。在拥塞窗口为16KB时发生了超时,如果接下来的4个RTT时间内TCP端传输都成功,那么当第4个RTT时间内发送的所有TCP段都得到肯定的回答。请问:拥塞窗口是多少?
    答:
    拥塞窗口为9(2 4 8 9)

  7. 图6-29给出了TCP连接建立的三次握手与连接释放的四次握手的过程示意图。请根据TCP协议的工作原理,写出图中1~8位置的序号值。
    计算机网络复习——Ch6传输层_第8张图片
    1、10021
    2、10021 3、25610
    4、60036 5、16956
    6、60036
    7、16956 8、60037

你可能感兴趣的:(期末复习)