Kyl*_*ndt 5 networking tcpip nix netcat hijack
当客户端的 IP 改变时,TCP 会话会发生什么?
我做了一个简单的测试,让 netcat 监听端口,并从客户端机器连接到该端口。然后我在 nc 会话打开时更改了客户端的 IP 并发送了一些数据,更改 IP 后服务器没有收到任何数据。
rom*_*das 10
我的理解是 TCP 套接字由 IP+端口号组成,因此更改 IP 会中断该连接。nc 无法知道 IP 已更改,因此它会继续向原始 IP 发送数据,直到会话超时。
请参阅RFC 793(传输控制协议),特别是第 2.7 节:
2.7. 连接建立和清除
为了标识 TCP 可以处理的单独数据流,TCP 提供了端口标识符。由于端口标识符由每个 TCP 独立选择,因此它们可能不是唯一的。为了在每个 TCP 内提供唯一地址,我们将标识 TCP 的 Internet 地址与端口标识符连接起来,以创建一个套接字,该套接字在所有连接在一起的网络中都是唯一的。
我建议使用 Wireshark 或其他数据包嗅探器来亲自观察流量并查看其运行情况。