做教育类网站,住房建设危房改造网站,网站建站如何入手,网站弄论坛形式怎么做一、基本概念
流量控制就是指让发送方的发送速率不要太快#xff0c;使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。
注意#xff1a;之前在讨论可靠传输时#xff0c;讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现…一、基本概念
流量控制就是指让发送方的发送速率不要太快使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。
注意之前在讨论可靠传输时讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现的。
二、具体实现
接收方通过向发送方发送带有自己接收窗口值的报文段来控制发送方的发送窗口。注意TCP的窗口单位是字节这里也进一步体现了TCP是面向字节的。
你妈发送方给你接收方盛了三碗米饭发送窗口的值你吃完了感觉只能再吃一碗就告诉你妈你再吃一碗设置接收窗口的值于是你妈就再给你盛了一碗饭实现流量控制。
如图假设A和B已经完成TCP连接A向B发送数据在连接建立时B告诉A自己的窗口值。设B的接收窗口值为400。
1A发送的每个TCP数据报文段可携带100字节数据因为B的窗口值为400所以A将自己的发送窗口值也设置为400。开始时A先将序号1到100的数据封装成一个报文段中发送出去此时发送窗口内还可以发送300字节。seq是TCP报文段首部中的序号字段表示数据载荷的第一个字节的序号这里应该为1DATA表示TCP数据报文段。 2A又向B发送序号101到200还能再发送200字节。这里seq101。 3A又向B发送序号201到300 但是该报文段在传输过程中发生丢失。 4B向A发送收到的201号之前的数据的累积确认 并将接收窗口改为300对A进行流量控制。其中ACK是TCP报文段首部中的标志位取值为1表示该报文段是一个确认报文段。ack是TCP报文段首部中的确认号字段表示201号之前的数据都已正确接收希望收到201及之后的数据。rwnd是TCP报文段首部中的窗口字段表示接收窗口为300。 5主机A收到累积确认后让发送窗口向前滑动 并将自己的发送窗口值调整为300。虽然A之前发送了201-300的数据但是没有收到该段数据的累计确认于是该段数据不能移出窗口。 6201到300号数据在超时重传计时器到时后会进行重传 这中间会将新落入发送窗口内的数据发送出去。当发送完序号401到500后A暂时不再发送数据超时重传到时后只将201-300的数据重新发送而不发送新数据。之后B对A发送累计确认在该确认报文段还可以封装新设置的接收窗口值来对A进行流量控制这些过程和上面类似不再做演示。
这里还有一个特别的地方假设B向A发送的累积确认中B将窗口值改为了0也就是说B不再接收数据。相应地A也会把自己的发送窗口值改为0A不会再发送一般的报文段。 后来B又有一些缓存空间又向A发送一个接收窗口值为300的报文段。但是发生丢失这时候如果不采取措施就会陷入这种死锁局面。 于是经典的重传计时器措施再次出现当发送方收到窗口值为0的通知时就会启动该持续计时器当计时器到时后A就发送一个携带1字节数据的零窗口探测报文前面故意将一般两个字标红也就意味着这个零窗口探测报文不是一般的报文段即便接收方的接收窗口值为0也得接收该报文段。
B确认这个报文段时给出自己现在的接收窗口的值如果还为0那么就A收到后重启该计时器。
这时候可能有人会想到那要是这个零窗口探测报文段也丢失了呢
那就给这个零窗口报文段也加一个计时器如果计时器超时就重发该报文段。
注意TCP的发送窗口实际为min{发送方自身的拥塞窗口值接收方的接收窗口值}。
但是拥塞窗口值涉及到拥塞控制所以这里不做详细概述。
三、示例
1、主机A向主机B连续发送了2个TCP报文段其序号分别是80和220 1第1个报文段携带了多少字节的数据主机B收到第1个报文段后发回的确认中的确认号是多少 2若主机B收到第二个报文段后发回的确认号300则A发送的第二个报文段至少携带了多少字节的数据 3如果在情况2中A的第二个报文段中实际携带了100字节的数据而B返回的窗口值为100字节那么主机A接下多最多可以发送多少字节的数据这些数据的起止编号分别是多少
解
1
根据前面所述序号是每个报文段的第一个字节的序号也就是说第一个报文段的序号应该是80到219共140个字节。B收到后返回的确认号应该为220。返回的确认号是已经收到x-1及之前的想要x及之后的。
2
299-220180所以第二个报文段至少携带了80个字节。 3
实际携带了100个字节但是B的确认号是300也就是80个字节。并且B的接收窗口现在为100。 那么A的发送窗口也要改为100并且A的发送窗口向前移动80个字节。但是之前发送过的20字节完全不知道什么情况题目并没有明确说这20个字节超时我们目前只能知道没有收到这20个字节的确认所以A接下来可以发送新落入发送窗口内的数据共80字节起止编号为320和399。