HTTP中继(代理)、隧道相关介绍及简单Java实现

本文主要是对Http代理及隧道的相关原理进行简单介绍,如果想要“一把梭大笑”的好像记得Apache有个框架就是直接用来作为Http代理的,可以搜一下。


简单概念介绍:

Http代理:Web Server和client的集合体,用于从真正的Client端接收Http请求,然后转发到Web Server,并从Web Server接收Http响应并发送到真正的Client端;

        Http中继:“傻瓜式”Http代理,就是对流量进行盲目的转发,不进行任何逻辑处理(如:缓存、访问控制...),但是实现很简单,所以附加的例子也是一个盲中继;

        隧道:在http连接上传输其他流量,概念说不明白,最简单的可能应用场景就是防火墙限制只能通过web流量,而你偏偏想能绕过这个限制,想让其他流量也能走出去怎么办,隧道就可以帮你实现。

Http CONNECT方法(核心):用来建立隧道用,方法规范直接查看RFC协议规范文档.


以上简单的几个概念的应用场景介绍:

最常见得莫过于翻墙工具了,常见的方式:在本地装个代理(其实就是个Http代理),然后设置浏览器的代理服务器为本地代理,紧接着浏览器会将所有的http请求发送到代理之中,代理再通过无论什么方式都行(简单理解就是Socek编程)将数据发送到能够访问外网的服务器上,然后外网服务器去向真正的Web Server请求数据,并原路返回到代理,代理再发送给你,整个过程就完事了.以上纯属废话,自己打脸不用你们动手生气


原理介绍:

网络分层概念:http协议在TCP/IP编程中属于应用层协议,这个概念一定要清晰,下面的部分会用到,而我们通常的Socket编程就是针对在传输层,SSL是在传输层和应用层之间的,这也就为我们能直接Socket编程直接进行实现奠定基础;

 HTTP代理“既是client,又是server”:那我们就可以理解为我们只要写一个程序,既能实现Web server的功能又能实现Client的功能不就可以了?所以实现盲中继的第一步就是使用Socket编程编写一个简单的Web Server,刚才说了Socket编程在传输层,所以只要对Socket中传输过来的得数据进行按照HTTP协议规范处理,就实现了一个简单的Web Server;

HTTP协议CONNECT方法:此处主要说一下Conect方法,别的方法大家都常用就不啰嗦了,Connet方法是用来建立隧道的,就是client会向代理发送一个Connect请求,代理在对这个Connect请求作出200响应之后,Client会直接在建立好的这个TCP连接上发送流量,代理不会对数据进行任何修改,直接将数据原封不动的发送到目的地址。


简单介绍一个使用代理时HTTPS的一个传输过程:

1、浏览器与代理建立一个Socket连接(传输层),并向这个Socket发送数据(就是一个CONNECT方法的HTTP请求,此时没有使用SSL层,不然代

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值