TCP四次挥手——断开连接 滑动窗口-流量控制

四次挥手

在TCP的四次挥手中,其重要作用就是释放客户端和服务器的连接。

这里的一些参数非常重要,因为这些参数的作用是为了表达TCP四次挥手断开连接的过程。

其中的参数如下

1.FIN:FIN (Finish) 是TCP协议中的一个标志位,用于表示在数据传输完成后,发送方已经完成了数据的发送,并且不会再发送任何数据。当一个TCP连接的一方发送了带有 FIN 标志的数据段时,表示该方已经完成了数据的发送,但仍然可以接收来自另一方的数据。

2.ACK:ACK (Acknowledgment) 也是TCP协议中的另一个标志位,用于表示收到数据的确认。当一个TCP连接的一方发送了带有 ACK 标志的数据段时,表示该方已经成功接收到了之前发送方的数据。ACK 用来通知发送方数据已经到达目的地并得到正确处理。

3.CLOSE_WAIT:等待应用程序调用close方法,但是如果说程序出现问题,close没有及时的调用或者说根本没调用,那么就会使得机器上出现大量的CLOSE_WAIT。CLOSE_WAIT 是 TCP 状态之一,它表示在 TCP 连接的一端已经发送了关闭连接的请求(通过发送 FIN),但是另一端尚未发送关闭连接的请求或确认(通过发送 ACK。

3.TIME_WAIT:客户端在收到服务器返回的FIN后,不能立即释放TCP连接,如果立即释放了,后续一旦对端重传了FIN,此时客户端无法应对,因此客户端这边就需要一个特殊状态TIME_WAIT状态来等待可能到达的FIN重传数据。一般来说,TIME_WAIT持续一段时间,等待对方FIN的重传,等待的时间,一般是2MSL,MSL这个数值通常是1min,这意味着超过2min还没收到重传的FIN,就认为对方不会重传了。

面试题

如果发现服务器端出现大量的TIME_WAIT,如何处理?

出现大量的TIME_WAIT,说明服务器这边出发了大量的主动断开的TCP连接操作,这个操作对服务器来说,是非常不科学的,一般都是客户端主动断开连接

滑动窗口

确认应答,超时重传和连接管理保证了可靠传输

TCP除了保证可靠传输之外,也希望尽可能高效的完成数据传输,滑动窗口就是其中的一种,提高传输效率的机制。

1.正常来说,主机A这里每次收到一个ACK才发送下一个数据。

2.但是一条一条发送效率比较低,因此采用批量发送的方法,因此引入了滑动窗口,而批量发送的数据量大小就是窗口大小,在这里,比如说滑动窗口大小是4,那么批量发了四组数据之后,不是等到4个ack都回来才继续发送新的数据,而是收到一个ack,就往后发一个新的。

 滑动窗口出现丢包的情况:

情况1:数据包已经抵达了,ACK被弄丢了

这种情况下,前面的ACK被弄丢了,但是只要是最后的ACK到达,那么久没有问题,就默认前面的数据全部收到。

 情况2:数据包就直接丢了

在这个过程中,假如说中间有一个数据包丢了,那么主机A就迟迟无法等到对方返回的ACK从1001开始,B主机一直在等待A的SYN,索要1001这个数据包且永远也得不到。

总结这两种丢包的处理

第一种情况对于ACK的丢失,不作任何处理  

第二种情况对于数据的丢失,只需要把缺失的数据重传就行,其他数据不用重传。

流量控制

窗口的机制很重要,窗口大小是可变的,通过窗口的大小来控制发送方发送的速度,发送的太快,接收方容易处理不过来。但是窗口越大单位时间发的数据就越多,效率就越高。窗口越小,单位时间发的数据就越少。

那么具体来说是如何控制速度呢,接收方有一个接受缓冲区,也就是阻塞队列。

以空闲空间的大小作为发送方发送数据的窗口大小,也就是上图中未使用的空间。需要把这个数值告诉发送方,接收方会返过来给发送方返回一个ACK,在ACK报文中,在TCP的报头中,制定一个字段来表示上述的空闲空间的大小。

 

上图中,16位窗口大小,只会在ack报文中生效,含义就是接收方接收缓冲区空闲空间的大小,这不意味着窗口大小就是64kb,因此TCP是可扩展的,有一个扩展因子可以将其扩展。 

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值