网络——浏览器发送一个请求到收到响应经历了哪些步骤

当浏览器发送一个请求到服务器并收到响应时,通常会经历以下几个步骤。这个过程可以分为几个主要阶段:DNS解析、建立TCP连接、发送HTTP请求、服务器处理请求和返回响应、浏览器接收响应等。下面是更详细的步骤说明:

  1. 输入URL:用户在浏览器地址栏中输入网址或点击链接。

  2. DNS解析

    • 浏览器首先检查本地缓存是否有该域名对应的IP地址。
    • 如果没有找到,则查询操作系统的DNS缓存。
    • 若仍未能找到,浏览器将向配置的DNS服务器发起请求以获取域名对应的IP地址。
    • DNS服务器可能会进一步查询其他DNS服务器直到找到对应信息,并最终返回给浏览器。
  3. 建立TCP连接(对于HTTP/1.1及以下版本):

    • 一旦获得了服务器的IP地址,客户端(浏览器)就会尝试与服务器建立TCP连接。这通常通过三次握手来完成。
      • 客户端发送SYN包至服务器。
      • 服务器回复SYN+ACK确认。
      • 客户端再发送ACK确认,此时连接建立成功。
  4. 发送HTTP请求

    • TCP连接建立后,浏览器会构造一个HTTP请求报文并通过已建立的连接发送给服务器。请求包括请求行、请求头以及可能存在的请求体等内容。
  5. 服务器处理请求

    • 服务器接收到请求后,根据请求中的URL路径以及其他信息来决定如何处理这次请求。(端口:确定服务,路径:确定访问那个Controller的Function,参数:请求数据)
    • 这可能涉及到执行特定的程序逻辑、访问数据库、读取文件等操作。
    • 之后,服务器准备相应的资源作为响应内容。
  6. 返回HTTP响应

    • 服务器生成响应数据,并将其封装成HTTP响应格式(包含状态行、响应头和响应体)。
    • 服务器通过已经建立好的TCP连接将此响应发送回客户端。
  7. 关闭TCP连接(对于非持久性连接的情况):

    • 在HTTP/1.0中,默认情况下每次请求-响应完成后都会关闭连接。
    • HTTP/1.1引入了持久连接机制,允许一次TCP连接上进行多次请求-响应循环,从而提高效率。但若设置了Connection: close,则也会在此阶段结束连接。
  8. 浏览器接收响应并渲染页面

    • 客户端接收到服务器发来的响应后,开始解析HTML文档。
    • 根据需要,浏览器还可能加载额外的资源如CSS样式表、JavaScript脚本、图片等。
    • 最终,浏览器将所有这些资源整合起来展示给用户。

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

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

相关文章

Python基础速通

Python基础速通 Python是一门强大的编程语言,广泛应用于数据分析、自动化、网络安全等多个领域。本文将系统地介绍Python的基础知识,包括环境配置、基础语法、数据结构、函数、面向对象编程以及常见的文件操作和异常处理技巧。 Python 环境安装 在开始…

.Net与C#

.NET 与 C# 的关系 .NET 是一个由微软开发的软件框架,它提供了一套用于开发、运行和部署应用程序的工具和库。C# 是一种面向对象的编程语言,它是专门为.NET平台设计的。以下是.NET与C#之间关系的详细说明: 目标平台:C# 是.NET平…

go语言逆向-基础basic

文章目录 go 编译命令 ldflags -w -s的作用和问题使用 file 命令查看文件类型 go 语言逆向参考go ID版本GOROOT和GOPATHGOROOTGOPATHGOROOT和GOPATH的关系示例 go build和 go modpclntab (Program Counter Line Table 程序计数器行数映射表)Moduledata程…

D2761 适合在个人电脑、便携式音响等系统中作音频限幅用。

概述: D2761是为保护扬声器所设计的音频限幅器,其限幅值可通过外接电阻来调节,适合在个人电脑、便携式音响等系统中作音频限幅用。D2761采用SSOP10、MSOP10、TSSOP14的封装形式封装。 主要特点:  工作电压范围宽:2.7…

【Linux系统】—— 基本指令(四)

【Linux系统】—— 基本指令(三) 1「find」指令2 「grep」指令2.1 初识「grep」指令2.2 「grep」指令 选项 3 打包压缩基本知识4 「zip / unzip」指令5「tar」命令6 文件互传6.1 Linux 与 Windows 互传6.1.1 Linux向Windows传输6.1.2 Windows向Linux传输…

【bug记录10】同一iOS webview页面中相同的两个svg图标出现部分显示或全部不显示的情况

一、问题背景 在vue项目中,同一页面中直接复制粘贴了两个相同的svg代码嵌入到html中, 在chrome浏览器中显示良好; 但是在Safari浏览器 或者 iOS WKwebview中,出现只显示一个svg或者两个都不显示的情况,但是绑定在sv…

WordCloud去掉停用词(fit_words+generate)的2种用法

-------------词云图集合------------- WordCloud去掉停用词(fit_wordsgenerate)的2种用法 通过词频来绘制词云图(jiebaWordCloud) Python教程95:去掉停用词词频统计jieba.tokenize示例用法 将进酒—李白process_t…

洛谷刷题日记12||图的遍历

反向建边 dfs 按题目来每次考虑每个点可以到达点编号最大的点,不如考虑较大的点可以反向到达哪些点 循环从N到1,则每个点i能访问到的结点的A值都是i 每个点访问一次,这个A值就是最优的,因为之后如果再访问到这个结点那么答案肯…

vscode查找函数调用

在 VS Code 中,要查找 C 语言函数的调用列表,有以下几种方法可以使用,具体取决于项目的规模和你的需求: 方法 1: 使用全局查找功能 步骤: 打开全局查找: 按 CtrlShiftF (Windows/Linux) 或 CmdShiftF (Ma…

替代Postman ,17.3K star!

现在,许多人都朝着全栈工程师的方向发展,API 接口的编写和调试已成为许多开发人员必备的技能之一。 工欲善其事,必先利其器。拥有一款优秀的 API 工具对于任何工程师来说都是极为重要的,它能够帮助我们高效地完成各种开发任务。 …

java:拆箱和装箱,缓存池概念简单介绍

1.基本数据类型及其包装类: 举例子: Integer i 10; //装箱int n i; //拆箱 概念: 装箱就是自动将基本数据类型转换为包装器类型; 拆箱就是自动将包装器类型转换为基本数据类型; public class Main {public s…

Node.js的url模块与querystring模块

新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战(第2版)(Web前端技术丛书)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 4.3.1 http模块——创建HTTP服务器、客户端 要使用http模块&#xff0…

【Reinforcement Learning】强化学习下的多级反馈队列(MFQ)算法

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…

SpringBoot(三十九)SpringBoot集成RabbitMQ实现流量削峰添谷

前边我们有具体的学习过RabbitMQ的安装和基本使用的情况。 但是呢&#xff0c;没有演示具体应用到项目中的实例。 这里使用RabbitMQ来实现流量的削峰添谷。 一&#xff1a;添加pom依赖 <!--rabbitmq-需要的 AMQP 依赖--> <dependency><groupId>org.springfr…

异步编程在ArkTS中具体怎么实现?

大家好&#xff0c;我是 V 哥&#xff0c;很好奇&#xff0c;在ArkTS中实现异步编程是怎样的&#xff0c;今天的内容来聊聊这个问题&#xff0c;总结了一些学习笔记&#xff0c;分享给大家&#xff0c;在 ArkTS中实现异步编程主要可以通过以下几种方式&#xff1a; 1. 使用asy…

Pytorch使用手册-Build the Neural Network(专题五)

在 PyTorch 中如何构建一个用于 FashionMNIST 数据集分类的神经网络模型,并解析了 PyTorch 的核心模块 torch.nn 的使用方法。以下是具体内容的讲解: 构建神经网络 在 PyTorch 中,神经网络的核心在于 torch.nn 模块,它提供了构建神经网络所需的所有工具。关键点如下: nn.…

【linux】服务器加装硬盘后如何将其设置为独立硬盘使用

【linux】服务器加装硬盘后如何将其设置为独立硬盘使用 问题描述&#xff1a;本服务器原本使用了两个硬盘作为存储硬盘&#xff0c;同时对这两个硬盘设置了raid1阵列。现在内存不足要进行加载硬盘&#xff0c;新加载的硬盘不设置为raid1&#xff0c;而是将新加装的两个硬盘作为…

亚信安全与飞书达成深度合作

近日&#xff0c;亚信安全联合飞书举办的“走近先进”系列活动正式走进亚信。活动以“安全护航信息化 共筑数字未来路”为主题&#xff0c;吸引了众多数字化转型前沿企业的近百位领导参会。作为“走近先进”系列的第二场活动&#xff0c;本场活动更加深入挖掘了数字化转型的基础…

TMS FNC UI Pack 5.4.0 for Delphi 12

TMS FNC UI Pack是适用于 Delphi 和 C Builder 的多功能 UI 控件的综合集合&#xff0c;提供跨 VCL、FMX、LCL 和 TMS WEB Core 等平台的强大功能。这个统一的组件集包括基本工具&#xff0c;如网格、规划器、树视图、功能区和丰富的编辑器&#xff0c;确保兼容性和简化的开发。…

Transformer详解及衍生模型GPT|T5|LLaMa

简介 Transformer 是一种革命性的神经网络架构&#xff0c;首次出现在2017年的论文《Attention Is All You Need》中&#xff0c;由Google的研究团队提出。与传统的RNN和LSTM模型不同&#xff0c;Transformer完全依赖于自注意力&#xff08;Self-Attention&#xff09;机制来捕…