HTTP不同场景下的通信过程和用户上网认证过程分析

HTTP不同场景的通信过程

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透明加速设备,用于提升网络用户的上网速度,节省公网带宽

内网用户在访问某些网站的时候,可以直接匹配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、HTTPS443)

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通过HTTP GET请求访问AC的认证页面--重定向的页面(先与重定向的IP地址建立三次握手),输入账号密码进行认证

6、AC判断用户名密码是否正确,如果正确则认证通过;AC返回HTTP 200OK,并让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通过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)

相关推荐
weixin_442643421 小时前
推荐FileLink数据跨网摆渡系统 — 安全、高效的数据传输解决方案
服务器·网络·安全·filelink数据摆渡系统
阑梦清川1 小时前
JavaEE初阶---网络原理(五)---HTTP协议
网络·http·java-ee
阿尔帕兹2 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
FeelTouch Labs2 小时前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
千天夜3 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
长弓三石4 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
xianwu5434 小时前
反向代理模块
linux·开发语言·网络·git
follycat4 小时前
[极客大挑战 2019]HTTP 1
网络·网络协议·http·网络安全
earthzhang20215 小时前
《深入浅出HTTPS》读书笔记(5):随机数
网络协议·http·https
xiaoxiongip6665 小时前
HTTP 和 HTTPS
网络·爬虫·网络协议·tcp/ip·http·https·ip