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)

相关推荐
木易 士心16 分钟前
WebSocket 与 MQTT 在即时通讯中的深度对比与架构选型指南
websocket·网络协议·架构
赖small强32 分钟前
【Linux 网络基础】网络通信中的组播与广播:基础概念、原理、抓包与应用
linux·网络·broadcast·组播·广播·multicast
陌路2035 分钟前
Linux是如何收发网络包的?
linux·网络
报错小能手36 分钟前
计算机网络自顶向下方法50——链路层 虚拟局域网 链路虚拟化:网络作为链路层(多协议标签交换)
网络·计算机网络·智能路由器
༺ཉི།星陈大海།ཉྀ༻CISSP36 分钟前
隐蔽端口穿透攻击的技术分析与防御实践 —基于一次HW行动的实战案例
网络·智能路由器
0wioiw01 小时前
跨网络互联技术(Nginx反向代理)
服务器·网络·nginx
报错小能手2 小时前
计算机网络自顶向下方法55——无线网移动网 移动性管理
网络·计算机网络
jun_bai10 小时前
python写的文件备份网盘程序
运维·服务器·网络
爱吃牛肉的大老虎11 小时前
网络传输架构之gRPC讲解
网络·架构
Warren9811 小时前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展