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 连接是否活跃,都可以关闭
相关推荐
蘑菇丁17 分钟前
ansible 批量按用户名创建kerberos主体,并分发到远程主机
大数据·服务器·ansible
幻想编织者21 分钟前
Ubuntu实时核编译安装与NVIDIA驱动安装教程(ubuntu 22.04,20.04)
linux·服务器·ubuntu·nvidia
C嘎嘎嵌入式开发1 小时前
什么是僵尸进程
服务器·数据库·c++
乙己4077 小时前
计算机网络——网络层
运维·服务器·计算机网络
幽兰的天空8 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc8 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️8 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️8 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器
qzhqbb9 小时前
web服务器 网站部署的架构
服务器·前端·架构
Mbblovey9 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求