python - 发送自定义 tcp 数据包时避免 RST 数据包
问题描述
我正在打包自己的 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 数据包。
我猜客户端套接字已关闭,但不确定如何确认和修复它。先感谢您!
解决方案
问题是操作系统有一个特性,当它收到一个 TCP 数据包到一个未知的套接字时,它会向发起者发送一个 RST。这个链接解释了它以及如何解决它。
https://widu.tumblr.com/post/43624355124/suppressing-tcp-rst-on-raw-sockets
推荐阅读
- tally - 如何检索公司的 GSTN : Tally XML 集成
- sql - 如何包含包含 SELECT 脚本计算的列?
- gremlin - Gremlin strategy to vertex peer sharing exactly the same neighbourhood
- nsdocument - What’s the difference between `NSDocument`’s `isInViewingMode` and `isLocked`?
- hive - Apache NiFi ExecuteSQL 不适用于 where 子句
- haskell - 'show' 返回我想要的东西和一个奇怪的字符串
- c++ - 如何在 C++ 中检测用户输入?
- sql - 多对多关系的 SQL 连接
- javascript - 动画在预加载 CSS 和图像之前开始
- python - 在 sklearn 中使用 Leave-One-Out 交叉验证的 ROC 曲线