路由器连接代理
今天给各位分享代理隧道路由器的知识,其中也会对路由器连接代理进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、OkHttp源码解析 (三)——代理和路由
2、路由器设置代理服务器怎么设置
3、怎么设置代理路由器 代理路由器设置方法
4、无线路由器怎么设置代理服务器
OkHttp源码解析 (三)——代理和路由
初看OkHttp源码,由于对Address、Route、Proxy、ProxySelector、RouteSelector等理解不够,读源码非常吃力,看了几遍依然对于寻找复用连接、创建连接、连接服务器、连接代理服务器、创建隧道连接等逻辑似懂非懂,本篇决定梳理一遍相关的概念及基本原理。
● HTTP/1.1(HTTPS)
● HTTP/2
● SPDY
一个http请求的流程(直连):
1、输入url及参数;
2、如果是url是域名则解析ip地址,可能对应多个ip,如果没有指定端口,则用默认端口,http请求用80;
3、创建socket,根据ip和端口连接服务器(socket内部会完成3次TCP握手);
4、socket成功连接后,发送http报文数据。
一个https请求的流程(直连):
1、输入url及参数;
2、如果是url是域名则解析ip地址,可能对应多个ip,如果没有指定端口,则用默认端口,https请求用443;
3、创建socket,根据ip和端口连接服务器(socket内部会完成3次TCP握手);
4、socket成功连接后进行TLS握手,可通过java标准款提供的SSLSocket完成;
5、握手成功后,发送https报文数据。
1、分类
● HTTP代理:普通代理、隧道代理
● SOCKS代理:SOCKS4、SOCKS5
2、HTTP代理分类及说明
普通代理
HTTP/1.1 协议的第一部分。其代理过程为:
● client 请求 proxy
● proxy 解析请求获取 origin server 地址
● proxy 向 origin server 转发请求
● proxy 接收 origin server 的响应
● proxy 向 client 转发响应
其中proxy获取目的服务器地址的标准方法是解析 request line 里的 request-URL。因为proxy需要解析报文,因此普通代理无法适用于https,因为报文都是加密的。
隧道代理
通过 Web 代理服务器用隧道方式传输基于 TCP 的协议。
请求包括两个阶段,一是连接(隧道)建立阶段,二是数据通信(请求响应)阶段,数据通信是基于 TCP packet ,代理服务器不会对请求及响应的报文作任何的处理,都是原封不动的转发,因此可以代理 HTTPS请求和响应。
代理过程为:
● client 向 proxy 发送 CONNET 请求(包含了 origin server 的地址)
● proxy 与 origin server 建立 TCP 连接
● proxy 向 client 发送响应
● client 向 proxy 发送请求,proxy 原封不动向 origin server 转发请求,请求数据不做任何封装,为原生 TCP packet.
3、SOCKS代理分类及说明
● SOCKS4:只支持TCP协议(即传输控制协议)
● SOCKS5: 既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务器端域名解析等。
SOCK4能做到的SOCKS5都可得到,但反过来却不行,比如我们常用的聊天工具QQ在使用代理时就要求用SOCKS5代理,因为它需要使用UDP协议来传输数据。
有了上面的基础知识,下面分析结合源码分析OkHttp路由相关的逻辑。OkHttp用Address来描述与目标服务器建立连接的配置信息,但请求输入的可能是域名,一个域名可能对于多个ip,真正建立连接是其中一个ip,另外,如果设置了代理,客户端是与代理服务器建立直接连接,而不是目标服务器,代理又可能是域名,可能对应多个ip。因此,这里用Route来描述最终选择的路由,即客户端与哪个ip建立连接,是代理还是直连。下面对比下Address及Route的属性,及路由选择器RouteSelector。
描述与目标服务器建立连接所需要的配置信息,包括目标主机名、端口、dns,SocketFactory,如果是https请求,包括TLS相关的SSLSocketFactory 、HostnameVerifier 、CertificatePinner,代理服务器信息Proxy 、ProxySelector 。
Route提供了真正连接服务器所需要的动态信息,明确需要连接的服务器IP地址及代理服务器,一个Address可能会有很多个路由Route供选择(一个DNS对应对个IP)。
Address和Route都是数据对象,没有提供操作方法,OkHttp另外定义了RouteSelector来完成选择的路由的操作。
1、读取代理配置信息:resetNextProxy()
读取代理配置:
● 如果有指定代理(不读取系统配置,在OkHttpClient实例中指定),则只用1个该指定代理;
● 如果没有指定,则读取系统配置的,可能有多个。
2、获取需要尝试的socket地址(目标服务器或者代理服务器):resetNextInetSocketAddress()
结合Address的host和代理,解析要尝试的套接字地址(ip+端口)列表:
● 直连或者SOCK代理, 则用目标服务器的主机名和端口,如果是HTTP代理,则用代理服务器的主机名和端口;
● 如果是SOCK代理,根据目标服务器主机名和端口号创建未解析的套接字地址,列表只有1个地址;
● 如果是直连或HTTP代理,先DNS解析,得到InetAddress列表(没有端口),再创建InetSocketAddress列表(带上端口),InetSocketAddress与InetAddress的区别是前者带端口信息。
3、获取路由列表:next()
选择路由的流程解析:
● 遍历每个代理对象,可能多个,直连的代理对象为Proxy.DIRECT(实际是没有中间代理的);
● 对每个代理获取套接字地址列表;
● 遍历地址列表,创建Route,判断Route如果在路由黑名单中,则添加到失败路由列表,不在黑名单中则添加到待返回的Route列表;
● 如果最后待返回的Route列表为空,即可能所有路由都在黑名单中,实在没有新路由了,则将失败的路由集合返回;
● 传入Route列表创建Selection对象,对象比较简单,就是一个目标路由集合,及读取方法。
为了避免不必要的尝试,OkHttp会把连接失败的路由加入到黑名单中,由RouteDatabase管理,该类比较简单,就是一个失败路由集合。
1、创建Address
Address的创建在RetryAndFollowUpInteceptor里,每次请求会声明一个新的Address及StreamAllocation对象,而StreamAllocation使用Address创建RouteSelector对象,在连接时RouteSelector确定请求的路由。
每个Requst都会构造一个Address对象,构造好了Address对象只是有了与服务器连接的配置信息,但没有确定最终服务器的ip,也没有确定连接的路由。
2、创建RouteSelector
在StreamAllocation声明的同时会声明路由选择器RouteSelector,为一次请求寻找路由。
3、选择可用的路由Route
下面在测试过程跟踪实例对象来理解,分别测试直连和HTTP代理HTTP2请求路由的选择过程:
● 直连请求流程
● HTTP代理HTTPS流程
请求url:
1、构造address对象
2、读取代理配置:resetNextProxy
3、解析目标服务器套接字地址:resetNextInetSocketAddress
4、选择Route创建RealConnection
5、确定协议
测试方法:
● 在PC端打开Charles,设置端口,如何设置代理,网上有教程,比较简单;
● 手机打开WIFI,选择连接的WIFI修改网络,在高级选项中设置中指定了代理服务器,ip为PC的ip,端口是Charles刚设置的端口;
● OkHttpClient不指定代理,发起请求。
1、构造address对象
2、读取代理配置:resetNextProxy
3、解析目标服务器套接字地址:resetNextInetSocketAddress
4、选择Route创建RealConnection
5、创建隧道
由于是代理https请求,需要用到隧道代理。
从图可以看出,建立隧道其实是发送CONNECT请求,header包括字段Proxy-Connection,目标主机名,请求内容类似:
6、确定协议,SSL握手
1、代理可分为HTTP代理和SOCK代理;
2、HTTP代理又分为普通代理和隧道代理;普通代理适合明文传输,即http请求;隧道代理仅转发TCP包,适合加密传输,即https/http2;
3、SOCK代理又分为SOCK4和SOCK5,区别是后者支持UDP传输,适合代理聊天工具如QQ;
4、没有设置代理(OkHttpClient没有指定同时系统也没有设置),客户端直接与目标服务器建立TCP连接;
5、设置了代理,代理http请求时,客户端与代理服务器建立TCP连接,如果代理服务器是域名,则解释代理服务器域名,而目标服务器的域名由代理服务器解析;
6、设置了代理,代理https/http2请求时,客户端与代理服务器建立TCP连接,发送CONNECT请求与代理服务器建立隧道,并进行SSL握手,代理服务器不解析数据,仅转发TCP数据包。
如何正确使用 HTTP proxy
OkHttp3中的代理与路由
HTTP 代理原理及实现(一)
路由器设置代理服务器怎么设置
路由器设置
第一步:右键单击“网上邻居”,点“属性”,打开“网络连接”窗口。
第二步:右键单击“本地连接”,点“属性”,打开“本地连接”属性窗口
第三步:左键单击“Internet协议(TCP/IP)”,再单击“属性”
第四步:选择“自动获得IP地址(O)”和“自动获得DNS服务器地址(S)”,点“确定”,再“确定”,OK!
第五部:右键单击“Internet Explorer”,左键单击“属性”打开Internet属性窗口
第六步:左键点击“连接”
第七步:左键点击“局域网设置”
第八步:在“为LAN使用代理服务器(这些设置不会应用于拨号或VPN连接)”前打钩。
第九步:单击“确定”,再单击“确定”,OK! 以上设置是为了在使用代理服务器上网的情况下,进入路由器设置页面。
怎么设置代理路由器 代理路由器设置方法
一、通常情况下,局域网都使用网络上的保留地址,内部的电脑在直接利用路由对外访问时,会因电脑使用的是互联网上的保留地址,而被路由器过滤掉,从而导致无法访问互联网资源,解决这一问题的办法是利用路由操作系统提供的NAT地址转换功能,将内部网的私有地址转换成互联网上的合法地址,使得不具有合法IP地址的用户可以通过NAT访问到外部网络。
二、使用NAT的single模式,就像它的名字一样,可以将众多的本地局域网主机映射为一个网络地址,局域网内的所有主机对外部网络网络而言,路由器的接口将众多的本地局域网主机映射为一定的网络地址范围,当本地主机端口与网络上的主机连接时,IP地址池中的某个IP地址被自动分配给该本地主机,连接中断后动态分配的IP地址将被释放,释放的IP地址可被其他本地主机使用。
三、路由器的配置定义一个地址池c2601,其内包含了两个空闲的合法IP地址,供NAT转换时使用,设置以太口的IP地址,并设置其为连接内部网的端口,设置广域网端口的IP地址,并设置其为连接外部网的端口,建立访问控制列表,建立动态地址翻译,保存所作的设置。
四、电脑的配置,要求使用静态IP地址,在TCP/IP属性中进行设置,并设置关网为路由器以太口IP地址,设置DNS为接入商提供的地址,浏览器等上网工具中无需作任何特殊设置。
五、利用代理服务器方式访问网络资源,优点是可以利用代理服务器提供的CACHE服务来提高网络的访问速度和效率,比较适合电脑较多的单位使用。
缺点是需要专门配备一台计算机作为代理服务器,增加了投资成本;且较第一种法方还需多占用两个合法IP地址,网络安全性不高。
六、代理服务器必须按装两块网卡,一块用于连接内部局域网,设IP地址为内部私有地址无需设网关。另一块用于连接路由器,设置联通分配的合法地址,并设置其网关为路由器以太口,按照上面的方法设置好网卡后,再安装一套代理软件即可。
七、通过上面介绍的两种方法进行配置,都能顺利地实现网络的访问,但每种方法即有优点,又存在一定的缺点,且两种方法的优点是互补的。
哪能不能将两种方法的优点合二为一,方法三就是一种鱼和熊掌能够兼得的方案,集成了一、二两种方法的优点,即节省了IP地址,又能通过代理服务器提供的CACHE来提高网络的访问效率。
无线路由器怎么设置代理服务器
在电脑的【网络和共享中心】界面,选择【设置新的连接或网络】-【连接到工作区】;点击【使用我的Internet连接(VPN)】,输入Internet地址;输入你申请的账号和密码,验证成功后即可成功连接到代理服务器。具体介绍如下:
1、在电脑中的【网络和共享中心】界面下,单击【设置新的连接或网络】,选择【连接到工作区】,单击【下一步】;
2、选择【否,创建新连接】,单击【下一步】;
3、点击【使用我的Internet连接(VPN)】;
4、输入Internet地址,也就是你申请的代理服务器地址,可以是IP地址,也可以是域名,还可以是MAC地址;
5、输入你申请的账号和密码,复选框以及域(可选)根据个人意愿填写,单击【连接】,验证成功后即可成功连接到代理服务器。
关于代理隧道路由器和路由器连接代理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。