文章目录

  • 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)以及文件名三部分构成:



是一种按照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三次握手


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位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:

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


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


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


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


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服务->负载均衡->防火墙->用户。

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工作原理及使用相关推荐

  1. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  2. 深入理解Nginx工作原理

    1 反向代理 1.1 概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给intern ...

  3. 高频开关电源原理_程控开关电源的工作原理

    本文介绍了开关电源的工作原理以及它的特点. 程控开关电源要要比线性电源复杂得多. 下图是典型的开关电源工作原理图. 首先对 220 V/50Hz 的 AC 输入,通过桥式整流器进行整流 储能电容对整流 ...

  4. Servlet生命周期与工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  5. java的工作原理你知道吗_每天用Mybatis,但是Mybatis的工作原理你真的知道吗?

    近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了. 核心部件:SqlSession Executor Stat ...

  6. linux网络管理原理,Linux__网络管理(物理层 数据链路层 网络层工作原理)

    千锋云计算逆战班11点后打卡 今天学习后,进行复习下,物理层 数据链路层  网络层 的工作原理 物理层关心的两件事情:1.信号 2.介质 先说信号:信号分为模拟信号和数字信号 模拟信号: 模拟信号,不 ...

  7. HDD工作原理 导图

    以上导图介绍了我们使用的 (HDD)机械硬盘的基本构造以及核心工作原理,对于大家扫盲有所帮助 参考文档: https://blog.csdn.net/yizhaoxin/article/details ...

  8. 路由和交换机工作原理

    路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成.如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种"互连"并没有什么实际意义.因 ...

  9. Google工作原理

    今天在晚上看到一个图,讲解google的工作原理,感觉写的不错.贴过来方便以后深入的研究. 转载于:https://www.cnblogs.com/muyuge/archive/2010/07/06/ ...

  10. 【摄像头】摄像机工作原理

    1.摄像机工作原理 外部光线穿过镜头(lens)后, 经过滤光片(color filter)滤波后照射到光学传感器(Sensor)上面, Sensor 将从 lens 上传导过来的光线转换为电信号,再 ...

最新文章

  1. tomcat源码学习
  2. UVA 11255 Necklace
  3. 字典对中文字符串进行排序 python_Python基础入门:字符串和字典
  4. Ubuntu下常用命令总结
  5. 板子制作_使用Buildroot制作Ubootamp;Kernelamp;Rootfs
  6. python调整图像大小_使用Python调整图像大小
  7. “梅丽莎”病毒背后的神秘黑客
  8. java 微信 百度地图,android 百度地图gps转百度地图坐标java.lang.UnsatisfiedLinkError: CoordinateEncryptEx...
  9. jsessionid和jwt_jsessionid
  10. 微信扫一扫扫描二维码带参
  11. java工商银行项目_工商银行聚合支付,java开发实现
  12. 计算机专业笔记本电脑华为,大学生不知道买什么电脑?来看这款华为荣耀极致性价比笔记本!...
  13. 你需要来自trustedinstaller的权限才能删除
  14. 用VB实现网页下载跟踪程序
  15. 浏览器油猴插件Tampermonkey下载安装
  16. Pytorch问题及解决:‘lengths‘ argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor
  17. Android UI 显示工具——HierarchyViewer工具
  18. 语言认知模型--的学习笔记
  19. Secret的三种形式
  20. 用MySQL表示学号_java习题:在MySQL数据库建立一个学生信息表(学号,姓名,班级,成绩),编程完成如下操作...

热门文章

  1. PDAL:OSGeo4W安装配置测试PDAL
  2. 搜索引擎排名都选乐云seo_搜索优化技术选乐云seo
  3. 家庭成员介绍html模板,幼儿园介绍家庭成员教案
  4. 『VulnHub系列』DC: 9-Walkthrough
  5. Huawei EROFS 初探
  6. Shader编程之地标特效
  7. 无人机右手定则以及角度大小方向粗判断
  8. 系统级集成测试的断舍离
  9. C语言经典例题--打印前五十个素数
  10. 计算机网络ospf实验报告,中山大学《计算机网络实验报告》10-OSPF实验.pdf