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

如何向已建立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。

谢谢各位

【热门文章】
【热门文章】