HTTP 代理

马谦马谦马谦 计算机网络评论401字数 571阅读 1 分 54 秒阅读模式

一、 HTTP 代理

HTTP 代理的实现很简单,和普通的 HTTP 请求差别不大,只要在请求行的 uri 路径中加上实际请求的 host 就可以了:

HTTP代理-图片1

代理服务器收到这个请求后,会主动请求 uri 中的 host 地址 (不是请求头部的 Host 字段中的值),然后去掉这部分构造成一个普通的 HTTP 请求发送到服务端。服务端响应后的数据也直接发回到客户端。

过程图解:

HTTP代理-图片2

长连接的场景

当连接是长连接的时候,后面的请求可以不用加上 http://ifeng.com,直接和普通的 GET 请求一样就可以了。

二、 HTTPS 代理

HTTPS 相较于 HTTP 代理不同的是:HTTPS 代理是加密的,代理无法从 HTTP 请求行中获取到 host 。因此,执行 HTTPS 代理前,客户端要先主动发起一个 CONNECT 请求,表示要连接到的服务端。然后代理程序和服务端建立连接,把后续所有的客户端数据包都发往服务器。

以下是一个 HTTPS 代理请求的数据包:

HTTP代理-图片3

过程分解:

  1. 客户端发起 CONNECT 连接,明确告诉代理程序,帮我连接 www.ifeng.com443 端口。
  2. 服务端发起对 www.ifeng.com:443 的连接,成功后给客户端返回 HTTP 200
  3. 客户端开始建立 HTTPS 连接,执行 Clinet-Hello 过程。

图解:

HTTP代理-图片4

整个代理过程中,除了多了个 CONNECT 流程以外,后面所有的请求交互过程和普通 HTTPS 连接是一样的。

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2020 年 3 月 8 日 21:46:44
  • 转载请务必保留本文链接:https://www.dyxmq.cn/network/http-proxy.html
wireshark导出https证书 计算机网络

wireshark 导出 https 证书

一、找到证书所在的数据包 证书是从服务端返回的,从 https 握手的过程来看,当服务端返回了 server hello 之后,就会主动将自己的证书返回给客户端,因此只要从 server hello 往后面找 1-...
创建自签名CA和SSL证书 计算机网络

创建自签名 CA 和 SSL 证书

一、创建 CA CA 全称是 CertificateAuthority,意思是证书颁发机构。只有当 CA 被认为是受信任的颁发机构时,经过该 CA 颁发出来的证书才属于受信任的证书。否则,认为证书是不受信任的。 为...
企业网络应该如何规划以减少各种网络问题? 计算机网络

企业网络应该如何规划以减少各种网络问题?

最近公司网络一直抽风,整个机房网络都不通,严重影响工作效率。后面花了大量人力解决问题后没多久,竟然又再次出现问题了。看着纷乱复杂的网络接线,我们也只是 「望洋兴叹」!因为参与了整个问题的处理过程 (我不是...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证