一张图帮你看懂,在浏览器输入网址回车后,都发生了什么?

news2024/11/20 21:25:53

首先我们来看图:

在这里插入图片描述

当我们在浏览器中输入一个网址,例如:baidu.com,按下回车键后,会发生什么呢?

主要会发生以下这些过程:域名解析(获取IP地址)、建立HTTP连接、发送HTTP请求、数据传输、渲染网页、断开HTTP连接。

下面我们来一个个讲解。

1. 域名解析:寻找服务器的IP地址

在我们输入域名后,浏览器首要任务是将该域名解析成计算机可理解的IP地址。域名是方便我们人类记的,计算机不能直接理解域名,因此需要将域名转换成IP地址。域名和IP地址的对应关系一般会在各个缓存中存储:

  1. 浏览器缓存:首先,计算机检查浏览器缓存中是否有该域名对应的IP地址,这是最快的方法。
  2. 操作系统缓存:如果浏览器缓存中没有,计算机会继续搜索操作系统缓存。
  3. 电信运营商缓存:若操作系统缓存也没有,计算机就会去找电信运营商(如电信、联通、移动)的缓存。
  4. 公共DNS缓存:如果以上缓存中都找不到IP地址,计算机将最后尝试查找公共DNS缓存。

如果在以上缓存中都找不到IP地址,计算机将向DNS服务器发出请求,DNS服务器将从根服务器、顶级域名(TLD)服务器和权威DNS服务器层层查找,最后返回IP地址。

这是它们的层次结构图:
在这里插入图片描述
(图片来源:https://xie.infoq.cn/article/9584c7089e5f966a90c1c5d9a)

简单地说就是,根DNS服务器提供顶级域名(TLD)服务器的IP地址,顶级域名(TLD)服务器提供权威DNS服务器的IP地址,而权威DNS服务器负责解析baidu.com域名的DNS查询,然后返回该域名的IP地址。
在这里插入图片描述
(图片来源:https://xie.infoq.cn/article/9584c7089e5f966a90c1c5d9a)

2. 建立HTTP连接:客户端与服务器的握手

当计算机获取到IP地址之后就可以向服务器发起HTTP请求了。我们的电脑(客户端)和服务器之间通过三次握手建立HTTP连接,连接建立好之后,客户端和服务器之间就可以传输数据了。

三次握手简单地说就是客户端向服务器喊话:

1、客户端:兄弟你在吗?收到请回答。
2、服务器:兄弟我在呢,你能听到我说话吗?
3、客户端:我能听到,我们开始传数据吧。

在这里插入图片描述

3.发送HTTP请求:数据传输

HTTP连接建立之后,浏览器会向服务器发送HTTP请求,请求服务器返回网页内容。

发送HTTP请求的过程通常是这样的:

  1. 浏览器向服务器发送一个 HTTP 请求报文,其中包含了请求的资源路径、请求方法等信息。
  2. 服务器接收到请求报文后,会返回一个 HTTP 响应报文,其中包含了资源内容、响应状态码等信息。
  3. 浏览器接收到响应报文后,会对资源内容进行解析,并将其显示在浏览器中。

HTTP请求是整个过程中最核心的步骤,它决定了我们最终看到的网页内容。

HTTP请求完成后,浏览器会渲染网页,将 HTML 代码转换为我们可以看到的内容。

渲染网页的过程通常是这样的:

  1. 浏览器会解析 HTML 代码,并将其转换为 DOM 树。
  2. 浏览器会根据 DOM 树,将网页中的元素显示在浏览器中。
  3. 浏览器会根据 CSS 代码,对网页中的元素进行美化。
  4. 浏览器会根据 JavaScript 代码,对网页中的元素进行动态交互。

渲染网页是整个过程中很耗时的步骤,如果网页内容较多,渲染时间可能会比较长。渲染完成之后,一个完整的网页就出现在我们面前了。

4. 断开连接:结束数据传输

当客户端和服务器之间数据传输完成,要断开连接时,需要通过四次握来断开,四次握手就是四次交流,客户端和服务器通过这四次交流确定没什么新数据要传了,而且之前的数据都已经传完了,最后就可以断开连接了。

四次握手的过程大概是这样的:

1、客户端:兄弟我没东西要传了,我要断开连接了
2、服务器:好的,我知道了,我还有点东西没传完,我传完了告诉你
3、服务器:兄弟,我东西都传好了,我们可以断开连接了
4、客户端:好的,我们断开吧

在这里插入图片描述

最后

我们在浏览器输入网址回车后,大概就是发生这么几件事:域名解析(获取IP地址)、建立HTTP连接、发送HTTP请求、数据传输、渲染网页、断开HTTP连接(不一定会马上断开)。我们每次浏览网页的时候都会经历这几个过程,理解这些基本步骤有助于我们更好地理解互联网的工作原理。

如果你需要上面的图,请关注公众号“编程我们也会”,回复”浏览器网址“获取。

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

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

相关文章

通用音乐播放器蜂鸣器AX301开发板verilog,视频/代码

名称:通用音乐播放器代码,蜂鸣器播放音乐 软件:Quartus 语言:Verilog 代码说明:本代码为音乐播放器通用代码,只需修改管脚即可适配其他开发板 代码功能: 设计一个音乐播放器,使用…

C#面对对象(英雄联盟人物管理系统)增加,查询,删除

目录 英雄信息类 因为要在两个窗体里面调用字典,所以要写一个字典的静态变量 添加功能 查询功能 删除功能 英雄信息类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Windo…

Required MultipartFile parameter ‘file‘ is not present

出现这个原因我们首先想到的是加一个RequestParam("file")&#xff0c;但是还有可能的原因是因为我们的名字有错误 <span class"input-group-addon must">模板上传 </span> <input id"uploadFileUpdate" name"importFileU…

Shell 脚本案例

1.编写hello world脚本 #!/bin/bash ############################################################## # File Name: hello_world.sh # Version: V1.0 # Author: oldchild # Email: 2363543991qq.com # Organization: https://blog.csdn.net/m0_63636799?spm1000.2115.3001.…

【自用重要】概率论中θ和θ尖的区别【计算时的一般方法】

θ就相当于x&#xff0c;是一个值。 θ尖就相当于X&#xff0c;是一个量。 在做分布函数的时候&#xff0c;最好把θ尖换成Z的形式&#xff0c;因为他们都是量&#xff0c;这样比较好看。 在做不等式的时候&#xff0c;一般把量放在中间进行计算&#xff0c;因为随机变量有分…

Kubernetes技术与架构-服务

从软件系统架构设计分层的角度看&#xff0c;Kubernetes的Service是基于Pod的上层&#xff0c;业务应用部署在Pod中&#xff0c;使用Service绑定Pod部署的应用&#xff0c;Service可以对外或者对上层提供服务&#xff0c;当Pod集群在系统调度的过程中发生弹性伸缩的时候&#x…

Linux实用指令-指定运行级别、帮助指令

一、 指定运行级别 1.运行级别说明&#xff1a; 0:关机 1:单用户[找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是3和5&#xff0c;要修改默认的运行级别。可改文件/etc/inittab 的id:5:initd…

如何识别人工智能生成的图像

随着人工智能成像变得更加先进&#xff0c;从拍摄的场景中辨别真实情况变得越来越困难。这在很多方面都会成为一个问题——从假新闻到真实人物的深度伪造。 我们唯一的机会就是更加敏锐地识别假货。 我最近进行了在线人工智能识别&#xff0c;能够从人造版本中正确选择所有真…

十七、文件(2)

本章概要 文件系统路径监听文件查找文件读写 文件系统 为了完整起见&#xff0c;我们需要一种方法查找文件系统相关的其他信息。在这里&#xff0c;我们使用静态的 FileSystems 工具类获取"默认"的文件系统&#xff0c;但你同样也可以在 Path 对象上调用 getFileS…

【Java 进阶篇】HTML DOM 事件详解

当用户在网页上点击按钮、输入文本、鼠标移动到某个区域或执行其他互动操作时&#xff0c;这些动作都可以触发事件。HTML DOM&#xff08;文档对象模型&#xff09;允许我们使用JavaScript来捕获、处理和响应这些事件&#xff0c;以实现网页的交互和动态性。本篇博客将围绕HTML…

选择最适合的产品研发和运营管理工具

Zoho Projects项目管理工具&#xff0c;以其卓越的敏捷开发协作能力&#xff0c;有效提升了产品规划和研发效率。 以下是对其优势的深入探讨&#xff1a; 一、面临的问题分析 需求变动频繁&#xff1a;在快速变化的市场环境中&#xff0c;如何灵活应对需求变动是一大挑战。跨…

数据库中了mkp勒索病毒怎么办?Mkp勒索病毒解密,数据恢复

相信在本月有很多的企业都遭到了mkp勒索病毒的攻击&#xff0c;该勒索病毒非常狡猾&#xff0c;利用中秋国庆假期期间&#xff0c;对很多的企业服务器进行了攻击&#xff0c;导致服务器内的所有文件都被加密&#xff0c;严重影响了企业的正常工作&#xff0c;经过最近一段时间对…

微信小程序怎么注册_微信小程序怎么可以免费认证

随着微信小程序的日益普及&#xff0c;越来越多的企业和个人开始关注如何注册微信小程序。本文将详细介绍微信小程序注册的步骤以及注意事项&#xff0c;帮助大家更好地了解如何成功注册微信小程序。 一、了解微信小程序注册的意义 微信小程序是一种轻量级的应用程序&#xff…

BAT029:批量为指定路径下的文件添加8位修改日期后缀名

引言&#xff1a;编写批处理程序&#xff0c;实现批量为指定路径下的文件添加8位修改日期后缀名。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击…

eBay类目限制要多久?eBay促销活动有哪些?-站斧浏览器

eBay类目限制要多久&#xff1f; 1、eBay对不同类目的商品有不同的限制和要求。一些类目可能对新卖家有一定的限制&#xff0c;限制他们在该类目下销售商品的数量或需要满足某些条件才能进行销售。 2、对于新卖家的限制通常是在一定时间内&#xff0c;比如30天或90天&#xf…

【数据结构】线性表(四)双向链表的各种操作(插入、删除、查找、修改、遍历打印)

目录 线性表的定义及其基本操作&#xff08;顺序表插入、删除、查找、修改&#xff09; 四、线性表的链接存储结构 1. 单链表 2. 循环链表 3. 双向链表 a. 双向链表节点结构 b. 创建一个新的节点 c. 在链表末尾插入节点 d. 在指定位置插入节点 e. 删除指定位置的节点…

LeetCode算法刷题(python) Day42|09动态规划|62.不同路径、63. 不同路径 II

目录 LeetCode 62. 不同路径LeetCode 63. 不同路径II LeetCode 62. 不同路径 力扣题目链接 class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [[1] * n for _ in range(m)]for j in range(n):for i in range(m):if i 0 and j > 0:dp[i][j] dp[i][j-1…

Python实现番茄小说内容下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.8 Pycharm 模块使用: requests --> pip install requests re parsel 代码展示&#xff1a; 导入模块 # 导入数据请求模块 import…

[自定义 Vue 组件] 小尾巴 Logo 组件 TailLogo

文字归档于&#xff1a;https://www.yuque.com/u27599042/coding_star/apt6y731ybmxgu5g 组件效果 组件依赖 自定义字符串工具函数 stringIsNull https://www.yuque.com/u27599042/coding_star/slncupw7un3ce7cb import {stringIsNull} from "/utils/string_utils.js&q…

python进制和编码

一、进制 计算机中底层所有的数据都是以 010101的形式存在&#xff08;图片、文本、视频等&#xff09;。 二、进制转换 v1 bin(25) # 十进制转换为二进制 print(v1) # "0b11001"v2 oct(23) # 十进制转换为八进制 print(v2) # "0o27"v3 hex(28) # 十进…