一、建立连接阶段

1.访问非listen状态的服务器接口

    A向B发出连接,而B相应的端口并未监听,这时B会发送一个RST包给A。

ps:如果服务器的BACKLOG已满,客户端的SYN包只是被简单丢弃,客户端表现为连接超时,服务器并不会发RST包。

2.客户端的SYN包在网络传输过程中丢失

    A超时重发SYN包。

3.服务器未开启(指电源)    

   A超时重发SYN包。  

(2和3中的超时之后会重发,但是超时定时器的时间也会一次比一次长,总共等待75s未收到响应包就返回错误)

TCP连接的部分异常情况

(截图自https://www.cnblogs.com/wanpengcoder/p/5356776.html

二、连接已建立阶段

1.A断电了,而B不知情

   TCP设有一个保活计时器,应用层还有一个心跳机制。每收到一次客户的数据会重启计时器,而当计时器时间到了,就会发生探测报文,以后每隔75s发送一次,若连续十次没有响应,则B认为A出现故障了,接着关闭连接。

2.A断电之后重启了,B并不知情,并且向A发送了一个报文

   A重启之后,之前所有的连接已丢失。此时收到一个B发来的报文,一脸懵逼,会回复一个RST包。

 

相关文章:

  • 2021-06-03
  • 2021-06-24
  • 2021-06-27
  • 2021-05-04
  • 2021-08-30
  • 2021-08-21
  • 2021-12-26
猜你喜欢
  • 2021-09-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2021-11-04
  • 2022-12-23
相关资源
相似解决方案