还是问RST的问题,请大家帮忙看看
时间:2010-06-24
来源:互联网
昨天上网找了很多资料,发现是这样:
我在Proxy上建立了一个tcp的原始套接字,负责把网内的包转发到网外(反之亦然)
问题是:
1Proxy向网外的站点发了一个SYN的包
2站点返回一个SYN ACK的包
3这个SYN ACK包先被内核截获了,并且内核判断并不存在相应的soket,所以给站点发了RST
4在这之后,我写的tcp原始套接字才收到这个SYN ACK的包(是否内核发过来的拷贝?)
请问这样的情况,需要怎么处理?如何在内核截获并处理这个包之前,通过程序把这个包取到?
着急得不行,饭都吃不下了,觉也睡不好。在这里谢谢各位了。。。
我在Proxy上建立了一个tcp的原始套接字,负责把网内的包转发到网外(反之亦然)
问题是:
1Proxy向网外的站点发了一个SYN的包
2站点返回一个SYN ACK的包
3这个SYN ACK包先被内核截获了,并且内核判断并不存在相应的soket,所以给站点发了RST
4在这之后,我写的tcp原始套接字才收到这个SYN ACK的包(是否内核发过来的拷贝?)
请问这样的情况,需要怎么处理?如何在内核截获并处理这个包之前,通过程序把这个包取到?
着急得不行,饭都吃不下了,觉也睡不好。在这里谢谢各位了。。。
作者: steven198662 发布时间: 2010-06-24
顶上去,高手快来帮忙
作者: 东北008 发布时间: 2010-06-24
再顶顶
作者: steven198662 发布时间: 2010-06-24
本帖最后由 ideawu 于 2010-06-24 19:11 编辑
unp:
所以, 你应该用下面这种方式创建 packet socket:
fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
如果你是用这种方式来创建的
fd = socket(AF_INET, SOCK_RAW, protocol);
我怀疑第4条, 你能否收到内核发来的SYN-ACK报文.
==== 补充 ===
好像楼主用的就是第二种. 找到一个答案, 就是配置 iptables, 丢掉包RST, 楼主可以试试:
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
http://stackoverflow.com/questio ... -from-responding-to
unp:
QUOTE:
Received UDP packets and received TCP packets are never passed to a raw socket. If a process wants to read IP datagrams containing UDP or TCP packets, the packets must be read at the datalink layer, as described in Chapter 29.
所以, 你应该用下面这种方式创建 packet socket:
fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
如果你是用这种方式来创建的
fd = socket(AF_INET, SOCK_RAW, protocol);
我怀疑第4条, 你能否收到内核发来的SYN-ACK报文.
==== 补充 ===
好像楼主用的就是第二种. 找到一个答案, 就是配置 iptables, 丢掉包RST, 楼主可以试试:
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
http://stackoverflow.com/questio ... -from-responding-to
作者: ideawu 发布时间: 2010-06-24
回复 ideawu
兄弟,太谢谢你了,真的。
兄弟,太谢谢你了,真的。
作者: steven198662 发布时间: 2010-06-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28