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://www.mzph.cn/news/206687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业130+总分400+云南大学通信847专业基础综考研经验(原专业课827)

今年专业130总分400云南大学通信上岸,整体考研感觉还是比较满意,期间也付出了很多心血,走过弯路,下面分享一下这一年考研得失,希望大家可以从中有所借鉴。 先说明我在考研报名前更换成云南大学的理由:&…

谷歌正式发布最强 AI 模型 Gemini

2023年12月6日,谷歌公司宣布推出其被认为是规模最大、功能最强大的人工智能模型 Gemini。 Gemini将分为三个不同的套件:Gemini Ultra、Gemini Pro和Gemini Nano。 Gemini Ultra被认为具备最强大的能力,Gemini Pro则可扩展至多任务&#x…

xilinx原语详解及仿真——ODDR

ODDR位于OLOGIC中,可以把单沿传输的数据转换为双沿传输的数据, 在讲解ODDR功能之前,需要先了解OLOGIC的结构及功能。 1、OLOGIC OLOGIC块位于IOB的内侧,FPGA内部信号想要输出到管脚,都必须经过OLOGIC。OLOGIC资源的类…

CleanMyMac4.16中文最新版本下载

当很多人还在为电脑运行缓慢、工作问题不能快速得到解决而烦恼的时候,我已经使用过了多款系统清理工具,并找到了最适合我的那一款。我的电脑是超耐用的Mac book,接下来给大家介绍三种在众多苹果电脑清理软件的排名较高的软件。 一、Maintena…

【ET8】0.ET8入门-ET框架介绍

ET8 新特性 多线程多进程架构,架构更加灵活强大,多线程设计详细内容请看多线程设计课程抽象出纤程(Fiber)的概念,类似erlang的进程,非常轻松的创建多个纤程,利用多核,仍然是单线程开发的体验纤程调度: 主线程&#xf…

首次面试经历(忘指导)当我在简历上写了苍穹外卖,瑞吉外卖时……

🌈键盘敲烂,年薪30万🌈 个人简介: 大三在校生,二本院校,专业:信息管理与信息系统 面试岗位: java开发实习生 投”简历“ 临近大三寒假,很早就有实习想法的我,对12月做…

一篇文章了解JDK的前世今生

我们每天都在开发Java,每天都在使用JDK,那么我们了解JDK的发展史吗,这篇文章将带你深入了解JDK的发展史。 JDK(Java Development Kit)是Java开发者工具包,是用于编写Java程序和运行Java程序的软件开发工具集。自从1995年Java语言首次发布以来,JDK已经经历了数十年的发展…

python打开相机,用鼠标左键框选矩形区域,支持一次框选多个矩形区域,通过鼠标右标清除上一次画的矩形。

方案一 import cv2# Global variables rectangles [] current_rectangle [] drawing False# Mouse callback function def mouse_callback(event, x, y, flags, param):global rectangles, current_rectangle, drawingif event cv2.EVENT_LBUTTONDOWN:drawing Truecurren…

C语言——常用库函数

C语言——常用库函数 memcmp int my_memcmp(char* str1,char* str2,int num) {while(num--){if(*str1>*str2){return 1;}else if(*str1<*str2){return -1;}else{str1;str2;}}return 0; }memcpy void* my_memcpy(void *str1,void *str2,int size) {int *p1str1;int *p2…

Linux数据库Mysql增删改查

从安装数据库到增删改查 apt install mariadb-serverUndefined 安装好后初始化 mysql_secure_installationUndefined 查 查询现有的库 show databases;SQL 进入库 use mysql;Perl 查询表 show tables;SQL 查询表结构 desc mysql;SQL 查询表内容 select * from my…

深度学习TensorFlow2基础知识学习后半部分

介绍几个重要操作&#xff1a; 1.范数 a tf.fill([1,2], value2.) b tf.norm(a)# 二范数#第二种计算方法 # 计算验证 a tf.square(a) log("a的平方:", a) a tf.reduce_sum(a) log("a平方后的和:", a) b tf.sqrt(a) log("a平方和后开根号:"…

NVIDIA与 Sparkfun 的合作伙伴在 Hackster.io 上发起了人工智能创新挑战赛,喊你来参加!

NVIDIA与 Sparkfun 的合作伙伴在 Hackster.io 上发起了人工智能创新挑战赛&#xff0c;喊你来参加&#xff01; 本次竞赛的目标旨在吸引开发者社区在 NVIDIA Jetson Orin 平台上为边缘构建生成式 AI 应用程序和模型&#xff0c;希望通过本次比赛提高人们对新 Jetson 生成式 AI…

Python微信公众号批量发布文章问题记录,调用api接口发草稿箱编码有问题

1、accesstoken获取方法 def get_access_token():url https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid{}&secret{}.format(*****************, ***********)response requests.get(url)res_html response.json()access_token res_ht…

四元数,欧拉角,旋转矩阵,旋转向量

四元数&#xff0c;旋转矩阵&#xff0c;旋转向量&#xff0c;欧拉角 一、欧拉角 1、欧拉角是表达旋转的最简单的一种方式&#xff0c;形式上它是一个三维向量&#xff0c;其值分别代表物体绕坐标系三个轴(x,y,z轴&#xff09;的旋转角度&#xff0c;默认旋转正向为逆坐标轴逆…

C#winform上下班打卡系统Demo

C# winform上下班打卡系统Demo 系统效果如图所示 7个label控件(lblUsername、lblLoggedInEmployeeId、lab_IP、lblCheckOutTime、lblCheckInTime、lab_starttime、lab_endtime)、3个按钮、1个dataGridView控件、2个groupBox控件 C#代码实现 using System; using System.Dat…

Java零基础——Elasticsearch篇

1.Elasticsearch简介 Elasticsearch是一个基于Lucene的一个开源的分布式、RESTful 风格的搜索和数据分析引擎。Elasticsearch是用Java语言开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是一种流行的企业级搜索引擎。Elasticsearch用于云计算中&#xf…

【Ambari】Python调用Rest API 获取YARN HA状态信息并发送钉钉告警

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

二层交换原理

二层交换设备工作在OSI模型的第二层&#xff0c;即数据链路层&#xff0c;它对数据包的转发是建立在MAC&#xff08;Media Access Control &#xff09;地址基础之上的。二层交换设备不同的接口发送和接收数据独立&#xff0c;各接口属于不同的冲突域&#xff0c;因此有效地隔离…

【C/PTA —— 15.结构体2(课内实践)】

C/PTA —— 15.结构体2&#xff08;课内实践&#xff09; 7-1 计算职工工资7-2 计算平均成绩7-3 找出总分最高的学生7-4 通讯录的录入与显示 7-1 计算职工工资 #include<stdio.h> #include<stdlib.h> typedef struct GZ {char name[6];double j;double f;double z;…

记一次由 jedis 引发的离谱选学问题

背景 我的应用中&#xff0c;使用 jedis 作为连接 redis 的客户端&#xff0c;一直在用的好好的&#xff0c;后来有一个新的组件&#xff0c;也需要使用 redis&#xff0c;但是组件是内部封装的&#xff0c;我只能提供一个 StringReidsTempalte&#xff0c;所以我基于应用本身…