老大好...我现正在搞网络模块,其中需要涉及对防火墙的穿透(不是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.您觉得还有其它什么问题存在吗??
请老大指教,谢谢!
假设防火墙给了这样的限制:只允许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.您觉得还有其它什么问题存在吗??
请老大指教,谢谢!
这要看防火墙的实现,维持时间,你也可以设置一个时间段,周期性的断开,重连嘛。2.客户跟服务端建立TCP连接后,假设客户端发送3个请求包,服务端响应3个响应包,防火墙会对每次的请求响应包都作协议检查吗?还是只检查第一次的请求/响应包是否符合HTTP协议?
防火墙的规则,一般对每个包都要进行检查,匹配规则集。 3.客户跟服务端建立TCP连接后,假设客户端只发送一个请求,服务端能发多个响应包回来吗?
TCP协议本身不会发多个响应包(除非超时重传等情况),见TCP的三次握手过程。 4.HTTP协议的请求/响应格式那些属性为必需的,因为使用HTTP封装的目地就是为了欺骗防火墙,所以想尽量减少不必要的HTTP属性,还有Content-Length的值能跟实际数据不一样吗?(即Content-Length的值不一定就是实际数据的长度)
我不了解,去看http的RFC文档吧。
5.您觉得还有其它什么问题存在吗??
多研究几种不同的防火墙,例如windows上的,Linux上的。统计数据再分析。
终于有个牛人来解答一下,所以先谢谢老大
3.客户跟服务端建立TCP连接后,假设客户端只发送一个请求,服务端能发多个响应包回来吗?
TCP协议本身不会发多个响应包(除非超时重传等情况),见TCP的三次握手过程。 这条我问的意思是这样的:响应包是指数据包(实际数据),因为HTTP是基于请求-响应的规则,即客户请求一次,服务响应一次请求..我想问的是如果客户只请求一次,服务端响应请求能否用发送多个数据包(发送多次)来进行响应