我正在学习 UNIX 和网络编程。我还不确定如何实现这一点。但我想知道:
如果我伪造与服务器的 TCP 连接的 IP 数据包,使 SYN / ACK 数据包使用一个 IP,而后续数据包使用另一个 IP,理论上会发生什么?连接会被服务器断开吗?
我认为在 HTTP 的情况下,人们可以在 SYN/ACK 后更改 IP,并发送一个带有“黑帽”数据的数据包来破坏服务器,而无需识别自己的身份。这样的事情行得通吗?
答案1
TCP/IP 是一种有状态协议,可跟踪发起者(IP 地址)、端口(源和目标)、序列号等。如果您的客户端不遵循该协议,您将无法连接。也就是说,如果您在尚未建立连接(SYN、SYN+ACK、ACK)时尝试向服务器发送数据包,那么您的努力将被默默忽略。
答案2
是的,服务器将丢弃数据包,因为新的源 IP 地址没有打开的套接字。
如果不嗅探当前连接,就不可能进行会话劫持。当您查看 IP 数据包时,您会发现一个标识标志,并且在 tcp 标头中您会发现序列号和下一个序列号。因此,在劫持时您必须匹配这些以保持会话存活。