计算机网络 CH5

第五章 运输层

5.1 运输层概述

前面的网络层,实现的是不同IP设备之间的通信;但是实际中,更加本质的端到端的通信应当是进程之间的通信(比如说,微信和微信服务器之间的通信),这就是这个部分涉及的内容,如图所示:alt text

本章主要讨论TCP和UDP两种协议,其中前者最重要

(IP提供的是无连接,不可靠的传输服务)alt text

  1. 端口号:类似于IP和mac地址,但是用于进程之间的通信;(类似于process ID)alt text相当于,用于统一不同操作系统的processID,是一种进程标识符 alt text需要注意的是,端口号之最用于当前的主机;不同计算机之间即使端口号一样,代表的内容也意义不同 其他一些基本的内容,看ppt 服务器用的是数值比较小的端口,用户用的是数值大的端口

5.2 TCP和UDP协议的对比

alt text alt text 也就是,在TCP眼里,看到的是一个一个的字节,传递是面向字节流的 alt text TCP需要确认错误的得到重传,不能乱序,等等 这部分内容总结如下:alt text

5.3.1 TCP报文段的首部格式

alt text首部最重要的三个概念:序号指的是数据段第一个字节的序号;确认号指的是这个序号之前的信息我已经正确收到(比如说,确认号1000指的是0-999字节的数据已经被正确接收到),ACK是0/1,用来表示是否确认号字段有效 alt text比如说这个题,就是将数据依次向后排列,然后得到序号alt text这个题仔细了解一下意义,了解一下双方互相需要、确认了什么数据

alt text 如果中间有一个断了,那么只能确认断掉的这个地方之前的

alt text数据偏移段相当于指出了报文段首部的长度

TCP报文的检验,是对于首部和后面的数据都进行了检验事实上。 alt text紧急标志位&紧急指针:如果紧急标志位有效的话,表示有紧急数据,可以进行“插队”

5.3.2 TCP的运输连接管理

alt textTCP连接分为以下的三个阶段;“三报文握手”总体的逻辑如下:alt text这里需要注意的是,这里面实际上不会传递有用的实际信息,但是对于序号值,由于占用了序号x,下一个序号应该是x+1;另一方面,在连接建立之后,下一个发送数据开始时的信号依然可以使用x+1(因为上面实际上没有占用)对于各个ack的值,都是之前的+1

alt text

关于释放,分为两个阶段:alt text一开始的时候,到达半关闭状态;(就是一个方向被关闭,另一个方向还可以接收信息)

5.3.3 TCP的流量控制

也就是说,在一定的时候,可能TCP发送报文,但是接收方在忙于别的事情,只能先将数据放入缓存;因此,需要依赖于接收方控制发送方alt text

这里控制的方法是:维护一个接收方窗口大小,由接收方缓存剩余的空间决定;也就是说,发送方传过来的数据有的被接收方(的进程)应用接收;而有的被放入缓存区;之后,接收方需要告知发送方现在新的缓存区大小剩下多少;当缓存区剩余大小为0的时候,会发生死锁,具体原因如下:alt text 想要破局,会通过一个零窗口探查:利用计时器和一个很小的探测数据(1byte)之后通过使得接收方被迫对其响应一个ack,来使得窗口相关信息被更新过来。 具体的流程如下(加上重传计时器)alt text

理解一下这个习题;alt text 相当于,发送窗口大小为4000字节;现在发送了2000字节的数据,接收方接受了一个,那么剩下的1000字节发送的数据会被缓存起来;并且告知了现在缓存区总大小为2000字节。因此,现在可以还可以发送的剩下2000-1000=1000字节

5.3.4 TCP的拥塞控制 & 5.3.5 TCP拥塞控制与网际层拥塞控制的关系

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫作拥塞(congestion)。

与流量控制相比,这里相当于是控制发送资源的大小,使得网络中能够承受现在的负荷;流量控制只与发送、接收方有关,而拥塞控制涉及到整个网络中的性能

alt text发送方窗口大小的限制;因此,在不考虑流量控制,就看cwndalt text

以及一个慢开始门限 ssthresh(如下);对于慢开始算法,每次接收到几个确认的内容,那么cwnd加多少(所以呈现出大小不断*2的指数级变化);然而当cwnd超过ssthresh的时候,采用拥塞避免算法,每次无论如何,cwnd只会+1 在这个初始的版本中,在发生超时的时候,将cwnd降低为1,ssstresh设置为cwnd/2;但是,超时可能是因为数据发生误码而不是拥塞

为了对这个现象进行改善,有一个新的Reno版本: 快重传算法alt text快重传可以避免后面由于超时导致的重传;并且,在快重传之后,可以进行快恢复,将慢开始门限ssthresh的值和拥塞窗口cwnd的值都调整为当前cwnd值的一半,并开始执行拥塞避免算法。整个的流程如下所示:alt text

5.3.6 TCP可靠传输的实现

alt text注意一下这里ack在选择重传和TCP协议中的不同意义! 发送窗口内的数据也会分为如下的两种情况:alt text 为了区分所有这些内容,我们使用三个指针:P1为窗口中的第一个已发送但没有确认的序号,P2为窗口内第一个没发送的序号,P3为第一个不允许发送的序号

5.3.7 TCP超时重传的选择

需要设置适当的超时重传时间;超时重传时间RTO应略大于往返时间RTT(这很合理)但是,不同信息的RTT可能不同,因此,能想到一种比较合理的方法是RTO略大于所有RTT的加权平均值;并且,这应当是一个迭代的过程 alt text

计算出了加权平均RTT之后,用下面的公式进行计算RTO:alt text

以及另一个测量RTT的Karn算法(了解?)如下:alt text

5.3.8 TCP的选择确认

不明所以,后面再看


计算机网络 CH5
https://zrwrz.github.io/2025/12/18/计算机网络-CH5/
作者
zrw
发布于
2025年12月18日
许可协议