分析几种TCP状态转换中的非正常转换

1、服务器从listen状态变成close状态的原因:

 

服务器在监听端口的时候,此时有些资源加载的有问题导致服务没开启,此时服务器会从listen状态变成closed状态。

因此,服务器在初始化时候,最好不要打开联网的端口

 

 

2、服务器从listen状态转成syn sent状态的原因:

这个状态比较奇怪,服务器在监听的时候,却向其他地方发送消息。我本来是监听别人的,却主动去连接别人。

出现这种问题,是因为代码的编码有问题

 

 

3、RST状态

情况一:

比如说服务器要打开80端口,由于某种原因,我们并没有打开这个服务。应用程序默认寻找80端口,但是找不到对应的服务,此时底层会给服务发送一个RST

情况二:

请求超时时。当连接的处理时间超过了设定的时间,客户端或者服务端会给对方发送一个RST,表示不要连接了。着可能使我们的程序设置上有一些bug导致的。

情况三:

应用程序有bug。处理了一部分消息之后,程序误以为客户端出现问题,然后主动停掉了对于客户端的服务。此时处理了一半的消息就断了

情况四:

客户端有一段时间没有向服务器发送消息,此段时间内服务器重启了一下,客户端并不知情。此时客户端再次发送消息给服务器,服务器接受不了客户端发来的消息。此时,服务器会给客户端发送RST ,让链接重置。

猜你喜欢

转载自blog.csdn.net/qq_29996285/article/details/84730022