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)
相关文章:
HTTP不同场景下的通信过程和用户上网认证过程分析
目录 HTTP不同场景的通信过程 HTTP正常交互过程 HTTP透明加速传输过程 HTTP代理服务器场景下交互过程 通过AC对上网用户不同场景的认证过程 AC上网认证正常交互过程 通过Cookie实现免认证交互过程 代理服务器场景下HTTP密码认证交互过程 HTTP不同场景的通信过程 HTTP、…...
VR 实现 Splash Screen 效果
文章目录 背景官方实现逆向分析 背景 手机 App 在实现 Splash Screen 的时候,目前都有成熟的方案可以参考,但是在做 VR 开发时,要如何实现一个 App 自己的 Splash Screen ,下面是我们基于 PICO & OCULUS 进行业务开发时经过探…...
HarmonyOS学习--TypeScript语言学习(一)
注意:这只是我学习的笔记!!! 注意:这只是我学习的笔记!!! 注意:这只是我学习的笔记!!! 本章目录如下: 一、TypeScript语言…...
【C语言】函数递归详解(一)
目录 1.什么是递归: 1.1递归的思想: 1.2递归的限制条件: 2.递归举例: 2.1举例1:求n的阶乘: 2.1.1 分析和代码实现: 2.1.2图示递归过程: 2.2举例2:顺序打印一个整数的…...
WT588F02B-8S语音芯片助力破壁机:智能声音播放提示IC引领健康生活新潮流
在追求健康饮食的时代潮流中,破壁机作为榨汁、搅拌的重要厨房电器,融入智能技术的趋势不断加强。唯创知音的WT588F02B-8S语音芯片作为声音播放提示IC,为破壁机注入了更智能、便捷的声音提示功能,引领用户迈入健康生活的新潮流。 …...
NXP iMX8M Plus Qt5 双屏显示
By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用,可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 Verdin iMX8M Plu…...
RepidJson中Writer类、FilewriteStream类、 PrettyWriter类的区别
rapidjson是一个C的JSON解析库,可以用于解析和序列化JSON数据。 Writer是rapidjson中一种基本的输出流,用于将JSON数据输出到字符串或文件中。 FileWriteStream是一个Writer的子类,它专门用于将JSON数据输出到文件中。相比于普通的Writer&a…...
IntelliJ idea卡顿解决,我遇到的比较管用的方案
Setttings> Build, Execution,Deployment>Debugger> Data Views> Java 取消 Enable "toString()" object view; Speed up debugging in IntelliJ Yesterday, I observed painfully slow debugging in IntelliJ. Every step over or step in took almost…...
Fabric.js 实战开发使用介绍
原生canvas用的多的有哪些槽点就不用我多说了;fabric 作为一个canvas库,提供了非常高效、直观的API操作,使我们对涉及canvas相关的功能开发效率大幅提升~~~~ 简单记录下自己的心得;以下是对比canvas来说的优势: 1.简…...
Vue.directive
Vue.directive( id, [definition] ) 参数: {string} id {Function | Object} [definition] // 注册一个全局自定义指令 v-focus Vue.directive(focus, {// 当被绑定的元素插入到 DOM 中时……inserted: function (el) {// 聚焦元素el.focus()} }) Vue.directive(my…...
webpack优化打包速度
webpack打包速度太慢 优化 1.多线程打包 js压缩和loader 2.优化启动速度 hard-source-webpack-plugin 3.删除无用的 分析类插件 4.DllPlugin通道打包 1.webpack多线程打包 loader loader 使用 thread-loader 将他放置你要使用的loader前面就行,不过这个lorder例如s…...
ALTERNET STUDIO 9.1 Crack
ALTERNET STUDIO 9.1 发布 宣布 AlterNET Studio 9.1 版本今天上线。AlterNET Studio 9.0 是一个中期更新,重点是改进我们所有的组件库。 以下是 AlterNET Studio 9.1 的发布亮点: Roslyn C# 和 Visual Basic 解析器现在支持代码修复/代码重构。 代码修复…...
基于Java技术的选课管理系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
在UBUNTU上使用Qemu和systemd-nspawn搭建RISC-V轻量级用户模式开发环境
参考链接 使用Qemu和systemd-nspawn搭建RISC-V轻量级用户模式开发环境 - 知乎 安装Qemu sudo apt updatesudo apt -y install qemu-user-binfmt qemu-user-static systemd-container sudo apt -y install zstd 配置环境 RISCV_FILEarchriscv-2023-10-09.tar.zstwget -c ht…...
JAVA使用POI向doc加入图片
JAVA使用POI向doc加入图片 前言 刚来一个需求需要导出一个word文档,文档内是系统某个界面的各种数据图表,以图片的方式插入后导出。一番查阅资料于是乎着手开始编写简化demo,有关参考poi的文档查阅 Apache POI Word(docx) 入门示例教程 网上大多数是XXX…...
反向传播算法
反向传播算法的数学解释 反向传播算法是深度学习中用于训练神经网络的核心算法。它通过计算损失函数相对于网络权重的梯度来更新权重,从而最小化损失。 反向传播的基本原理 反向传播算法基于链式法则,它按层反向传递误差,从输出层开始&…...
记录 | ubuntu降低内核版本的方法
降低 ubuntu 内核,比如降低到 4.15 版本,下载对应 4.15.0.128 内核离线安装,网址: http://archive.ubuntu.com/ubuntu/pool/main/l/linux/, 根据实际选择下载,我这里选择,安装的话采用 dpkg -i …...
MX6ULL学习笔记 (八) platform 设备驱动实验
前言: 什么是 Linux 下的 platform 设备驱动 Linux下的字符设备驱动一般都比较简单,只是对IO进行简单的读写操作。但是I2C、SPI、LCD、USB等外设的驱动就比较复杂了,需要考虑到驱动的可重用性,以避免内核中存在大量重复代码&…...
初识Linux:权限(2)
目录 权限 用户(角色) 文件权限属性 文件的权限属性: 有无权限的区别: 身份匹配: 拥有者、所属组的修改: 八进制的转化: 文件的类型: x可执行权限为什么不能执行…...
测试环境使用问题及其优化对策实践
1 背景及问题 G.J.Myers在<软件测试技巧>中提出:测试是为了寻找错误而运行程序的过程,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试, 一个成功的测试是揭示了迄今为止尚未发现的错误的测试。 对于新手来说࿰…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
