今天花了一天时间,研究了一下如何利用原始套接字模拟TCP的三次握手。因为前几天一直在关于linux下c语言的socket编程,也看的差不多了,今天就敲了一天的代码。但是遇到了一个问题,当我利用raw socket发送SYN报文请求连接后,也能收到对方发来的SYN+ACK报文,当我发送ACK之前,本机系统会自动发送一个RST报文。然后,我在网上搜了一下,也有人遇到我这样的情况,有人给出如下解决方法:
一、反编译内核,提取connect的信息,进行分析,看怎么记录连接信息的,自己加连接信息,我晕,不太好办。
二、做个IP报文拦截器,直接过滤掉rst报文。NND太暴了:),咱是文化人,不能用这招。
三、不让TCP层收到ACK响应,那么我们就可以拦截这个报文并且把它过滤掉,这种方案也是可行的。
四、用winpcap拦截过滤,有兴趣去官方网站下载,比较简单。
也不知道这些法子到底可不可以,这两天再看看查阅别的资料试试,或者问问老师看看。