4.9 已建立连接的TCP,收到SYN会发生什么?

1. 客户端的 SYN 报文里的端口号与历史连接不相同

此时服务端会认为是新的连接要建立,于是就会通过三次握手来建立新的连接。

旧连接里处于 Established 状态的服务端最后会怎么样呢?

**服务端给客户端发消息了:**客户端连接已被关闭,此时客户内核回RST报文,服释放连接;

**服务端没给客户端发消息:**超过一段时间,tcp保活机制启动,释放连接

2. 客户端的 SYN 报文里的端口号与历史连接相同

处于 Established 状态的服务端收到了这个 SYN 报文(此时的 SYN 报文其实是乱序的,因为 SYN 报文的初始化序列号其实是一个随机数),服务端回复一个携带正确序列号的确认号的ACK报文,客户端接收到这个ACK发现不是自己想要的,返回RST给服务端,释放连接。

如何关闭TCP连接?

伪造一个RST报文,必须满足四元组相同序列号是对方期望的这两个条件。

killcx工具伪造一个四元组相同的SYN报文,来拿到合法的序列号。

tcpkill 工具是在双方进行 TCP 通信时,拿到对方下一次期望收到的序列号。然后将序列号填充到伪造的 RST 报文,并将其发送给对方,达到关闭 TCP 连接的效果。

  • tcpkill 属于被动获取,必须再双方进行TCP通信时,才能获取正确的序列号,显然这种方式无法关闭非活跃的TCP连接。
  • killcx 工具则是属于主动获取,它是主动发送一个 SYN 报文,通过对方回复的 Challenge ACK 来获取正确的序列号,所以这种方式无论 TCP 连接是否活跃,都可以关闭
相关推荐
Sinclair1 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean2 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
茶杯梦轩2 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰3 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅3 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒3 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
芝士雪豹只抽瑞克五3 天前
Nginx 高性能Web服务器笔记
服务器·nginx
gihigo19983 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
失重外太空啦3 天前
Tomcat
java·服务器·tomcat