《计算机网络》(第8版)第五章 复习笔记

第五章 运输层

一、运输层协议概述

1 运输层的功能
从通信和信息处理角度讲,传输层向应用层提供服务,是面向通信的最高层,也是面 向用户功能的最底层,它的主要功能有:
(1)提供用户进程之间的逻辑通信(端到端通信);
(2)提供复用与分用;
(3)对收到的报文进行差错检测;
(4)提供面向连接的 TCP 协议和无连接的 UDP 协议。

2 运输层的端口
(1)端口的作用
①应用层的各个进程的数据可以通过端口向下交付给传输层;
②传输层的数据可以通过端口上交给应用层。
(2)端口号
应用进程可以通过端口号进行标识,可将端口号分为两类:
①服务端使用的端口号
服务端可以使用范围为0~1023 的熟知端口号和范围为 1024~49151 的登记端口号两 类。如表 5-1 所示为常用的熟知端口号(需要记住)。
在这里插入图片描述
表 5-1 常用熟知端口号
②客户端使用的端口号
这类端口号仅在客户进程运行时才动态选择,范围为49152~65535 ,又叫临时端口号。

二、用户数据报协议 UDP

1 UDP 概述
(1)UDP 的概念
在 IP 的数据报服务之上增加了复用和分用功能以及差错检测功能,且 UDP 只做传输 层协议能做的最少工作。
(2)UDP 的主要特点
①UDP 是无连接的,发送数据之前不需要建立连接,减少了开销和发送数据之前的时 延;
②UDP 是尽最大努力交付的,不保证可靠交付;
③UDP 是面向报文的,发送方的 UDP 对应用程序交下来的报文,在添加首部后就向 下交付给 IP 层;
④UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低;
⑤UDP 支持一对一、一对多、多对一和多对多的交互通信;
⑥UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

2 UDP 的首部格式
如图 5-1 所示,用户数据报 UDP 有数据字段和首部字段,首部字段只有 8 个字节,共 四个字段,分别为:
(1)源端口:源端口号,在需要对方回信时选用,不需要时可用全0;
(2) 目的端口: 目的端口号,在终点交付报文时必须要使用;
(3)长度:UDP 用户数据报的长度,其最小值是 8(仅有首部);
(4)检验和:检测 UDP 用户数据报在传输中是否有错,有错就丢弃。 【注意】UDP 检验采用的方式为:
①在发送方,将全“0”放入检验和字段,并添加伪首部,再将 UDP 数据报看成由许多
16 位的字符串连接起来,在通过二进制反码运算求和并将结果存入检验和字段;
②在接收方,将收到的 UDP 数据报及伪首部按二进制反码计算求和,若和为全“1”,则无差错,否则丢弃。
在这里插入图片描述
图 5-1 UDP 用户数据报的首部和伪首部

三、传输控制协议 TCP 概述

1 TCP 最主要的特点
(1)TCP 是面向连接的运输层协议,在使用TCP 协议之前,必须先建立 TCP 连接;
(2)每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一);
(3)TCP 提供可靠交付的服务,通过 TCP 连接传送的数据,无差错、不丢失、不重 复、并且按序到达;
(4)TCP 提供全双工通信;
(5)面向字节流,TCP 中的“流”指的是流入到进程或从进程流出的字节序列。

2 TCP 的连接
TCP 将连接作为最基本的抽象,且 TCP 连接的端点叫做套接字;可用套接字标识网络 上某主机上的某应用(进程),套接字=(主机 IP 地址,端口号)。

四、可靠传输的工作原理

1 停止等待协议
(1)停止等待的概念
在全双工工作方式下,通信双方既是发送方又是接收方;“停止等待”即每发送完一个 分组就等待对方的确认,确认后再发送下一个分组。
(2)停止等待协议的两种基本情况
①无差错情况:如图 5-2(a)所示,A 发送分组 M1 ,等待 B 确认 M1 后再继续发送 M2;
在这里插入图片描述图 5-2 停止等待协议
②出现差错
分组可能在传输过程中出现差错,主要有以下情况:
a .超时重传:如图 5-2(b)所示,B 接收 M1 时检测出差错后丢弃 M1 ,停止等待协议 要求 A 每发完一个分组便设置一个超时计时器,当 A 超过一段时间仍未收到确认,就 认为刚才发送的分组丢失,并进行超时重传;
b .确认丢失:如图 5-3(a)所示,B 接收到无差错的 M1 时,向 A 发回确认,但在途 中确认丢失,A 仍然无法得到 B 的确认,此时 A 进行超时重传,且在重传的新的 M1 到达 B 时,B 将丢弃重复的 M1 并发回重传确认;
c .确认迟到:如图 5-3(b)所示,M1 传输并无差错,只是 M1 的确认到达 A 时迟到了,此时 A 对重复的确认什么也不做,而 B 对丢弃重复的 M1。
在这里插入图片描述
图 5-3 确认丢失和确认迟到
【注意】
①发送方发送完一个分组后,必须暂时保留已发送的分组的副本;
②分组和确认分组都必须进行编号;
③超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些;
④停止等待协议信道利用率低(信道利用率=发送分组需要的时间/(发送分组需要的 时间+往返时间+确认分组需要的时间))。

2 连续 ARQ 协议
如图 5-4(a)所示,发送方维持的发送窗口大小为 5 ,位于发送窗口内的5 个分组都 可连续发送出去,而不需要等待对方的确认。连续 ARQ 协议规定发送方每收到一个确 认,就把发送窗口向前滑动一个分组的位置,如图 5-4(b)所示;接收方一般采用累 积确认的方式,在收到几个分组后,对按序到达的最后一个分组发送确认。
在这里插入图片描述
图 5-4 连续 ARQ 协议的工作原理

五、TCP 报文段的首部格式

TCP 传输的数据单元称为 TCP 报文段,首部的前 20 个字节是固定的,如图5-5 所示, 后面有 4n 字节是可选的,TCP 首部的最小长度是 20 字节。其首部各字段说明如下:
(1)源端口和目的端口:各占 2 个字节,分别写入源端口号和目的端口号;
(2)序号: 占 4 字节,指本报文段发送的数据的第一个字节的序号;
(3)确认号: 占 4 字节,是期望收到对方下一个报文段的第一个数据字节的序号;
(4)数据偏移(即首部长度): 占 4 位,指出TCP 报文段的数据起始处距离 TCP 报 文段的起始处有多远;
(5)保留: 占 6 位,保留为今后使用,但目前应置为 0;
(6)紧急位URG:当 URG =1 时,表明紧急指针字段有效;
(7)确认位ACK:仅当 ACK =1 时确认号字段才有效,TCP 连接建立后所有传送的 报文段 ACK 均置为 1;
(8)推送位PSH:当 PSH =1 时,将报文段尽快交付给应用程序;
(9)复位位RST:当 RST =1 时,TCP 连接中出现严重差错,必须释放连接,再重新 建立运输连接;
(10)同步位 SYN:在连接建立时用来同步序号,SYN =1 表示该报文为连接请求或 接收报文;
(11)终止位 FIN:当 FIN =1 时,表示该报文段发送方数据发送完毕,请求释放连接;
(12)窗口: 占 2 字节,指出当前允许对方发送的数据量;
(13)检验和: 占 2 字节,检验和字段检验的范围包括首部和数据两部分;
(14)紧急指针: 占 2 字节,它指出本报文段中紧急数据的字节数;
(15)选项:长度可变,最长可达 40 字节。
在这里插入图片描述
图 5-5 TCP 报文段的首部格式

六、TCP 可靠传输的实现

1 以字节为单位的滑动窗口
在任意时刻,发送方维持一组允许发送的帧的序号,即发送窗口;接收方维持一组允 许接收的帧的序号,称为接收窗口;TCP 的滑动窗口是以字节为单位的,其工作原理 如图 5-6 与图 5-7 所示:
(1)构造发送窗口(发送方由接收方发回的确认报文构造自己的发送窗口);
(2)发送方发送数据,接收方收到数据后发回确认;
(3)发送方每收到一个确认,发送窗口便向前滑动一个位置,当发送窗口内没有可以 发送的数据时(窗口内的数据全部发送但未收到确认),发送方停止发送,直到收到 接收方的确认使窗口移动后才能继续发送;
(3)接收方每收到一个数据,接收窗口前移一个位置,并发回确认,接收窗口外的数据一律丢弃。
在这里插入图片描述
图 5-6 根据 B 给出的窗口值,A 构造出自己的发送窗口
在这里插入图片描述
图 5-7 A 发送了 11 个字节的数据

2 超时重传时间的选择
TCP 的发送方在规定时间内未收到确认时需要进行重传,而超时重传时间的选择采用 一种自适应算法:
(1)从第一次测量 RTT 样本开始,计算加权平均往返时间:新的 RTTS =(1-α) × (旧的 RTTS )+α×(新的 RTT 样本),其中 0≤α<1 ,RFC 6298 推荐的α = 1/8 =
0.125;
(2)计算 RTT 的偏差的加权平均值:新的 RTTD =(1-β) ×(旧的 RTTD )+ β×|RTTS-新的 RTT 样本| ,这里β是小于 1 的系数,推荐使用 1/4 =0.25;
(3)超时计时器设置的超时重传时间 RTO =RTTS+4RTTD。

3 选择确认 SACK
TCP 的接收方在接收发送方发送的序号不连续的数据字节流时,若这些字节的序号都 在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方, 使发送方不要再重复发送这些已收到的数据;而这些准确信息便包括了每一个字节块 的左边界和右边界,这时的确认除了保持原有的“确认号字段”不变外,还需要在 TCP 首部增加 SACK 选项。

七、TCP 的流量控制

TCP 的流量控制是使用滑动窗口实现的,记接收窗口为 rwnd ,发送方 A 发送数据给接 收方 B ,B 向 A 发送确认报文,这时确认报文首部中的窗口字段将 rwnd 通知给 A ,A 再通过 rwnd 控制自己发送窗口的大小。例如图5-8 所示。
在这里插入图片描述
图 5-8 利用可变窗口进行流量控制举例
图 5-8 中的例子存在一种特殊情况,B 向 A 发送了零窗口的报文段后不久,B 又向 A 发送了 rwnd =400 的报文段,然而这个报文段在传送过程中丢失了,A 一直等待收到 B 发送的非零窗口的通知,而 B 也一直等待 A 发送的数据,这就造成了死锁;为解决 这个问题可以为每一个连接设置一个持续计时器。

八、TCP 的拥塞控制

1 拥塞控制和流量控制的区别
(1)拥塞控制是为了让网络能够承受现有的网络负荷,防止过多数据注入网络,是一 个全局控制过程;
(2)流量控制是接收方控制发送方,是一种点对点的流量的控制。

2 几种拥塞控制方法
(1)慢开始和拥塞避免
①慢开始算法
建立了TCP 连接并开始发送报文段时,令拥塞窗口 cwnd =1(即一个最大报文长度
MSS),并在每次收到一个对新的报文段的确认后,使 cwnd+1 ,这种使得每经过一 个往返时延 RTT 后拥塞窗口cwnd 加倍(即cwnd 的大小呈指数增长)直到 cwnd 增大 到慢开始门限 ssthresh 的过程叫慢开始算法。
②拥塞避免算法
发送端的拥塞窗口cwnd 每经过一个往返时延 RTT 就增加一个 MSS 的大小(按线性增 长),直到出现一次超时(网络拥塞),令慢开始门限 ssthresh 等于当前 cwnd 的一半, 这种算法叫拥塞避免算法。
③网络拥塞的处理过程
例如在如图5-9 所示的例子中,拥塞处理过程如下:
a .初始时,拥塞窗口 cwnd =1 ,慢开始门限的初始值 ssthresh =16 个报文段;
b .在执行慢开始算法时,拥塞窗口cwnd 的初始值为 1 ,以后发送方每收到一个对新 报文段的确认 ACK ,就把拥塞窗口值加 1 ,然后开始下一轮的传输,这个过程呈指数 增长,当拥塞窗口cwnd 增长到慢开始门限值 ssthresh 时,就改为执行拥塞避免算法, 此时拥塞窗口按线性规律增长。
c .假定拥塞窗口的数值增长到 24 时,网络出现超时(网络拥塞),更新 ssthresh =12 (即变为超时时刻的拥塞窗口数值 24 的一半),拥塞窗口再重新设置为 1 ,并继续执行 a~c 的过程。
在这里插入图片描述
图 5-9 慢开始和拥塞避免算法的实现举例
(2)快重传和快恢复 ①快重传
当发送端连续收到三个重复的 ACK 报文时,直接重传对方尚未收到的报文段,而不必 等待超时计时器超时。
②快恢复
如图5-10 所示,快恢复算法要求当发送方连续收到三个重复确认时,就执行“乘法减 小”算法,把慢开始门限 ssthresh 减半,再令 cwnd =新的 ssthresh ,之后执行拥塞避免 算法,使 cwnd 线性增长。
【注意】不管是拥塞控制还是流量控制都会影响发送窗口的大小,即发送大小取两者 的最小值。
在这里插入图片描述
图 5-10 快恢复算法示例

九、TCP 的运输连接管理

1 TCP 的连接建立
如图 5-11 所示,TCP 连接的建立即三次握手的过程,其步骤如下:
(1)客户机向服务器发送一个连接请求报文,其中 SYN =1 ,且随机选择一个起始序 号 seq =x;
(2)服务器收到连接请求报文后,若同意建立连接则发回确认并为该 TCP 连接分配 TCP 缓存和变量,确认报文中 SYN =1 ,ACK =1 ,确认号字段 ack =x+1 ,并产生服 务器的随机起始序号 seq =y;
(3)客户机收到确认报文后,还需向服务器发送确认,且需要给该连接分配 TCP 缓存和变量,这个报文中 ACK =1 ,seq =x+1 ,ack =y+1。
在这里插入图片描述

图 5-11 用三次握手建立 TCP 连接

2 TCP 的连接释放
如图5-12 所示,TCP 连接的释放即四次挥手的过程,其步骤如下:
(1)客户机想释放连接时,向服务器发送连接释放报文,并停止发送数据(主动关闭 连接),该报文中 FIN =1 ,seq =u(这里 u 是前面传送过的数据的最后一个字节的 序号加 1),注意此时服务器仍能向客户机发送数据。
(2)服务器收到连接释放请求后发送确认报文,其中 ACK =1 ,seq =v ,ack =u+1, 此时客户机到服务器这个方向的连接释放成功。
(3)若服务器想释放连接,则向客户机发送连接释放报文,此时 FIN =1 ,ACK =1, seq =w ,ack =u+1。
(4)客户机收到服务器的连接释放请求后,也需要发送确认报文,此时 ACK =1,
seq =u+1 ,ack =w+1 ,之后 TCP 连接还需要时间等待计时器设置的时间2MSL 后才能关闭连接。
在这里插入图片描述
图 5-12 TCP 连接释放的过程

3 TCP 的有限状态机
如图5-13 所示为 TCP 连接的各种状态之间的关系,即给出了TCP 的有限状态机。图 中每一个方框即TCP 可能具有的状态。每个方框中的大写英文字符串是 TCP 连接状态 名。状态之间的箭头表示可能发生的状态变迁。箭头旁边的字,表明引起这种变迁的 原因,或表明发生状态变迁后又出现什么动作。粗实线箭头表示对客户进程的正常变 迁。粗虚线箭头表示对服务器进程的正常变迁。另一种细线箭头表示异常变迁。
在这里插入图片描述
图 5-13 TCP 的有限状态机

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值