计算机网络阅读笔记——第五章运输层

思维导图

在这里插入图片描述

阅读笔记

1.运输层协议概述

  • 运输层向它上面的应用层提供通信服务。它属于面向通信部分的最高层,同时也是用户功能中的最低层
  • 通信的真正端点并不是主机而是主机中的进程。也就是,端到端的通信是应用进程之间的通信,网络层之间的传输是无法到进程之间的,需要运输层。
  • 运输层的一个重要的功能:复用和分用
    • 复用:多个进程使用同一个运输层协议传输送数据
    • 分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的进程。
  • 运输层和网络层在这里插入图片描述
    如上图知:网络层为主机之间提供逻辑通信,而
    运输层为应用进程之间提供端到端的逻辑通信
  • 运输层还要对收到的报文进行差错检测
  • 运输层的两个主要协议
    • 用户数据报协议UDP(User Datagram Protocol)
    • 传输控制协议TCP(Transmission Control Protocol)
  • 使用UDP和TCP协议的各种应用和应用层协议
    在这里插入图片描述
  • 端口:是应用层的各协议进程与运输实体进行层间交互的一种地址。是软件端口。占16位
  • 端口号只具有本地意义。它只是为了本计算机应用层中的各个进程在和运输层交互的层间接口。在互联网不同计算机中,相同端口号是没有关联的。
  • 端口号一共分为两类:
    • 服务器端使用的端口号:
      • 熟知端口号或系统端口号:数值为0~1023。
        在这里插入图片描述
      • 登记端口号:数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,防止重复。
    • 客户端使用的端口号:数值为49152~65535。这类端口号仅在客户进程运行时才动态选择,又叫做短暂端口号。

2.用户数据报协议UDP

  • UDP只在IP数据报服务上增加了很少一点的功能:复用和分用的功能以及差错检测的功能。
  • UDP主要特点:
    • 无连接
    • 尽最大努力交付
    • 面向报文的:UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。既不合并也不拆分。而是保留这些报文的边界。
    • 没有拥塞控制:网络出现的拥塞不会使源主机的发送速率降低,要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,保证网络的实时性。
    • 支持一对一、一对多、多对以和多对多的交互通信。
    • 首部开销小,只有8个字节
  • UDP的首部格式
    在这里插入图片描述
    • 长度:UDP用户数据报的长度,最小值为8(仅有首部)
    • 源端口和目的端口
    • 检验和:检验UDP用户数据报在传输中是否有错。有错就丢弃。
    • 伪首部:不是真正的首部,只是目的主机在检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报
      在这里插入图片描述

3.传输控制协议TCP概述

  • TCP的主要特点:
    • TCP是面向连接的运输层协议:也就是说,应用进程之间的通信好像在“打电话”:通话前要先拨号建立连接,通话结束后要挂机释放连接
    • 每条TCP连接只能有两个端点:每一条TCP连接只能是点对点的。
    • TCP提供可靠交付的服务:通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达
    • TCP提供全双工通信:允许通信双方的应用进程在任何时候都能发送数据。
    • 面向字节流:TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP交互是一次一个数据块,但是TCP把应用程序叫下来的数据仅仅看成是一连串的无结构的字节流。TCP不保证接收方收到的数据块和发送方发出的数据块具有对应大小的关系,但是保证接收方能正确的识别字节流还原成有意义的应用层数据。
  • TCP和UDP在发送报文是采用的方式完全不同。TCP并不关心应用进程一次把多长的报文发送到TCP的缓存中。而是根据对方给出的窗口值和当前网络堵塞的程度来决定一个报文段应该包含多少个字节。UDP则是要关心上层发下来多少字节,因为不管发多少都直接传送,所以不能过长或过短。
  • TCP的连接:
    • TCP把连接作为最基本的抽象
    • TCP连接的断点叫做套接字(socket)或插口
      套接字socket = (IP地址:端口号)
      TCP连接::={socket1,socket2}

4.可靠传输的工作原理

  • 理想的传输条件有以下两个特点:
    • 传输信道不产生差错(解决办法:使用一些可靠传输协议,出差错重传)
    • 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。(解决办法:接收方来不及处理收到的数据时,及时告诉发送方适当降低发送数据的速度)

(1)停止等待协议

  • “停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
  • 无差错情况:
    在这里插入图片描述
  • 出现差错
    在这里插入图片描述
    • A在发送完一个分组后,必须暂时保留已发送的分组的副本,只有在收到相应确认后才能清除暂时保留的副本。
    • 分组和确认分组都必须进行编号
    • 超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些
  • 确认丢失或确认迟到
    在这里插入图片描述
  • 通过以上的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信
  • 这种可靠协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。意思重传的请求是自动进行的。
  • 停止等待协议的信道利用率
    在这里插入图片描述
  • 为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是使用流水线传输,流水线就是发送方可以连续发送多个分组不需要等待确认再发送,有连续ARQ协议和滑动窗口协议。

(2)连续ARQ协议

在这里插入图片描述

  • 它的意义是:位于发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认
  • 连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。就把发送窗口向前滑动一个分组的位置,发送下一个分组。
  • 接收方一般都是采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按需到达的最后一个分组发送确认。表示到这个分组位置的分组都已经正确收到了
  • 优点:容易实现,即使确认丢失也不必重传
  • 缺点:不能向发送方反映出已经正确收到的所有分组的信息
    在这里插入图片描述

5.TCP报文段的首部格式

  • 首部最小长度20字节,后面有4n字节是根据需要增加的选项
    在这里插入图片描述
  • 源端口和目的端口
  • 序号(报文段序号):序号使用mod232运算,整个要传送的字节流的起始序号必须在连接建立时设置,序号不是1,2,3,4,这样的逐步上升,而是间隔着每个报文段的数据字节长度,比如某一个序号为301,数据段为100字节,则下一个报文段的序号是401(即序号中涵盖了每个报文段的大小)。
  • 确认号:是期望收到对方下一个报文段的第一个数据字节的序号。比如A向B发送了一个序号为301,数据段为100字节的,则B向A的确认报文段中应该将确认号填入401。
    即:若确认号=N,则表明:到序号N-1为止的所有数据都已经正确收到。
  • 数据偏移:指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。即指定TCP首部的长度,单位为4字节
  • 保留:保留为今后使用,但目前应置为0
  • 6位控制位:
    (1)紧急URG:为1时,代表此报文段中有紧急数据,应尽快传送,而不要按原来的排队顺序来传送。如紧急取消指令。
    (2)确认ACK:TCP规定,在连接建立后所有传送的报文段都必须把ACK置1,代表确认已经连接。
    (3)推送PSH:当两个应用进程进行交互通信时,有时在一端的应用进程希望在键入一个命令后立即能够收到对方的响应。在这种情况下,TCP就可以使用推送操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个都填满了再向上交付。
    (4)复位RST:为1时,表示TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。
    (5)同步SYN:在连接建立时用来同步序号。当SYN=1且ACK=0时,表明这是一个连接请求报文段对方若同意建立连接,则应该在响应的报文段中使用SYN=1和ACK=1
    (6)终止FIN:用来释放一个连接,当FIN=1时,表明该报文段的发送方的数据已经发送完毕,并要求释放运输连接。
  • 窗口:窗口值作为接受方让发送方设置其发送窗口的依据。窗口指的是发送本报文段一方的接收窗口(而不是自己的发送窗口),单位为字节
    例如:发送了一个报文段,其确认号为701,窗口字段是1000,这就是告诉对方:“从701号算起,我的接收缓存空间还可接收1000字节数据,你下次还能发最多1000字节”
  • 检验和:计算检验和时,要在TCP报文段前面加上12字节的伪首部。格式和UDP一样,但是应该把伪首部低第4字段中的17改为6(TCP的协议号是6)。
  • 紧急指针:仅在URG=1时才有意义,它指出紧急数据末尾在报文段中的位置,即本报文段中的紧急数据的字节数。
    值得注意的是:即使窗口为零时也可发送紧急数据
  • 选项:长度可变,最长可达40字节。
    (1)最大报文段长度MSS(Maximum Segment SIze):数据段的最大长度
    (2)窗口扩大(3字节):扩大窗口
    (3)时间戳选项(10字节):用来计算往返时间RTT
    在这里插入图片描述
    或用来处理TCP序号超过232的情况,又称防止序号绕回PAWS

6.TCP可靠传输的实现

在这里插入图片描述

  • 窗口后延有不动(没有收到新的确认)和前移(收到了新的确认)
  • 窗口前延有不动和前移,不动的两种可能:
    (1)没有收到新的确认
    (2)收到了新的确认但是窗口变小了,刚好不动。
  • 发送窗口:
    在这里插入图片描述
    可以看出要描述一个发送窗口的状态需要三个指针:P1,P2和P3,指针都指向字节的序号。
  • 接收窗口
    在这里插入图片描述
    在这里插入图片描述
  • 特殊情况
    在这里插入图片描述
    A的发送窗口已满,停止发送,但是B的确认报文阻塞在网络中,于是,A经过一段时间后就重传这部分数据,直到B收到B的确认为止。(超时重传)
  • 窗口和缓存区的关系
    在这里插入图片描述
  • 发送缓存用来暂时存放:
    (1)发送应用程序传送给发送方TCP准备发送的数据
    (2)TCP已发送出但是未收到确认的数据
  • 发送窗口通常只是发送缓存的一部分。已被确认的数据应当从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的
  • 接收缓存用来暂时存放
    (1)按序到达的、但尚未被接收应用程序读取的数据。
    (2)未按序到达的数据。
  • 强调的问题:
    • 虽然A的发送窗口是根据B的接收窗口设置的,但是在同一时刻,A的发送窗口并不是总是和B的接收窗口一样大。
    • 对于不按序到达的数据接收窗口应该先临时保存在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。

7.超时重传时间的选择

在这里插入图片描述

  • 问题:重传报文段后,经过一段时间收到的确认报文段不知道到底是确认之前的报文段还是确认重传的报文段。如果当做确认之前的报文段RTO就会越来越大,如果当做确认重发报文段RTO就会越来越小。
  • 解决办法:Kam提出“报文段每重传一次,就把超市重传时间RTO增大一些(典型的做法是取新的重传时间为旧的重传时间的2倍),而不采用这次的往返时间样本去计算RTO,当不再发生报文段的重传时,才根据上面给出的公式计算超时重传时间”
  • 问题:若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?
  • 解决办法:选择确认(SACK):
    在这里插入图片描述
    在这里插入图片描述

8.TCP的流量控制

  • 流量控制就是让发送方的发送速率不要太快,要让接收方来得及。
  • 利用滑动窗口机制可以方便地在TCP连接实现对发送方的流量控制
    在这里插入图片描述

9.TCP的传输效率

  • 控制TCP报文段的发送时机三种方式:
    • TCP维持一个变量,等于最大报文段长度MSS。只要缓存中存放的数据达到MSS字节,就发送
    • 由发送方的应用进程指明要求发送报文段,即推送
    • 使用计时器,计时器一到就发送。
  • 使用Nagle算法:
    在这里插入图片描述
  • 糊涂窗口综合征:
    在这里插入图片描述
  • 解决办法:让接收方等待一段时间,使得接收缓存已有足够空间容纳一个最长的报文段,或者等待接收缓存已有一半的空闲空间,只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小

9.TCP的拥塞控制

  • 拥塞:在计算机网络的链路容量(带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞。
  • 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至过载。是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。而流量控制往往指点对点通信量的控制,是个端到端的问题
  • 拥塞控制所起的作用
    在这里插入图片描述
  • 拥塞控制从大的方面看,可以分为两种:
    • 开环控制:设计网络时事先将有关发生的拥塞的因素考虑周到。一旦整个系统运行起来了,就不再中途进行改正了。
    • 闭环控制:基于反馈环路的概念,主要有以下措施:
      (1)检测网络系统以便检测到拥塞在何时、何处发生
      (2)把拥塞发生的信息传送到可采取行动的地方
      (3)调整网络系统的运行以解决出现的问题
  • TCP拥塞控制具体方法:
  • 慢开始和拥塞避免(基于窗口的拥塞控制):
    • 发送方维持一个叫做拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态在变化,发送窗口大小始终等于拥塞窗口
    • 原则:只要没有网络拥塞,就尽量时拥塞窗口大一些,提高网络利用率,只要出现拥塞就减小。
    • 判断网络拥塞的依据:超时
    • 慢开始算法:由小到大逐渐增大发送窗口,规定每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个SMSS的数值。
      在这里插入图片描述
    • 传播伦次:往返时间RTT,强调把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对己发送的最后一个字节的确认。
    • 为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量,慢开始门跟用法如下:
      在这里插入图片描述
    • 拥塞避免算法:让拥塞窗口cwnd缓慢地增大,即没经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1。
    • 拥塞控制时的变化情况
      在这里插入图片描述
    • 慢开始的区别:有时候个别报文段会在网络中丢失,实际上网络并没有堵塞,这是会发生超时重传,将发送方错误地启动慢开始,因而降低了传送效率。从而使用快重传和快恢复算法
    • 快重传快恢复算法优势:可以让发送方尽早知道发生了个别报文段的丢失
    • 具体算法:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 发送方窗口的上限值 = Min[rwnd,cwnd],即接收方窗口和拥塞窗口较小的一个

9.主动队列管理AQM

起因:假如一个路由器对某些分组的处理时间特别长,或者路由器的队列已经满了不得不丢弃分组,那么这就会导致报文段的重传,重传会使TCP连接的发送端认为在网络中发生了堵塞,于是采取堵塞控制措施,但实际上网络并没有堵塞。
更为严重的是,在网络中通常由很多的TCP连接,如果发生路由器的尾部丢弃,就可能同时影响多条TCP连接,使他们全部进入慢开始状态,称全局同步。全局同步使得全网的通信量突然下降了很多,而在网络恢复正常后,通信量又突然增大很多
解决办法:采用主动队列管理AQM,即不要等路由器队列满了才不得不丢弃后面的分组,应该在队列长度达到某个值得警惕的数值就主动丢弃到达的分组,这样就提醒了发送方放慢发送的速率。

10.TCP的运输连接管理

  • 运输连接三个阶段:连接建立、数据传送和连接释放
  • 连接建立过程要解决以下三个问题:
    • 要使每一方能够确知对方的存在
    • 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量)
    • 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
  • TCP连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。

(1)TCP连接的建立

  • TCP连接也叫握手,如图:
    在这里插入图片描述
    TCP连接的详细步骤:
    (1)B的TCP服务器进程先创建传输控制块TCB(存储了每一个连接的一些重要信息,如TCP连接表,指定发送和接收缓存的指针等等),准备接收客户进程请求,然后服务器进程进入LISTEN(监听)状态等待客户端连接
    (2)A的TCP客户进程也是首先创建传输控制协议TCB。然后向B发送连接请求报文段,此时首部SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段不能携带数据,但要消耗一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。
    (3)B收到请求后,如果同意连接,则向A发送确认,确认报文段应将SYN和ACK都置1,确认号是ack=x+1(x前的都收到了),同时选择一个初始序号seq = y。这个报文段也不能携带数据,但同样消耗一个序号,这是服务器进程进入SYN-RCVD(同步收到)状态
    (4)A收到B的确认后,还要向B给出确认,ACK置1,确认号ack = y +1(y前的都收到了),而自己的序号是x+1。这个报文段可以携带数据,但如果不携带数据则不消耗序号(下个数据报文段还是seq=x+1)。这是,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。
    (5)B收到A的确认,也进入ESTABLISHED(已建立连接)状态。
  • 为什么A最后还要发送一次确认呢?
    主要防止已失效的连接请求报文段突然又传到了B

(2)TCP连接的释放

TCP释放的图:
在这里插入图片描述
TCP释放的详细步骤:
(1)A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP链接。A把连接释放报文段首部的终止控制位置1,其序号seq=u(等于前面传输过的数据最后一个字节的序号加1)。这时A进入FIN-WAIT-1(终止等待1)状态,等待B的确认,FIN报文段即使不携带数据,它也消耗一个序号
(2)B收到连接释放报文即发出去确认,确认号ack=u+1,而这个报文自己的序号是v,然后B就进入CLOSE-WAIT(关闭等待)状态。这时TCP连接处于半关闭状态,即A没有数据要转发送了,但B若发送数据,A仍要接收。
(3)A收到来自B的确认后,就进入FIN-WAIT-2(终止状态2),等待b发出的连接释放报文段。
(4)若B已经没有要向A发送的数据,B就发送释放报文段,FIN=1,现假定B的序号为w,B还必须重复上次已发送的确认号ack=u+1。这时B就进入LAST-ACK(最后确认)状态
(4)A在收到B的连接释放报文段后,必须对此发出去确认,将ACK置1,确认号ack=w+1,自己的序号是seq=u+1,然后进入TIME-WAIT(时间等待)状态。必须经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态,时间MSL叫做最长报文段寿命。
(5)B收到后转为CLOSED状态。
为什么A在TIME-WAIT状态必须等待2MSL时间?
在这里插入图片描述

  • TCP的有限状态机
    在这里插入图片描述

习题解答

1.常见问题与解答

  1. 从通信的起点和终点来比较,TCP和IP的不同点是什么?
    TCP的起点和终点是运输层上面的两个套接字。
    IP的起点和终点是网路上的两个主机。
  2. TCP都使用哪些计时器?
    共使用四种计时器:重传计时器、持续计时器、保活计时器和时间等待计时器。
    (1)重传计时器
    在这里插入图片描述
    (2)持续计时器
    在这里插入图片描述
    (3)保活计时器
    在这里插入图片描述
    (4)时间等待计时器
    在这里插入图片描述
  3. 是否TCP与UDP都需要计算往返时间RTT?
    RTT只对TCP很重要,因为TCP要根据RTT计算重传时间,而UDP没有确认和重传机制,因此RTT对UDP没有什么意义。
  4. TCP在连接建立时所发送的第一个SYN报文段只有首部,其数据部分是空的,但为什么SYN报文段要消耗一个序号呢?
    在这里插入图片描述
  5. 在这里插入图片描述
    这个确认报文如果没有携带数据就不消耗序号,前面两次握手需要序号是因为前面两次是很重要的,并且传输的报文都需要被确认,要填入确认号的,所以必须消耗一个序号。
  6. TCP连接中接收方到底什么时候确认发送方发送的数据报
    一般都是接收方需要发送自己的数据报的时候,将确认的信息顺带着发过去,这样可以减少发送数据报的次数。
    但是在拥塞控制中,快重传要求接收方只要收到错误的信息就重发确认,而不是顺带发过去。

2.习题与解答

  1. 试着说明有些应用程序愿意采用不可靠的UDP,而不愿意采用可靠的TCP
    在这里插入图片描述
  2. 如图
    在这里插入图片描述
  3. 一个UDP用户数据报的数据字段为8192字节。在链路层要使用以太网传送。试问应当划分为几个IP数据报片?说明每一个IP数据报片的数据字段长度和片偏移字段的值。
    [对于IP数据报来说UDP首部和数据已经成为整个数据段了,所以IP数据分片的时候只需要将每个分片加上IP首部就行了,与UDP无关]
    在这里插入图片描述
  4. 在停止等待协议中,如果使用编号是否可行?为什么?
    在这里插入图片描述
  5. 如图
    在这里插入图片描述
    [停止等待协议只有0和1两种编号]
  6. 如图
    在这里插入图片描述
  7. 如图
    在这里插入图片描述
    (1)
    如果接受方发出的确认成功收到,则是[5,7]
    如果接受方发生的确认成功所有的都丢失,则需要重发[2,4]
    组合共有[2,4] [3,5] [4,6] [5,7]
    (2)接受方期望收到序号5的分组,说明序号2,3,4分组都已经收到并发送了确认,且序号1的分组的确认肯定被发送方收到了可见,对序号为2,3,4的分组的确认有可能仍滞留在网络中。
  8. 如图
    在这里插入图片描述
    在这里插入图片描述
    [主要取决于接收方发送确认的时机]
  9. 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认段对应的数据的重传。试说明理由。
    还没到重传时间就收到了更高序号的确认,会先发更高序号的数据报,等重传时间到了再进行重传。
  10. 如图
    在这里插入图片描述
    [带宽不受限制,忽略发送延迟]
  11. 如图
    在这里插入图片描述
    [信道利用率为吞吐量/带宽]
  12. 拥塞控制综合题,如图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  13. TCP在进行流量控制时,是以分组的丢失作为产生拥塞的标志。有没有不是因为拥塞而引起分组丢失的情况?
    在这里插入图片描述
  14. 解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据
    假设A到B某些报文段正在网络上传送,但是丢失了,这是如果突然释放这段数据就丢失了。
  15. 如图
    在这里插入图片描述
  16. 如图
    在这里插入图片描述
  17. 在TCP的连接建立的三报文握手过程中,为什么第三个报文段不需要对方的确认?这会不会出现问题?
    第三个报文段是指确认A方已经收到了B方的确认数据报,两方正式建立连接。如果没有这个第三个报文段的话,如果B的确认在网络中丢失,就这样建立连接了,A方并没有建立连接。
  18. 如果接收方突然因某种愿意不能够再接收数据了,可以立即向发送方把接收窗口为零的报文段。这时会导致接收窗口的前沿后退。试问这种情况是否允许?
    我们知道窗口的前沿是不能后退的,当发送方收到这样的信息时,并不是把发送窗口缩回到零,而是立即停止发送什么时候可以再发送数据,就要等待接收方重新开放接收窗口,即给出一个非零的接收窗口。如果一直没有接收到,就等持续计时器计时后再发送。
  19. 如图
    在这里插入图片描述
    [发送窗口至少能容纳的比特数 = 往返时间*数据率,要是小于往返时间的话会导致还没有收到确认数据报就已经将窗口内容发送完导致等待,降低了网络利用率,大于往返时间保证数据连续发送]
    [报文段的最大生存内序号不能重复]
  20. TCP中时间戳的作用?
    在这里插入图片描述
  21. 如图
    在这里插入图片描述
    在这里插入图片描述
  22. TCP对拥塞控制采用的是动态调整的策略,能否给出动态调整的要点:
    (1)探测网络的拥塞水平。慢开始就是从发送一个报文段
    (2)如果网络没有堵塞,就加快发送速率。在慢开始和拥塞避免阶段都是这样
    (3)如果网络发生了堵塞,就降低发送速率。例如回到慢开始,或者让ssthresh减半。
  23. 请用框图表示方法来说明TCP的拥塞控制流程
    在这里插入图片描述
发布了33 篇原创文章 · 获赞 3 · 访问量 623

猜你喜欢

转载自blog.csdn.net/qq_43647628/article/details/104440441