HTTP 的工作原理

news2024/9/21 19:07:38

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、简单 HTTP
  • 二、HTTP 连接
            • 请求 I
            • 请求Ⅱ
  • 持久 HTTP
  • 并执行 HTTP
  • 默认浏览器连接设置
  • 总结


前言

在处理 Web 性能监控或优化时,了解 HTTP 协议的基础知识非常重要。众所周知,网络是建立在该协议之上的,该协议对网页的性能有很大影响。了解 HTTP 的工作原理以及 HTTP 事务中每个组件的含义是解释任何监视服务收集的数据的关键。这篇文章描述了HTTP的基础知识,并且是有关如何诊断性能问题的系列文章的第一篇。

HTTP 数据位于 TCP 协议之上,保证了交付的可靠性,并将大数据请求和响应分解为网络可管理的块。TCP是一种面向“连接”的协议,这意味着当客户端开始与服务器对话时,TCP协议将打开一个连接,HTTP数据将通过该连接可靠地传输,当对话完成时,应关闭该连接。HTTP 协议中的所有数据都以人类可读的 ASCII 文本表示。


一、简单 HTTP

简单的 HTTP 事务是客户端对 HTTP 内容发出单个请求的事务。
在这里插入图片描述

  1. DNS 查找:客户端尝试解析请求的域名。
  2. 客户端将 DNS 查询发送到本地 ISP DNS 服务器。
  3. DNS 服务器使用 IP 地址进行响应以进行 hostname.com
  4. 连接:客户端使用 hostname.com 的 IP 地址建立 TCP 连接
  5. 客户端发送 SYN 数据包。
  6. Web 服务器发送 SYN-ACK 数据包。
  7. 客户端使用 ACK 数据包应答,完成三路 TCP 连接建立。
  8. 发送:客户端将 HTTP 请求发送到 Web 服务器。
  9. 等待:客户端等待服务器响应请求。
  10. Web 服务器处理请求,查找资源,并将响应发送到客户端。客户端从 Web 服务器接收第一个数据包的第一个字节,其中包含 HTTP 响应标头和内容。
  11. 加载:客户端加载响应的内容。
  12. Web 服务器发送设置了 PSH 标志的第二个 TCP 段。
  13. 客户端发送 ACK。(客户端每从主机接收两个段发送一次 ACK)
  14. Web 服务器发送带有 HTTP_Continue 的第三个 TCP 段。
  15. 关闭:客户端发送 FIN 数据包以关闭 TCP 连接。

二、HTTP 连接

当按顺序向服务器发出多个请求并且每个请求建立新连接时,将发生串行 HTTP 连接。这种方法今天很少发生,因为所有现代浏览器都支持与主机的并行连接。但是,当浏览器或服务器仅支持 HTTP 1.0,而不支持 Keep Aalive(或 HTTP 1.0 +)并且第一个请求是阻塞请求(例如内联 JavaScript 请求)时,也可能发生这种情况
在这里插入图片描述

请求 I
  1. DNS 查找:客户端尝试解析请求的域名。
  2. 客户端将 DNS 查询发送到本地 ISP DNS 服务器。
  3. DNS 服务器使用 IP 地址进行响应以 hostname.com
  4. 连接:客户端使用 hostname.com 的 IP 地址建立 TCP 连接
  5. 客户端发送 SYN 数据包。
  6. Web 服务器发送 SYN-ACK 数据包。
  7. 客户端发送 ACK 数据包,完成三路 TCP 连接建立。
  8. 发送:客户端将 HTTP 请求发送到 Web 服务器。
  9. 等待:客户端等待服务器响应请求。
  10. 加载:客户端加载响应的内容。
请求Ⅱ
  1. 连接:客户端使用hostname.com的ip地址建立TCP连接。
  2. 发送:客户端将HTTP请求发送到web服务器。
  3. 等待:客户端等待服务器响应请求。
  4. 加载:客户端加载响应的内容。

持久 HTTP

持久连接允许浏览器/HTTP 客户端对同一主机名的不同对象请求使用相同的连接。HTTP 1.1 协议本身支持持久连接,并且不需要任何特定的 HTTP 标头信息。对于 HTTP 1.0,持久连接通过 Keep-Alive HTTP 标头进行控制。
在这里插入图片描述

  1. DNS查找:客户端尝试解析域名。
  2. 客户端将DNS查询发送到本地ISP(网络服务提供商)DNS(域名服务器)服务器。
  3. DNS服务器使用IP地址进行响应以hostname.com
  4. 连接:客户端使用hostname.com的IP地址建立TCP连接
  5. 客户端发送SYN数据包。
  6. web服务器发送SYN-ACK数据包。
  7. 客户端发送ACK报文,完成三路TCP连接建立。
  8. 发送:客户端将HTTP请求发送到web服务器。
  9. 等待:客户端等待服务器响应请求。
  10. 加载:客户端加载响应的内容。
  11. 发送:客户端HTTP请求发送到web服务器。
  12. 等待:客户端服务器响应请求
  13. 加载:客户端加载响应的内容。

并执行 HTTP

HTTP 1.1 协议使浏览器能够打开多个连接并并行执行 HTTP 请求。(带有 Keep-Alive 的 HTTP1.0 也支持此功能,但实现略有不同。

在此示例中,浏览器从 hostname.com 加载一个 HTML 页面,其中包含两个对 hostname.com 的图像请求和两个对 adserver.com 的请求
在这里插入图片描述
第一个请求完成后,后续请求将并行执行:
在这里插入图片描述

默认浏览器连接设置

以下是每个主机的默认最大连接数的列表,这些连接数可由各种浏览器并行打开。随着新浏览器的发布,限制会随着时间的推移而增加。并行连接越多,网页呈现的速度就越快,但研究表明,它可能有限制——将其设置为 10 不一定会产生更好的结果。
在这里插入图片描述


总结

再见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447842.html

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

相关文章

leetcode每日一题——美团笔试题【3】

第一题: 股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 1)的时候买入,在…

UWB隧道人员定位技术应用,施工作业安全精准保障

隧道施工的安全不仅关系到工程项目的质量和施工效率,也关系到我国的资金安全、施工人员和人民的生命财产安全。如何有效加强隧道施工的安全管理能力,成为隧道施工企业管理者最关心的问题。国家铁道局在《关于加强铁路隧道工程安全工作的若干意见》中指出…

人力资源软件的六个功能,你知道吗?

企业组织越来越多地转向通过人力资源软件来简化他们的人力资源运作。在疫情开始后,人力资源软件的采用尤其迅猛,因为组织希望无缝地管理他们的远程和混合员工。根据SkyQuest的调查人力资源技术市场预计到2028年将达到356.8亿美元。 如果您正在考虑采用人…

面试题思路分享以及延伸问题探讨三

面试题思路分享以及延伸问题探讨 1.前言2. 环形链表初阶2.1 审题2.2 代码实现以及紧急情况的处理方法2.3 延伸问题2.3.1 为什么slow和fast一定会遇上?2.3.2 走n步会是什么样的情况? 3. 环形链表进阶3.1 审题3.2 代码实现3.3 方法二:相交链表法 4. 复制带随机指针的链表4.1审题…

vue3组件二次封装Ui处理

vue 组件二次封装Ui处理 vue 组件二次封装Ui处理 在Vue开发中,我们常常需要使用UI框架提供的组件。但是UI框架的组件可能并不符合我们的需求,这时候就需要进行二次封装。下面是一些关于Vue组件二次封装Ui处理的技巧: 常规时候咱们使用组件…

深元AI盒子在矿山安全生产中实现皮带跑偏、异物、煤流量、大块煤等识别

摘要:随着技术的发展,矿山安全生产已经从传统的人工监测逐步转向现代化智能化。本文旨在探讨矿山安全生产AI盒子在皮带跑偏、异物、煤流量和大块煤之外的功能,以期进一步提高矿山生产的安全性和效率。 正文: 一、引言 矿山安全生…

【获奖案例巡展】信创先锋之星——中信证券基于国产图数据库构建企业图谱的应用实践

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…

vue2、vue3实现暗黑模式

1、序言 elementPlus、naive UI这些UI组件里面封装好了暗黑模式,直接使用相关api即可实现暗黑模式切换功能,而elementUI没有封装好,我们可以看看elementPlus、naive UI如何实现暗黑模式,然后在elementUI中模仿,从而实现…

【C++】模板初识

C模板初识 1.泛型编程2.函数模板2.1.函数模板概念2.2.函数模板格式2.3.函数模板使用的原理2.4.函数模板的实例化2.5.模板参数的匹配原则 3.类模板3.1.类模板格式3.2.类模板的实例化 1.泛型编程 在实际编程中,经常会用到交换函数。比如有整型值的交换,浮…

Nacos 鉴权系统源码讲解

目录 1. 介绍 2. Nacos SPI 鉴权机制 3. 后台管理 / HTTP 接口鉴权 4. 客户端 / GRPC 接口鉴权 1. 介绍 鉴权功能默认没有开启,开启后的效果就是 Nacos 的接口需要用户登录并且具有权限才能调用该接口。例如注册实例、发布配置等。 鉴权也就是 我是谁、我能干…

探讨接口测试颗粒度

偶然间在论坛上看到一个帖子,帖子内容如下: 假设现在有一个新增商品的接口,返回的参数中有新增商品的 id(每次返回的 id 都不一样)、success(判断是否成功,0 失败 1 成功) 1. 接口…

代码随想录之对称二叉树

本内容来自代码随想录 使用后序遍历。 class Solution { public:bool traversal(TreeNode* left,TreeNode* right){//处理空节点情况if (left nullptr && right ! nullptr) return false;else if (left ! nullptr && right nullptr) return false;else if …

Python人工智能之混合高斯模型运动目标检测详解分析

搬运工项目,换个平台纪录,之前的广告太多 运动目标检测是计算机视觉领域中的一个重要内容,其检测效果将会对目标跟踪与识别造成一定的影响,本文将介绍用Python来进行混合高斯模型运动目标检测,感兴趣的朋友快来看看吧 …

4.2寸黑白红TFT电子标签【基站版】

ESL_TFT_4.2_V4 产品参数 产品型号 ESL_TFT_4.2_V4 尺寸(mm) 101.7*84.4*6.5mm 显示技术 TFT反射式 显示区域(mm) 84.8(H) * 63.6(V) 分辨率(像素) 400*300 像素尺寸(mm) 0.212x0.212 显示颜色 黑/白/红 视觉角度 45/45/60/60 工作温度 -20-70℃ 产品重量…

Spring6从入门到精通 第一章 带你玩转Spring

这里写目录标题 一 Spring框架产生的原因二 Spring6配置的关键环节 一 Spring框架产生的原因 传统的JavaWeb存在着耦合度较高的问题,而且实现完整的的MVC三层架构,开发成本过大,因此出现了Spring这个轻量级的开发框架,相当于建筑里…

C++初阶之命名空间的使用

目录 前言 命名空间的介绍 1.1 命名空间的定义 1.2 命名空间的使用 C输入&输出 总结: 前言 今天小编就给大家带来C的相关内容了,相对于C语言而言C的语法会比较复杂一点点,但是我相信大家通过自己的努力,也会很快的上手…

使用AIDEGen进行AOSP开发

什么是AIDEGen AIDEGen,大概是“Android IDE (helper) Generator”的简写,是 AOSP 源代码树中的一个工具,它允许从 Android Studio 等通常仅为非平台应用程序开发配置的 IDE 中处理系统应用程序。 AIDEGen 旨在自动化项目设置过程&#xff…

计算机视觉 | 八斗人工智能 (上)

目录 数字图像像素和分辨率灰度、通道和对比度其他概念 插值算法上采样和下采样的概念1. 最邻近插值2.双线性插值(最常用)3.双三次插值 直方图均衡化1. 灰度图直方图均衡化2. 彩色图直方图均衡化 数字图像 像素和分辨率 像素: 像素是分辨率…

智能营销服务性能提升2倍关键秘诀?就是亚马逊云科技

随着数字化进程加快和B2B商业市场竞争的白热化,通过挖掘数据“黄金”提升投资回报比与市场竞争力的智能营销,正成为B2B营销的热门风口。 但企业在获得更精准、更智能营销服务的同时,也不得不面临来自海量数据的搜寻以及数据实时更新等方面的…

Golang gorm

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 一 对多入门 比如要开发cmdb的系统,无论是硬件还是软件。硬件对应的就是对应的哪个开发在用。或者服务对应的是哪个业务模块在使用,或者应用谁在使用。那么这…