HTTP不同场景下的通信过程和用户上网认证过程分析
目录
HTTP不同场景的通信过程
HTTP正常交互过程
HTTP透明加速传输过程
HTTP代理服务器场景下交互过程
通过AC对上网用户不同场景的认证过程
AC上网认证正常交互过程
通过Cookie实现免认证交互过程
代理服务器场景下HTTP密码认证交互过程
HTTP不同场景的通信过程
HTTP、HTTPS、SSL协议以及报文讲解-CSDN博客
HTTP正常交互过程
1、电脑通过DNS协议将域名解析为IP地址(先本地缓存、再本机Hosts文件、再DNS服务器)
2、电脑与解析出来的外网服务器IP建立TCP三次握手(HTTP默认80端口、HTTPS默认443端口)
3、电脑发出HTTP请求(GET或POST)
4、外网服务器回应HTTP 200 OK(会将数据内容进行编码)
5、PC浏览器将外网服务器返回的内容解码成可视化的界面
6、PC与服务器进行四次挥手-现在有些HTTP支持长连接,可能看不到四次挥手(有些情况是电脑直接发送RST报文断开连接)
HTTP透明加速传输过程
什么是HTTP透明加速设备
在网络中有一台HTTP透明加速设备,用于提升网络用户的上网速度,节省公网带宽
内网用户在访问某些网站的时候,可以直接匹配HTTP透明加速设备的一些缓存数据;相当于用户直接从本地的局域网来读取网站信息
透明加速设备起到了用户和外网服务器的中间人作用(既作为服务器,也作为客户端)
HTTP透明加速交互过程
1、电脑通过DNS协议将域名解析为IP地址(先本地缓存、再本机Hosts文件、再DNS服务器)
2、电脑与解析出来的IP建立TCP三次握手(此连接会被透明加速设备劫持,透明加速设备伪造成外网服务器与PC建立三次握手)
3、电脑发出HTTP GET请求
4、透明加速设备判断此GET请求的页面是否存在缓存(如果存在缓存,则返回数据给PC;如果不存在缓存,则透明加速设备代替PC与外网服务器进行交互,交互完成后再将数据返回给PC,并且透明加速设备自己也缓存一份)
5、当下次PC再次访问这些网站时就直接匹配透明加速设备的缓存,起到了加速访问和节省公网带宽的作用
6、PC浏览器将外网服务器返回的内容解码成可视化的界面
7、PC与公网服务器进行四次挥手(实际是PC与透明加速设备伪造成的公网服务器断开;如果透明加速设备与外网服务器建立了连接,也需要断开)
HTTP代理服务器场景下交互过程
在网络中有一台HTTP显示代理设备,内网用户为浏览器配置了代理服务器,代理地址为HTTP显示代理设备的地址(端口号为8080)
通过代理服务器,使得电脑端访问网页域名时不需要DNS解析
HTTP显示代理交互过程
1、电脑直接与代理服务器的IP和端口建立TCP三次握手(8080端口)
2、电脑发出HTTP GET请求
3、代理服务器收到该GET请求后,先进行DNS解析
4、代理服务器与解析出来的IP建立TCP三次握手(代理服务器源端口为随机端口,目的端口默认HTTP 80、HTTPS 443)
5、代理服务器发出HTTP GET请求
6、公网服务器将数据包返回给代理服务器
7、代理服务器将数据包返回给电脑PC
8、PC与代理服务器进行TCP四次挥手,代理服务器与公网服务器进行四次挥手
通过AC对上网用户不同场景的认证过程
AC上网认证正常交互过程
希望对每个上网用户进行认证、控制和审计(对每个用户开启用户名密码认证策略)
通过AC进行上网认证
1、PC向DNS服务器发出DNS QUERY请求,DNS回应IP地址
2、PC向解析出的IP地址发送TCP 三次握手
3、PC向服务器发送GET请求(请求主页)
4、AC拦截PC的GET请求,此时AC自己伪造成用户要访问的服务器,给用户回复HTTP 302 Moved Temporarily重定向消息,要求PC重定向访问AC的认证页面
5、PC自动重定向访问AC的认证页面(先与重定向的IP地址建立三次握手),输入账号密码进行认证
6、AC判断用户名密码是否正确,如果正确则认证通过;AC返回HTTP 200 OK,并让AC重定向到之前访问的网站
通过Cookie实现免认证交互过程
用户希望第一次登录认证以后,一段时间以内不需要重复认证登录
解决方案1:关闭认证设备的无流量自动注销功能(弊端:用户在线时长统计不准确)
解决方案2:认证设备开启Cookie免认证功能
第一次登录
1~5:前5步同正常AC上网认证密码交互过程
6:在AC判断认证通过之后,在给用户返回HTTP 200 OK时,还会通过set-cookie给PC的浏览器种植一个附带认证信息的Cookie值,最后让AC重定向到之前访问的网站
后续登录,再次访问网站实现免认证(前提是用户并没有认为注销账号)
1、PC向DNS服务器发出DNS QUERY请求,DNS回应IP地址
2、PC向解析出的IP地址发送TCP 三次握手
3、PC向服务器发送GET请求(请求主页)
4、AC拦截PC的GET请求,此时AC自己伪造成用户要访问的服务器,给用户回复HTTP 302 Moved Temporarily重定向消息,要求PC重定向访问AC的认证页面
5、PC自动重定向访问AC的认证页面(先与重定向的IP地址建立三次握手),访问时的HTTP GET请求中携带了之前AC给浏览器种植的认证信息Cookie值
6、AC判断此认证Cookie值是否与AC设备本地保存的一致,如果一致则认证通过,返回HTTP 200 OK,并且让用户以与该cookie绑定的用户名上网,最后让PC重定向到之前访问的网站
代理服务器场景下HTTP密码认证交互过程
在网络出口有一台代理设备(即 AC部署在PC和代理服务器之间)
PC上配置了代理服务器的IP,AC上开启了密码认证策略
存在的问题
1、PC与代理服务器8080建立三次握手
2、PC向代理服务器发起HTTP GET请求
3、AC拦截PC的GET请求,此时AC自己伪造成用户要访问的服务器,给用户回复HTTP 302 Moved Temporarily重定向消息,要求PC重定向访问AC的认证页面
4、PC向代理服务器发送HTTP GET请求,请求AC的认证界面(并不是直接向AC发起HTTP GET请求,此时AC收到后又会发送重定向,出现了循环重定向);按照正常情况,此时PC向访问重定向页面时就不应该去向代理服务器发送,而是应该向AC发送HTTP GET请求(解决方法:在用户端设置代理服务器时,需要设置用户端去访问AC重定向的地址时不使用代理服务器访问)
正常的交互流程
1、PC与代理服务器8080建立三次握手
2、PC向代理服务器发起HTTP GET请求
3、AC拦截PC的GET请求,此时AC自己伪造成用户要访问的服务器,给用户回复HTTP 302 Moved Temporarily重定向消息,要求PC重定向访问AC的认证页面
4、PC自动重定向访问AC的认证页面(先与重定向的IP地址建立三次握手),输入账号密码进行认证
5、AC判断用户名密码是否正确,如果正确则认证通过;AC返回HTTP 200 OK,并让AC重定向到之前访问的网站
6、PC向代理服务器发起HTTP GET请求
7、接下来就和正常的代理服务器交互流程一样(代理服务器收到该GET请求后先进行DNS解析、代理服务器与解析出来的IP建立TCP三次握手、代理服务器发出HTTP GET请求、代理服务器将数据包返回给电脑PC)