老大好...我现正在搞网络模块,其中需要涉及对防火墙的穿透(不是NAT的穿透),虽然自己觉得穿透人家防火墙不太符合逻辑,但领导要求没办法啊..
 
  假设防火墙给了这样的限制:只允许TCP,只开放80端口,只允许HTTP协议的数据通过(即基本上只能IE了,这种限制应该很高级别了吧),我采取了 HTTP隧道技术(即用HTTP1.1协议封装自己的数据)来实现穿透,客户端,服务器端都是自己开发的.服务器端会绑定80端口.现有以下几个问题未解决:1.防火墙对已一条连接的维持时间,即客户端跟服务端建立连接后,如果客户,服务端都不执行断开连接的话,防火墙会删除对这条连接的维护吗(会话),时间多久呢?2.客户跟服务端建立TCP连接后,假设客户端发送3个请求包,服务端响应3个响应包,防火墙会对每次的请求响应包都作协议检查吗?还是只检查第一次的请求/响应包是否符合HTTP协议?3.客户跟服务端建立TCP连接后,假设客户端只发送一个请求,服务端能发多个响应包回来吗?4.HTTP协议的请求/响应格式那些属性为必需的,因为使用HTTP封装的目地就是为了欺骗防火墙,所以想尽量减少不必要的HTTP属性,还有Content-Length的值能跟实际数据不一样吗?(即Content-Length的值不一定就是实际数据的长度)5.您觉得还有其它什么问题存在吗??
请老大指教,谢谢! 

解决方案 »

  1.   

    一般来说只要有新进程访问网络防火墙都会提示,至少俺用过的几个都是这样,单纯使用HTTP隧道技术大概还不够吧
      

  2.   

    这个我知道..所以从通用性角度才使用HTTP隧道方式(HTTP协议封装数据),使用这种方式的话应该只要能使用IE程序就能穿透防火墙望牛人能给予解答啊。。
      

  3.   

    1.防火墙对已一条连接的维持时间,即客户端跟服务端建立连接后,如果客户,服务端都不执行断开连接的话,防火墙会删除对这条连接的维护吗(会话),时间多久呢?
    这要看防火墙的实现,维持时间,你也可以设置一个时间段,周期性的断开,重连嘛。2.客户跟服务端建立TCP连接后,假设客户端发送3个请求包,服务端响应3个响应包,防火墙会对每次的请求响应包都作协议检查吗?还是只检查第一次的请求/响应包是否符合HTTP协议?
    防火墙的规则,一般对每个包都要进行检查,匹配规则集。 3.客户跟服务端建立TCP连接后,假设客户端只发送一个请求,服务端能发多个响应包回来吗?
    TCP协议本身不会发多个响应包(除非超时重传等情况),见TCP的三次握手过程。 4.HTTP协议的请求/响应格式那些属性为必需的,因为使用HTTP封装的目地就是为了欺骗防火墙,所以想尽量减少不必要的HTTP属性,还有Content-Length的值能跟实际数据不一样吗?(即Content-Length的值不一定就是实际数据的长度)
    我不了解,去看http的RFC文档吧。 
    5.您觉得还有其它什么问题存在吗?? 
     多研究几种不同的防火墙,例如windows上的,Linux上的。统计数据再分析。 
      

  4.   


    终于有个牛人来解答一下,所以先谢谢老大
    3.客户跟服务端建立TCP连接后,假设客户端只发送一个请求,服务端能发多个响应包回来吗? 
    TCP协议本身不会发多个响应包(除非超时重传等情况),见TCP的三次握手过程。 这条我问的意思是这样的:响应包是指数据包(实际数据),因为HTTP是基于请求-响应的规则,即客户请求一次,服务响应一次请求..我想问的是如果客户只请求一次,服务端响应请求能否用发送多个数据包(发送多次)来进行响应