FIN和RST的区别,几种TCP连接出现RST的情况

一、RST跟FIN的区别:

正常关闭连接的时候发的包是FIN,但是如果是异常关闭连接,则发送RST包

两者的区别在于:

1.RST不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而FIN需要先处理完缓存区的包才能发送FIN包

2.接收端收到RST包后,也不必发送ACK包来确认。而FIN需要ACK包确认(因为一个是正常关闭会话一个是异常,所以很好理解)

二、发RST包有以下几种情况:
1.端口未打开

服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误
比如在下面这种情况下,主机0.137向主机0.193发送一个SYN请求某个端口,表示想要连接主机0.193的443端口,但是主机0.193上根本没有打开443这个端口,于是就向主机0.137发送了一个RST包

以下我们可以抓包分析:包已经很明显,请求过去直接回显RST的报文

2.请求超时

网络之大无奇不有:一个客户端连接服务器。 直接telnet发现网络连接没有问题。

ping没有出现丢包。用抓包工具查看,客户端是在收到服务器发出的SYN之后就莫名其妙的发送了RST

出现这种现象的原因可能有两种

1.安装了某安全软件,比如socket,设置RST超时的时间为100ms,但是抓包发现,从发到收花的时间超过了100ms,那么主机就会认为这个包超时了,就会发送RST包拒绝此连接

2.还有一种是服务器性能瓶颈,服务器处理不来发送过来的请求,然后就发送RST包莫名的不想理你,不想跟你建立连接,这个场景也见过

3.劫持

还有一种场景我也见过,公网的场景,客户端向服务端发起请求,但是这时候有冒充服务端来回包给我的客户端,但是因为ACK的值没能对上所以发送了RST包给狠狠地拒绝了

以下是抓包的报文:

相关推荐
流浪0011 小时前
计算机网络篇22:网络层——公网的三级地址划分与逐跳转发,从私网出口替换到 IP 分片组装
tcp/ip·计算机网络·路由器·公网搭建·报文分篇
CodeYp20191 小时前
第3讲:网络命令
linux·网络·命令
jimmyleeee9 小时前
大模型安全之五十一:OWASP LLM Top 10 全景解读
人工智能·安全
行者-全栈开发11 小时前
【鸿蒙心迹】深色模式适配全链路——从配置到自定义(HarmonyOS 7.x)
华为·harmonyos
武天旭15 小时前
AI安全--AI大模型的对抗样本攻击与防御解析
人工智能·深度学习·安全·机器学习
Java成神之路-16 小时前
TCP Socket 与 UDP Socket
tcp/ip·计算机网络·udp
承渊政道19 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
菩提小狗20 小时前
每日安全情报报告 · 2026-11-07
网络安全·漏洞·cve·安全情报·每日安全
行者-全栈开发21 小时前
【鸿蒙心迹】国际化 i18n 与多语言资源管理实战(HarmonyOS 7.x)
ui·华为·重构·国际化·harmonyos·多语言
爱和冰阔落1 天前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络