当前位置: 首页 > news >正文

当你在浏览器输入一个地址

你在浏览器中输出了一个地址,回车后,一直到显示页面,中间经历了哪些过程 ?

1. 用户输入 URL 并按下回车

  • 用户在浏览器的地址栏中输入一个 URL(例如 http://example.com)并按下回车键。

2. DNS 解析

  • 浏览器检查本地缓存中是否有该域名对应的 IP 地址。
  • 如果本地缓存没有,浏览器会向本地 DNS 服务器(通常是由 ISP 提供)发送 DNS 查询请求。
  • 本地 DNS 服务器查找该域名的 IP 地址,如果找不到,会递归查询上级 DNS 服务器,直到找到对应的 IP 地址。
  • 找到 IP 地址后,DNS 服务器将其返回给浏览器。

3. 建立 TCP 连接

  • 浏览器使用之前获得的 IP 地址,通过 TCP/IP 协议与目标服务器建立连接。
  • 浏览器向服务器的默认端口(通常是 80 或 443)发送 TCP SYN 请求,开始三次握手过程:
    1. 浏览器发送 SYN 包。
    2. 服务器收到 SYN 包后,回复 SYN-ACK 包。
    3. 浏览器收到 SYN-ACK 包后,回复 ACK 包,三次握手完成,TCP 连接建立。

4. 发送 HTTP 请求

  • TCP 连接建立后,浏览器向服务器发送 HTTP 请求:
    • 请求行(Request Line):包含请求方法(GET、POST 等)、请求 URL 和 HTTP 版本。
    • 请求头(Headers):包含浏览器的各种信息,如 User-Agent、Accept、Host 等。
    • 请求体(Body):在 GET 请求中通常为空,在 POST 请求中包含提交的数据。

5. 服务器处理请求

  • 服务器收到请求后,根据请求的 URL 和其他信息,进行处理。
  • 服务器可能需要:
    • 读取静态资源(如 HTML、CSS、JavaScript 文件等)。
    • 调用后台程序(如 PHP、Python、Java 等)生成动态内容。
    • 查询数据库以获取数据。
  • 处理完成后,服务器将生成 HTTP 响应。

6. 服务器发送 HTTP 响应

  • HTTP 响应包含以下部分:
    • 状态行(Status Line):包含 HTTP 版本、状态码(如 200 OK、404 Not Found 等)。
    • 响应头(Headers):包含服务器信息、内容类型、内容长度等。
    • 响应体(Body):包含请求的实际内容(如 HTML 页面、图像等)。

7. 浏览器接收响应并渲染页面

  • 浏览器接收到服务器的响应后,开始解析 HTML 内容。
  • 浏览器根据 HTML 内容,逐步下载并解析嵌入的资源(如 CSS、JavaScript、图像等)。
  • 浏览器构建 DOM 树(Document Object Model)和 CSSOM 树(CSS Object Model),结合成渲染树(Render Tree)。
  • 浏览器根据渲染树进行布局计算,将元素放置在正确的位置。
  • 浏览器绘制页面,将内容显示在屏幕上。

8. 执行 JavaScript 和动态更新页面

  • 浏览器继续解析并执行嵌入的或外部引用的 JavaScript 代码。
  • JavaScript 代码可能进行 DOM 操作或通过 AJAX 请求获取更多数据,动态更新页面内容。

总结

整个过程涉及 DNS 解析、TCP 连接、HTTP 请求和响应、页面解析和渲染、JavaScript 执行等多个步骤。每个步骤都可能涉及多个底层协议和技术细节,共同确保用户最终能够看到完整的网页。

在这里插入图片描述

相关文章:

当你在浏览器输入一个地址

你在浏览器中输出了一个地址,回车后,一直到显示页面,中间经历了哪些过程 ? 1. 用户输入 URL 并按下回车 用户在浏览器的地址栏中输入一个 URL(例如 http://example.com)并按下回车键。 2. DNS 解析 浏览…...

JSP基础知识概述

目录 JSP一、什么是JSP1.1 概念1.2 创建JSP1.3 JSP编写Java代码1.4 JSP实现原理 二、JSP与HTML集成2.1 普通脚本2.2 声明脚本2.3 输出脚本2.4 JSP指令2.5 动作标签 三、内置对象3.1 四大域对象 JSP 一、什么是JSP 1.1 概念 简化的Servlet设计,在HTMl标签中嵌套Jav…...

国产编程—— 仓颉

应用 仓颉编程语言是一款由华为主导设计和实现的面向全场景智能的编程语言,主要应用于以下领域: 中文字符编码和文本数据处理:仓颉编程语言充分利用汉字的结构特点来设计编码,为开发者提供了一种高效的方式来编码、存储和处理中…...

0X JavaSE-并发编程(锁)

1...

云计算【第一阶段(18)】磁盘管理与文件系统 分区格式挂载(一)

目录 一、磁盘基础 二、磁盘结构 2.1、机械硬盘 2.2、固态硬盘 2.3、扩展移动硬盘 2.4、机械磁盘的一些计算(了解) 2.5、磁盘接口类型 二、Linux 中使用的文件系统类型 2.1、磁盘分区的表示 2.1.1、主引导记录(MBR) 2.1.2、Linux中将硬盘、分…...

Flask-cache

Flask-cache 目录 Flask-cache基本使用配置可用参数SimpleCacheNullCacheFileSystemCacheRedisCacheRedisSentinelCacheRedisClusterCacheMemcachedCacheSASLMemcachedCacheUWSGICache Flask-Cache是一个强大的缓存库,为基于Flask的应用提供了简单易用的API和多种缓…...

【面试题】面试小技巧:如果有人问你 xxx 技术是什么?_面试问你对什么技术特别了解

前端工程越来越大,前面几种方案不能很好的支持单元测试。 在这样的背景下,React 诞生了。React 带来了新的思维模式,UI fn(props),React 中一个组件就是一个函数或者一个类,一个函数或者一个类就是一个基础单位&…...

简单分享Python语言(发现其实并不难)

一. Python基础 Python是一种解释型语言,这意味着开发者可以在代码被编写后立即执行它们,而无需编译。Python的基本语法简单明了,以下是一些基础知识点: 变量和数据类型:Python支持多种数据类型,包括整型&…...

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…...

【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测

文章目录 一、文章概览&#xff08;一&#xff09;问题来源&#xff08;二&#xff09;文章的主要工作&#xff08;三&#xff09;相关研究 二、动机&#xff1a;Logits 中缺失的信息&#xff08;一&#xff09;logits&#xff08;三&#xff09;基于零空间的 OOD 评分&#xf…...

【面试题】前端 移动端自适应?_前端移动端适配面试题

设备像素比 设备像素比 (DevicePixelRatio) 指的是设备物理像素和逻辑像素的比例 。比如 iPhone6 的 DPR 是2。 设备像素比 物理像素 / 逻辑像素。可通过 window.devicePixelRatio 获取&#xff0c;CSS 媒体查询代码如下 media (-webkit-min-device-pixel-ratio: 3), (min-…...

在Maven工程中手动配置并测试SpringBoot(巨详)

本篇博客承继自博客&#xff1a; 在IDEA 2024.1.3 (Community Edition)中创建Maven项目_idea2024.1.3如何创建maven项目-CSDN博客 配置POM文件 打开工程中的pom.xml文件&#xff0c;先向其中写入 <parent><groupId>org.springframework.boot</groupId><…...

c# 去掉字符串首尾的 特殊符号

如果首尾的 - 数量不确定,可以使用以下方法来去掉字符串两端的 - 字符: 使用正则表达式: using System.Text.RegularExpressions;string input "---Hello, World!---"; string trimmed Regex.Replace(input, "^-*|-*$", ""); // trimmed 为 …...

在容器中共享本地文件

在容器中共享本地文件 目录 卷与绑定挂载的对比在主机和容器之间共享文件Docker 访问主机文件的文件权限试一试 运行一个容器使用绑定挂载在 Docker Dashboard 中访问文件停止容器 额外资源下一步 每个容器都有一切需要运行的资源&#xff0c;而不依赖于主机机器上预先安装的…...

Java Matcher类方法深度剖析:查找和匹配、索引方法

1. 引言 在Java中,正则表达式是处理字符串的强大工具,而java.util.regex包中的Matcher类则是实现这一功能的核心。对于Java工程师而言,熟练掌握Matcher类的使用方法,无疑能够极大地提升字符串处理的效率和准确性。本文将对Matcher类的方法进行深度讲解,并按照查找和匹配方…...

Redis-数据类型-zset

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db4数据库4、将一个或多个member元素及其score值加入到有序集key当中5、升序返回有序集key6、升序返回有序集key&#xff0c;让分数一起和值返回的结果集7、降序返回有序集key&#xff0c;让分数一起和值返回到结…...

手撕RPC——前言

手撕RPC——前言 一、RPC是什么&#xff1f;二、为什么会出现RPC三、RPC的原理3.1 RPC是如何做到透明化远程服务调用&#xff1f;3.2 如何实现传输消息的编解码&#xff1f; 一、RPC是什么&#xff1f; RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff…...

Vite: 关于预构建的毫秒级响应

概述 在我们的项目代码中&#xff0c;我们所说的模块代码其实分为两部分 一部分是源代码&#xff0c;也就是业务代码另一部分是第三方依赖的代码&#xff0c;即 node_modules 中的代码 Vite 是一个提倡 no-bundle 的构建工具&#xff0c;相比于传统的 Webpack能做到开发时的模…...

Docker 中 MySQL 迁移策略(单节点)

目录 一、 简介二、操作流程2.1 进入mysql容器2.2 导出 MySQL 数据2.3. 将导出的文件复制到宿主机2.4 创建 Docker Compose 配置2.5 启动新的 Docker 容器2.6 导入数据到新的容器2.7 验证数据2.8 删除旧的容器&#xff08;删除操作需慎重&#xff09; 三、推荐配置四、写在后面…...

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests &#x1f42f; 摘要 &#x1f4c4; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于人工智能领域的博主。在AI开发中&#xff0c;我们经常会遇到各种各样的错误&#xff0c;其中API Rate Limits…...

如何用Matplotlib打造faceai人脸识别可视化分析工具:10个实用技巧

如何用Matplotlib打造faceai人脸识别可视化分析工具&#xff1a;10个实用技巧 【免费下载链接】faceai 一款入门级的人脸、视频、文字检测以及识别的项目. 项目地址: https://gitcode.com/gh_mirrors/fa/faceai faceai是一款功能强大的入门级人脸识别与视觉分析开源工具…...

如何高效管理命令历史:yargs readline功能的终极指南

如何高效管理命令历史&#xff1a;yargs readline功能的终极指南 【免费下载链接】yargs yargs the modern, pirate-themed successor to optimist. 项目地址: https://gitcode.com/gh_mirrors/ya/yargs 在现代命令行工具开发中&#xff0c;提供流畅的用户交互体验至关…...

基于SSM框架的传统服饰文化平台体验(10034)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

第9课:Linux开发工具(四):make与makefile

第9课&#xff1a;Linux开发工具&#xff08;四&#xff09;&#xff1a;make与makefile 一、为什么我们需要 Makefile&#xff1f; 1.1 IDE 背后的秘密 在使用 Visual Studio 等 IDE 时&#xff0c;我们只需按下 F5 或点击"编译"按钮&#xff0c;程序就会自动完成编…...

Vue2项目里,如何用DHTMLX Gantt实现任务搜索、今日线定位和视图切换?这些实用功能我帮你搞定了

Vue2项目中DHTMLX Gantt三大进阶功能实战&#xff1a;搜索、今日线与视图切换 在项目管理工具的开发中&#xff0c;甘特图作为核心可视化组件&#xff0c;其交互体验直接决定了用户的使用效率。本文将聚焦三个高频需求场景&#xff0c;手把手教你如何在已有DHTMLX Gantt集成的V…...

Systemback实战:从系统备份到自定义镜像部署全流程

1. Systemback基础入门&#xff1a;你的系统时光机 第一次听说Systemback时&#xff0c;我正面临着一个典型运维困境&#xff1a;实验室20台Ubuntu工作站需要统一部署开发环境。传统的手动安装方式不仅耗时&#xff0c;还容易产生配置差异。直到发现这个开源神器&#xff0c;才…...

互斥锁如何避免数据竞争

互斥锁&#xff08;Mutex&#xff0c; Mutual Exclusion Lock&#xff09;是一种用于保护共享资源&#xff0c;确保在任意时刻只有一个线程可以访问该资源的同步原语。其核心目的是解决多线程环境下的**数据竞争&#xff08;Data Race&#xff09;**问题&#xff0c;防止因并发…...

CPU Cache初始化:从硬件复位到软件使能的底层原理与工程实践

1. 项目概述&#xff1a;从开机到高速缓存就绪当按下电脑的电源键&#xff0c;屏幕上开始跑起一行行代码时&#xff0c;我们看到的通常是BIOS自检、操作系统加载的宏大叙事。但在这背后&#xff0c;有一个对性能影响巨大却又极其低调的“幕后英雄”正在悄然启动&#xff0c;它就…...

自指递归系统的唯一最优几何形态:黄金螺旋本征解必然性定理的严格证明(世毫九实验室原创研究)

自指递归系统的唯一最优几何形态&#xff1a;黄金螺旋本征解必然性定理的严格证明&#xff08;世毫九实验室原创研究&#xff09;作者&#xff1a;方见华 单位&#xff1a;世毫九实验室 摘要 针对自然界跨尺度普遍涌现的黄金螺旋结构是否仅为经验巧合或审美投射的长期争议&…...

WebToEpub:5分钟快速制作专业EPUB电子书的完整指南

WebToEpub&#xff1a;5分钟快速制作专业EPUB电子书的完整指南 【免费下载链接】WebToEpub A simple Chrome (and Firefox) Extension that converts Web Novels (and other web pages) into an EPUB. 项目地址: https://gitcode.com/gh_mirrors/we/WebToEpub 还在为在线…...