@http工作原理及使用

article/2025/3/14 12:53:01

文章目录

    • Http协议介绍
    • Http工作原理
    • 访问网站分析
    • Http请求方法
    • Http响应方法
    • http相关术语

Http协议介绍

在这里插入图片描述

`HTTP` 全称:`Hyper Text Transfer Protocol` 中文名:超文本传输协议------
包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
>  
>
>  html文件->包含各种各样的元素(URL链接)->形成WebPage简称web页面------

`URL`即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。`URL`由协议、主机和端口(默认为80)以及文件名三部分构成:

img



是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

Http工作原理

在这里插入图片描述

1.首先,当你在浏览器中输入一个网址的时候([https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%9B%BE%E8%80%81%E6%B9%BF&rsv_pq=c177c4df0026ba3e&rsv_t=e001VxO8FQ8I6s1o1i0km8IYEX2%2F7PwwkwTB6FC%2FXU9Mmwz24Z4i%2BnYoP0I&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&inputT=1729&rsv_sug4=1728)浏览器会帮你分析,你输入的这个URL](https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=曾老湿&rsv_pq=c177c4df0026ba3e&rsv_t=e001VxO8FQ8I6s1o1i0km8IYEX2%2F7PwwkwTB6FC%2FXU9Mmwz24Z4i%2BnYoP0I&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&inputT=1729&rsv_sug4=1728)浏览器会帮你分析,你输入的这个URL)2.其次,浏览器会向DNS服务器请求解析,该URL中的域名www.baidu.com,解析出百度服务器所在的IP地址3.DNS服务器,会将解析出来的IP地址`110.111.112.113`并返回给浏览器。4.浏览器接收到DNS返回的IP地址,立即与该IP所在的服务器建立TCP连接(80端口)。5.浏览器请求文档,也就是咱们常说的html页面,GET /index.html,并发出HTTP请求报文。6.服务器给出响应,将请求的index.html文档返回给浏览器,也就是响应HTTP请求的报文。7.TCP连接响应完之后,释放TCP连接。8.最后就能显示出,你请求的这个页面了

在这里插入图片描述


《单身狗版HTTP工作原理》单身狗刘大哥:浏览器饰
中介大哥:DNS饰
小姐姐照片:URL饰
小姐姐:服务器饰1.首先作为单身狗的浏览器,在拿到一个`URL`(小姐姐照片)之后,先分析(意淫)...身材,脸蛋emmmmm...不可描述。2.然后找到`DNS`(中介大哥),哥,你把这个小姐姐的,电话,微信,QQ...发给我呗3.`DNS`(中介大哥),开始找,这个小姐姐的信息...找到手机号`110.111.112.113`返回给这个姓刘的单身狗(浏览器)4.刘大哥拿到手机号之后,欣喜若狂,于是就开始打电话(建立TCP连接)给小姐姐。5.刘大哥,打电话,给小姐姐,发出邀约请求(HTTP请求报文,GET /index.html)我们见一面吧,电影院,公园,酒店...都可以。6.小姐姐,回应刘大哥的请求,(HTTP响应报文)现在是大夏天的公园热,电影院又黑,我怕黑...那就酒店见吧,你开好房间等我。7.挂掉电话,(释放TCP连接)8.刘大哥和小姐姐,在酒店见面,关好门,拉上窗帘,掀开被子,在床上,进入被窝,刘大哥掏出.........自己的手表,你看我的手表是夜光的(显示html页面)...活该单身

访问网站分析

一个`URL`有可能会很长,以 `&` 为分隔符每一个`&`后面都是一个参数,如下所示:https://www.baidu.com/s?ie=utf-8
&f=8
&rsv_bp=1
&rsv_idx=1
&tn=baidu
&wd=%E6%9B%BE%E8%80%81%E6%B9%BF
&rsv_pq=c177c4df0026ba3e
&rsv_t=e001VxO8FQ8I6s1o1i0km8IYEX2%2F7PwwkwTB6FC%2FXU9Mmwz24Z4i%2BnYoP0I&rqlang=cn&rsv_enter=1
&rsv_dl=tb
&rsv_sug2=0
&inputT=1729
&rsv_sug4=1728------PC(电脑)向DNS服务器`110.111.112.113`发出`DNS QUERY`请求,请`blog.driverzeng.com``A`记录。![在这里插入图片描述](https://img-blog.csdnimg.cn/20210413152000394.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTk3Mjc4MQ==,size_16,color_FFFFFF,t_70)
------

DNS服务器,回复 `DNS response`,解析出blog.driverzeng.com域名对应的三条 `A` 记录
`45.253.17.216`
`45.253.17.213`
`45.253.17.211`

在这里插入图片描述


PC向解析出的blog.driverzeng.com服务器地址发起tcp三次握手

img


PC向blog.driverzeng.com服务器发出GET请求,请求主页面

在这里插入图片描述



[blog.driverzeng.com服务器回应HTTP/1.1](https://blog.driverzeng.xn--comhttp-2k1lx4zz7ao08cthx/1.1) 302 `这里302`是我做了跳转所以显示的是302,返回主页数据包,正常来说可以看到图中,下面的有些网站返回的是 HTTP/1.1 200 OK `200`是正确访问的状态码![在这里插入图片描述](https://img-blog.csdnimg.cn/20210413151906908.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTk3Mjc4MQ==,size_16,color_FFFFFF,t_70)

````bash下图中
`GET`那一部分内容被称为:请求头信息`GET``HTTP`之间有一个空行被称为:请求空行`HTTP`中的信息被称为:回应信息`HTTP``faa`之间也有个空行被称为:响应空行`faa`部分被称为:主体

在这里插入图片描述



最后完成了数据的交互过程,TCP建立的连接经过三次握手之后,还要经过四次挥手,断开连接下图所示:为什么有的时候状态码是200 有的时候是304?

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

>  
>
>  General:基本信息
>  Response Headers:响应的头部信息
>  Request Headers:请求的头部信息------
#请求的url
Request URL: https://blog.driverzeng.com/#请求方式
Request Method: GET#状态码
Status Code: 200 #远程主机IP
Remote Address: 45.253.17.213:443#控制请求头内容
Referrer Policy: no-referrer-when-downgrade

在这里插入图片描述

#请求的域名
:authority: blog.driverzeng.com#请求的方式
:method: GET#请求的路径
:path: /#请求的协议:https
:scheme: https#请求资源类型
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3#压缩
accept-encoding: gzip, deflate, br#语言
accept-language: zh-CN,zh;q=0.9#缓存控制(没有做缓存)
cache-control: no-cache#保持连接:长连接
Connetection:keep-aliveHTTP/1.1版本 #长连接,一次TCP的连接可以发起多次http请求HTTP/1.0版本 #短连接,一次TCP的连接只能发起一次http请求还有HTTP/2.0和HTTP/3.0#请求的域名
Host:blog.driverzeng.com#登录信息
cookie: PHPSESSID=afb7d767864ce6a652caa67dde33fcfc; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_8cb66d45a3693d7c9673d2f1eaf63f66=admin%7C1565534946%7C0cvYan2unubeCmkeb4dHfIueS0DrnA4cW8plJj9700T%7C37bb38d7b5c62837d6d82dd12eda70830752a1a37cf976d94d4ee560c75f766f; wp-settings-1=libraryContent%3Dbrowse%26editor%3Dtinymce%26hidetb%3D0%26post_dfw%3Doff%26align%3Dcenter%26imgsize%3Dlarge%26mfold%3Do; wp-settings-time-1=1564325346; player_volume=0.0896551724137931; player=no; wp-postpass_8cb66d45a3693d7c9673d2f1eaf63f66=%24P%24Bpclv.Wj97LNy8oqHuxiMGDrNAjbwc1#参数:没有缓存
pragma: no-cache#谷歌自带的(不属于请求头的内容)
upgrade-insecure-requests: 1#客户端(用户设备)
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

#大小
Accept-Range:bytes#阿里云存储保存时间
ali-swift-global-savetime: 1564813833#缓存控制
cache-control: no-cache, must-revalidate, max-age=0#压缩
content-encoding: gzip#内容长度
content-length: 9410#返回内容类型及字符集
content-type: text/html; charset=UTF-8#返回服务器时间
date: Sat, 03 Aug 2018 06:30:33 GMT#加密id
eagleid: 2dfd119815648138332064260e#失效时间
expires: Wed, 11 Jan 1984 05:00:00 GMT#软链接
link: <https://blog.driverzeng.com/wp-json/>; rel="https://api.w.org/"#参数:没有缓存
pragma: no-cache#使用的web软件
server: Tengine#状态码
status: 200#指定特定站点允许访问
timing-allow-origin: *#渲染
vary: Accept-Encoding#经过各级缓存
via: cache14.l2cm12[99,200-0,M], cache1.l2cm12[101,0], cache13.cn1300[122,200-0,M], cache4.cn1300[123,0]------------- 以下都是CDN厂商带的 ----------------
#CDN缓存是否命中
x-cache: MISS TCP_MISS dirn:-2:-2#缓存版本号
x-powered-by: PHP/7.1.21#缓存时间
x-swift-cachetime: 0#保存时间
x-swift-savetime: Sat, 03 Aug 2019 06:30:33 GMT

Http请求方法

HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:

方法(Method)含义
GET请求读取一个Web页面
POST附加一个命名资(如Web页面)
DELETE删除Web页面
CONNECT用于代理服务器
HEAD请求读取一个Web页面的头部
PUT请求存储一个Web页面
TRACE用于测试,要求服务器送回收到的请求
OPTION查询特定选项

POST请求向指定的资源提交要被处理的数据
在这里插入图片描述

Http响应方法

状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:

img

状态码含义
200成功
301永久重定向(跳转)
302临时重定向(跳转)
304本地缓存
307内部重定向(跳转)
400客户端错误
401认证失败
403找不到主页,权限不足
404找不到页面
500内部错误
502找不到后端主机
503服务器过载
504后端主机超时

在这里插入图片描述


User-Agent:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识 版本信息

在这里插入图片描述


Server:响应头包含处理请求的原始服务器的软件信息

在这里插入图片描述


Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL。

img

img


Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取。
在这里插入图片描述


在这里插入图片描述


1.用输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > DNS解析(递归查询|迭代查询)客户端向服务端发起查询 - > 递归查询服务端向服务端发起查询 - > 迭代查询
2.由浏览器向服务器发起TCP连接(三次握手)客户端     -->请求包连接 -syn=1 seq=x           服务端服务端     -->响应客户端syn=1 ack=x+1 seq=y     客户端客户端     -->建立连接 ack=y+1 seq=x+1          服务端
3.客户端发起http请求:1)请求的方法是什么:     GET获取2)请求的Host主机是:     blog.driverzeng.com3)请求的资源是什么:     /index.html4)请求的端端口是什么:    默认http是80 https是4435)请求携带的参数是什么:   属性(请求类型、压缩、认证、浏览器信息、等等)6)请求最后的空行
4.服务端响应的内容是1)服务端响应使用WEB服务软件2)服务端响应请求文件类型3)服务端响应请求的文件是否进行压缩4)服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)客户端     --> 断开请求 fin=1 seq=x          -->    服务端服务端     --> 响应断开 fin=1 ack=x+1 seq=y  -->    客户端服务端     --> 断开连接 fin=1 ack=x+1 seq=z  -->    客户端客户端     --> 确认断开 fin=1 ack=x+1 seq=sj -->    服务端

1.客户端发起http请求,请求会先抵达前端的防火墙
2.防火墙识别用户身份,正常的请求通过内部交换机通过tcp连接后端的负载均衡,传递用户的http请求
3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接后端的web,转发发用户的http请求
4.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下:静态请求:web直接返回给负载均衡->防火墙->用户动态请求:web向后端的动态程序建立TCP连接,将用户的动态http请求传递至动态程序->由动态程序进行解析
5.动态程序在解析的过程中,如果碰到查询数据库请求,则优先与缓存建立tcp连接,并发起数据查询操作。
6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp连接,并发起查询操作。
7.最后数据由, 数据库->动态程序->缓存->web服务->负载均衡->防火墙->用户。

img

http相关术语



假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请问对应的pv,uv,ip分别是多少?-  PV : 页面独立浏览量
-  UV : 独立设备
-  IP : 独立IP那么上面的题:
PV: 100*2*2 = 400
UV: 1002*2 = 200
IP: 1日PV千万量级并不大------面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。![img](https://img-blog.csdnimg.cn/img_convert/d6ea101a95fdf0e71765337cf0a08c49.png)

#一个电商公司,他的网站页面功能会有很多

注册登录首页详情页购物车价格标签留言客服支付中心物流仓储信息订单相信图片

http://chatgpt.dhexx.cn/article/bJi4Vvuy.shtml

相关文章

深入浅出HTTPS工作原理

深入浅出HTTPS工作原理 看了这么多篇讲https和加密算法的文章&#xff0c;只有阮一峰老师和这位老师的总结比较好。特此转载。 本文经授权转自腾讯蓝鲸&#xff08;微信号&#xff1a;Tencent_lanjing&#xff09; 蔡卓伦 14年毕业后加入腾讯sng增值产品部&#xff0c;一直从事…

HTTP详解 1 -工作原理

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 1. HTTP简介 HTTP协议&#xff08;HyperTe…

关于HTTP的工作原理

对于http&#xff0c;相信只要是个码农就都不会很陌生&#xff0c;但是如果有人问你&#xff0c;你对http了解吗&#xff1f;或者问当我们在浏览器的地址栏中输入一个网址如“http://www.baidu.com”之后发生了什么&#xff0c;为什么会出现【百度一下&#xff0c;你就知道】这…

HTTP协议的工作原理

一、HTTP协议用于客户端和服务端之间的通信 1、http协议规定&#xff0c;请求是从客户端发出&#xff0c;最后服务器端相响应请求并返回 2、请求报文是由请求方法&#xff0c;请求URI&#xff0c;协议版本&#xff0c;可选的请求首部字段和内容实体构成。 3、响应报文基本上由…

HTTP和HTTPS的工作原理及区别

一、HTTP和HTTPS的基本概念 HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09;&#xff1a;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用于从Web服…

HTTP详解(1)-工作原理

1. HTTP简介 HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效&#xff0c;使网络传输减少。它不仅保证计算机正确快速地传输超文本文档&#xff0c;还确定…

VBS带你领略脚本语言的快乐!(入门篇)

VBS语言基础入门 前言 小弟初来乍到&#xff0c;自诩高中时曾自学过一点VBS脚本语言基础&#xff0c;感觉不错&#xff0c;想把学习到的东西记录下来&#xff0c;和大家分享一下&#xff0c;由于小弟我学艺不精&#xff0c;有误的地方还请多多指教。    入门篇是给电脑小白做…

◎Vbs脚本编程简明教程之十 —— Vbs脚本编程常用的编辑器

Vbs脚本常用的编辑器当然是notapad&#xff0c;不过这个编辑器的功能当然实在是太弱了一点&#xff0c;其实有很多的专用的脚本编辑器可以大大方便vbs脚本的编写。我常用的有两种&#xff1a; 1、VBSEDit汉化版 2、primalscript汉化版&#xff0c;可以对30多种脚本进行编辑

VBS基础语法讲解

VBS基础语法讲解 文章目录 VBS基础语法讲解引言 一、编辑VBS的相关软件二、变量的定义一点说明 三、输入与输出1、输入2、输出 四、判断语句五、循环语句1、do -- loop 循环1&#xff09;until2&#xff09;while3&#xff09;exit do 2、for -- next 循环 引言 最近在学习VBS…

bat编程和vbs编程入门

先看看bat&#xff08;批处理文件&#xff09;中一些简单的命令 开头第一句 echo off 这句话的意思是后面每句都关闭回显&#xff0c;&#xff08;你可以不加这句直接echo 几行试试&#xff09;on打开命令的回显状态&#xff1b;off关闭命令的回显状态。关于“回显”&#xff…

vbs编程-执行cmd命令

简单格式 set ws createobject("wscript.shell") ws.run "cmd.exe /c explorer e:\game" cmd命令行参数 cmd /c > /close 执行命令,关闭窗口 cmd /k > /keep 执行命令,保持窗口 详细如下: 命令行输入 cmd /?

vbs编程入门

由于本经验是针对初次学习VBScript的小伙伴而定制的一篇经验&#xff0c;看完本经验。小编的目的是希望小伙伴能学会2点&#xff1a; 1、VBScript的解释器在哪 2、VBScript为什么能直接解释运行 3、第一个VBS函数——msgbox 先来说下什么是解释器&#xff1a;编程编程&#xff…

vbs格式编程教程提高

大家好&#xff0c;今天我又双叒叕来写教程了&#xff0c;相信很多读者是从我的文章&#xff1a;vbs格式编程教程_Hacker_02的博客-CSDN博客里过来的吧&#xff1f;好了&#xff0c;闲话先说到这&#xff0c;我们开始今天的提高内容&#xff1a; 下有小病毒&#xff0c;想要的…

vbs格式编程教程基础

什么是vbs呢&#xff1f;我们来看一下百度百科上的定义。 VBS是基于Visual Basic的脚本语言。VBS的全称是&#xff1a;Microsoft Visual Basic Script Edition。&#xff08;微软公司可视化BASIC脚本版&#xff09;。 大家最关心的就是用什么工具来开发VBS程序了, 答案是:记事…

Latex部分斜体变直体

Latex斜体变为直体 \rm即可 未使用之前的效果&#xff08; ${x}_{n1}$ $\mathop{\arg\min}\limits_{x}\alpha(x;D_n) &#xff09; 为了将所有的小写x变为直体&#xff0c;将所有的x替换为{\rm x}。&#xff08; ${\rm x}_{n1}$ $\mathop{\arg\min}\limits_{\rm x}\alph…

latex \textit不变斜体

latex 字体问题 使用平台&#xff1a;texstudio 问题描述&#xff1a;使用\textit \textbf等字体命令并不变成斜体和加粗&#xff0c;但并不报错 解决方法&#xff1a;将编译器XeLaTex改为PdfLaTex&#xff0c;latex小白表示也不知道为什么&#xff0c;但确实好使了。

Latex 字体调整-斜体-下划线-加粗-罗马数字

字体大小&#xff1a; 七号   5.25pt    1.845mm    \tiny 六号   7.875pt    2.768mm    \scriptsize 小五号  9pt      3.163mm    \footnotesize 五号   10.5pt    3.69mm     \small 小四号  12pt     4.2175mm    \norma…

latex的公式中不用斜体显示,使用罗马字体显示

latex的公式中不用斜体显示&#xff0c;使用罗马字体显示 latex公式中部分字体不是用斜体显示改成不是斜体的字母 latex公式中部分字体不是用斜体显示 latex的公式中显示min的格式是如下图所示&#xff1a; 对应的latex的代码如下所示&#xff1a; \begin{align}\label{test…

Latex参考文献斜体变正体方法

测试环境&#xff1a;texlivetexstudio 最近发表的论文被拒稿后改投Elsevier出版社的期刊&#xff0c;在引用参考文献时&#xff0c;遇到了问题&#xff1a; 1.一开始样式用的期刊所给名为&#xff08;cas-model2-names.bst&#xff09;的参考文献格式文件&#xff0c;但是使…

1、Latex学习笔记之基础入门篇

目录 一、Latex基础 1、架构 2、引用、脚注 3、单栏、双栏 4、常用快捷键 5、宏包 6、空格 7、换行、行间距 8、换段 9、下划线 10、引号 11、注释 12、字体 13、缩进 14、超链接 15、新页 Latex基础 1、架构 \documentclass{article} % article 文档 \usepac…