理论教育 TCP中的滑动窗口概念及应用

TCP中的滑动窗口概念及应用

时间:2023-08-21 理论教育 版权反馈
【摘要】:图3-71表示发送端要发送900B长的数据,划分为9个100B长的报文段,而对方接收端确图3-71 TCP中的滑动窗口概念a)发送窗口大小为500B b)发送了400B,收到的确认序号为201,窗口大小不变,还可发送300B c)收到的确认序号为401,窗口大小变为400B,还可发送400B认的发送窗口为500B。发送端的TCP要维护一个指针。TCP采用了一种自适应算法。

TCP中的滑动窗口概念及应用

传输控制协议(Transmission Control Protocol,TCP)是TCP/IP体系中面向连接的运输层协议,它提供全双工的可靠的交付服务。协议规定了TCP软件怎样识别给定计算机上的多个目的进程(即正在运行中的多个程序),如何对分组丢失和分组重复差错进行恢复。此外,协议还规定了运行一台计算机上的多个应用程序同时进行通信,也可对接收到的数据进行分解和分别送到多个应用程序。

1.TCP报文段的首部

TCP报文段分为首部和数据两部分,如图3-70所示。TCP的全部功能都体现在它的首部各字段。首部的前20B是固定的,后面有4NB是根据需要可增加的选项(N是整数)。因此TCP首部的最小长度是20B。

978-7-111-43240-1-Chapter03-86.jpg

图3-70 TCP报文段的首部

首部固定部分各字段的意义:

(1)源端口和目的端口。各占2B。端口是运输层与应用层的服务接口。16bit的端口加上32bit的IP地址,构成了插口(Socket),它相当于运输层服务访问点(Transport Service Access Point,TSAP)的地址,共48bit。

(2)序号。占4B。TCP是面向连接数据流的,它传送的报文可看成为连续的数据流,其中每一个字节都对应于一个序号。首部中的“序号”指的是本报文段发送数据中的第一个字节的序号。

例如,某个报文段的序号为301,携带的数据100B,则本报文段数据的第一个字节的序号为301,最后一个字节的序号为400。这样,下一个报文段的数据序号应从401开始。

(3)确认序号。占4B。它是期望收到对方下一个报文段数据的第一个字节的序号。例如,收到一个序号字段值为501的一个报文段,数据长度为200B,如果响应的报文段中确认的序号值为701,则表明501~701之间的数据均已正确收到。

由于序号字段有32bit长,可对4GB(232bit)的数据进行编号。保证序号具有足够的重复使用空间。

(4)数据偏移。占4个bit,它是指数据开始的地方离TCP报文段的起始处有多远。

(5)保留。占6个bit,保留今后使用,目前应为0。

(6)说明本报文段性质的控制比特(每个性质说明1bit)。

①紧急(Urgent,URG)比特。URG=1时,告诉系统此报文段中有紧急数据,应尽快传送(相当于最高优先级)。

②确认(Acknowledgement,ACK)比特。ACK=1时,确认序号字段有效。ACK=0时,确认序号无效。

③推送(Push,PSH)比特。PSH也可称为急迫比特,即尽快(推送)交付给接收应用进程(进程:正在运行的程序)。

④复位(Reset,RST)比特。RST=1时,表明TCP连接中出现严重差错,必须释放,然后再重新建立运输连接。

⑤同步(Synchronization,SYN)比特。在建立连接时,用来同步序号。(www.daowen.com)

⑥终止(Final,FIN)比特。FIN=1时,释放一个连接。

(7)窗口。占2B。窗口字段用来控制对方发送的数据量。TCP连接的接收端按自己缓存的空间大小确定自己的接收窗口大小,然后通知对方确定的发送窗口大小。

(8)检验和。占2B。检验和字段的范围,包括首部和数据两部分。

(9)选择。长度可变。只有一个选项:告诉对方TCP,缓存能接收的报文段的数据字段的最大长度(Max-SegmentSize,MSS)。当没有选项时,TCP的首部长度为20B。

选择较小的MSS时,网络的利用率降低。

2.TCP的流量控制与拥塞控制

为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。发送窗口在建立连接时由双方商定。但在通信过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口大小。

图3-71表示发送端要发送900B长的数据,划分为9个100B长的报文段,而对方接收端确

978-7-111-43240-1-Chapter03-87.jpg

图3-71 TCP中的滑动窗口概念

a)发送窗口大小为500B b)发送了400B,收到的确认序号为201,窗口大小不变,还可发送300B c)收到的确认序号为401,窗口大小变为400B,还可发送400B

认的发送窗口为500B。发送端只要收到了对方的确认,发送窗口就可前移。发送端的TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段距离。当指针移动到发送出窗口的最右端(500KB位置)时,就不能再发送报文段了。

实现流量控制并不仅仅为了接收端来得及接收。如果发送端发出的报文过多,会使网络负荷过重,由此会引起报文段的延时增大。报文段延时的增大,会使主机不能及时地收到确认信息,于是会重传更多的报文段,进一步加剧网络的拥塞。因此,主机应当适当地降低发送速率。

3.TCP的重传机制

TCP将数据流看作字节序列,为便于传输,又将这个字节序列划分为若干个报文段。通常,每个报文段又被放置到一个IP数据报中,并通过互联网传送。

TCP的重传机制是每发送一个报文段就设置一次计时器。只要计时器设置的重传时间已到,如果还没有收到确认信息ACK,就要重传这一段报文。

TCP采用了一种自适应算法。这种算法记录每个报文段发出的时间和收到确认报文段的时间,这两个时间差称为报文段的往返延时。显然,计算器设置的重传时间应略大于平均往返延时。

TCP采用滑动窗口传送机制和报文段重传机制,不仅提供了流量控制功能,而且还提供了可靠的传输服务。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈