600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > TCP标志位 FIN和RST的区别

TCP标志位 FIN和RST的区别

时间:2024-07-07 23:28:46

相关推荐

TCP标志位 FIN和RST的区别

大家都知道TCP释放连接需要四次挥手, 主动释放端会发送FIN包,并且因为TCP是双工的, 关闭一个方向上的数据流,从而TCP连接处于半关闭状态,这也是为什么需要“四次”挥手的原因。

以上所述四次挥手是一种**“有序释放”**, 即,标志位为FIN的TCP报文会在之前所有排队的数据发送完之后,才会发送,在socket缓冲区和窗口中的数据也能保证发送成功。

通常我们调用shutdown(), close()函数后, TCP会发送FIN报文。

这里提一下shutdown 和 close 的区别。 shutdown是关闭一个socket, 可以关闭读、写、读写; close是关闭一个linux系统的文件描述符fd。

除了“有序释放”, 还有一种**“终止释放”**,比如进程异常退出, 是通过RST标志位实现的。 标志位为RST的TCP报文, 会立即发送, 而之前所有排队的数据被丢弃。

FIN报文需要应答ACK, RST报文不需要应答ACK;

TCP的半开连接:如果发生断点,或网络条件很差,一端发送RST后,会立马关闭连接,而另一端感知不到,仍然认为连接正常,这是一种半开连接的状态。

相关:RST攻击

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。