HTTP正常交互过程
1、电脑通过DNS协议将域名解析为IP地址(先本地缓存、再本机Hosts文件、再DNS服务器)
2、电脑与解析出来的外网服务器IP建立TCP三次握手(HTTP默认80端口、HTTPS默认443端口)
3、电脑发出HTTP请求Q(GET或POST)
4、外网服务器回应HTTP 200 OK(会将数据内容进行编码)
5、PC浏览器将外网服务器返回的内容解码成可视化的界面
6、PC与服务器进行四次挥手-现在有些HTTP支持长连接,可能看不到四次挥手(有些情况是电脑直接发送RST报文断开连接)
什么是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显示代理设备的地址(端号为8080)
通过代理服务器,使得电脑端访问网页域名时不需要DNS解析
1、电脑直接与代理服务器的IP和端口建立TCP三次握手(8080端口)
2、电脑发出HTTP GET请求
3、代理服务器收到该GET请求后,先进行DNS解析
4、代理服务器与解析出来的IP建立TCP三次握手(代理服务器源端口为随机端口,目的端口默认HTTP 80、HTTPS443)
5、代理服务器发出HTTP GET请求
6、公网服务器将数据包返回给代理服务器
7、代理服务器将数据包返回给电脑PC
8、PC与代理服务器进行TCP四次挥手,代理服务器与公网服务器进行四次挥手
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通过HTTP GET请求访问AC的认证页面–重定向的页面(先与重定向的IP地址建立三次握手),输入账号密码进行认证
6、AC判断用户名密码是否正确,如果正确则认证通过;AC返回HTTP 200OK,并让AC重定向到之前访问的网站
用户希望第一次登录认证以后,一段时间以内不需要重复认证登录
解决方案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通过HTTP GET请求访问AC的认证页面–重定向的页面(先与重定向的IP地址建立三次握手),访问时的HTTP GET请求中携带了之前AC给浏览器种植的认证信息Cookie值
6、AC判断此认证Cookie值是否与AC设备本地保存的一致,如果一致则认证通过,返回HTTP 200OK,并且让用户以与该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的认证界面(即:此时PC并不是直接向AC发起HTTP GET请求,而是向代理服务器发送HTTP请求,请求的地址是AC的认证地址,所以此时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通过HTTP GET请求访问AC的认证页面–重定向的页面(先与重定向的IP地址建立三次握手),输入账号密码进行认证
5、AC判断用户名密码是否正确,如果正确则认证通过;AC返回HTTP 200OK,并让AC重定向到之前访问的网站
6、PC向代理服务器发起HTTP GET请求
7、接下来就和正常的代理服务器交互流程一样(代理服务器收到该GET请求后先进行DNS解析、代理服务器与解析出来的IP建立TCP三次握手、代理服务器发出HTTP GET请求、代理服务器将数据包返回给电脑PC)