【问题标题】:Avoiding the RST packet when sending customized tcp packet发送自定义 tcp 数据包时避免 RST 数据包
【发布时间】:2020-03-18 00:54:56
【问题描述】:

我正在打包自己的 tcp 数据包并将其发送到另一台 ubuntu 机器。 SYN 和 SYN-ACK 可以成功发送和接收。但是在收到 SYN-ACK 后,会发送一个 RST 数据包。以下是我如何使用套接字:

同步:

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
#prepare customized ip header
#prepare customized tcp header
packet = ip_header + tcp_header + user_data
s.sendto(packet, (dest_ip , 0))

SYN-ACK 的 ACK:

#update the tcp header 
packet = ip_header + tcp_header + user_data
s.sendto(packet, (dest_ip , 0))

发送第一个SYN并收到SYN-ACK后,发起机会发送一个RST包。

我猜客户端套接字已关闭,但不确定如何确认和修复它。提前谢谢!

【问题讨论】:

标签: python sockets tcp


【解决方案1】:

问题是操作系统有一个特性,当它收到一个 TCP 数据包到一个未知的套接字时,它会向发起者发送一个 RST。这个链接解释了它以及如何解决它。

https://widu.tumblr.com/post/43624355124/suppressing-tcp-rst-on-raw-sockets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2019-07-23
    • 2015-06-21
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多