在TCP/IP套接字连接中发送重置

2024-03-29 11:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

要在TCP连接上发送RST,请在零超时的情况下将SO_LINGER选项设置为true,然后关闭套接字。这将重置连接。我不知道如何在Python中做到这一点,也不知道您是否能够做到这一点。

打开SO_LINGER socket选项并将延迟时间设置为0秒。这将导致TCP在连接关闭时中止连接,刷新数据并发送RST。见UNP第7.5节和示例15.21。

在python中:

def client(host, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
    s.connect((host, port))
    l_onoff = 1                                                                                                                                                           
    l_linger = 0                                                                                                                                                          
    s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER,                                                                                                                     
                 struct.pack('ii', l_onoff, l_linger))
    # send data here
    s.close()

如果你想通过连接实现自己的行为,我认为你应该尝试使用Scapy。它是一个非常有用的库/工具。它允许您使用IP/TCP/UDP/ICMP包。

相关问题 更多 >