如何向已建立TCP连接的一个会话中的一方发送一个TCP包?

事情是这样的,现在有这样一个环境:

一个客户端要向一个服务器(如百度、优酷等)发出一个HTTP请求,那么客户端与服务器需要首先进行TCP三次握手,握手完成后客户端再发HTTP GET包。
而在客户端到服务器的路径当中,我有一个设备或程序,可以看到这个GET包,并在客户端发出GET包的时候提取这个包中的基本信息,如源、目的IP, TCP端口,ACK、SEQ数值,HTTP URL等,并想根据这些信息,伪造一个从服务器发回的数据包,即以GET包的目的IP和TCP端口为源IP和端口,发送一个HTTP响应包,并让客户端收到此包。

那么问题来了:

我尝试用C语言的RAW SOCKET完成这个功能,并使用sendto发送我构造的数据包,但是在测试时,sendto执行了却没有在任何地方抓到这个数据包。

请问:

用RAW SOCKET可以实现我的需求吗?如果可以,有什么需要注意的地方?
如果RAW SOCKET不行,那么我该怎么做?语言是C,环境是Ubuntu12.04。

谢谢各位

阅读 4.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题