比如sygate,是怎么实现的。我觉得可以通过截获IP包再转发可以实现。不只是不是这样,或者有其他的办法?
如果是截获IP包再转发的话,如何截获IP包呢?转发时需要对IP包进行什么样的处理?接收到的数据包怎么返回给请求的机器?
在下比较菜的说,望大虾们畅所欲言,谢了先
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
如果是截获IP包再转发的话,如何截获IP包呢?转发时需要对IP包进行什么样的处理?接收到的数据包怎么返回给请求的机器?
在下比较菜的说,望大虾们畅所欲言,谢了先
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
1、sygate的代理是在网络的那一个层上?是IP层吗?
2、sygate是怎么样截获数据包的?
3、转发数据包之前需要对数据包进行什么样处理?还是原封不动转发出去?
2.应该是用原始套接字截获数据包.
3.sygate从内部接口接到一个ip包,把它映射(替换)到外部接口
的[ip,端口]上发出去,当这个包的回应从外部接口到来时,再按照这个映射发到
内部网上对应的[ip,端口]上,这就完成了一次通信。
to kingzai(stevenzhu):
我现在就是用原始套接字侦听ip包的,但是拿到ip包之后,如您所说“把它映射(替换)到外部接口
的[ip,端口]上发出去”,是指将ip包的源地址改为外部接口的地址发出去吗?那么外网返回的结果我怎么区别它是返回给本地请求还是内网其他机器的呢?是在转发之前给每个包作标示吗?
但外部机器给内部某一个client 发送数据的时候,根据PORT判断具体哪个client接收!
那么转发ip包用什么方法呢?也用原始套接字可以吗?
转发IP包可以用原始套接字,也可以用其他的方法,比如winpcap发包.
比如内网机器ping 外网ip的时候是什么情况啊?