浏览器是如何找到网站的

万维网是如何运作的:幕后揭秘

让我们来了解一下,当我们输入一个网站地址并按下回车键时,会发生什么。我们看到屏幕上显示了网站的组件,但这一切是如何实现的呢?

1. 寻找网站

要访问一个网站,我们通常会在浏览器中输入其名称。然而,我们的计算机并不像我们一样理解网站的名称。

相反,它使用 IP 地址——一串数字,作为互联网中每个设备的唯一标识符。因此,当我们搜索一个网站时,我们的计算机需要找到其 IP 地址。

2. 您的 ISP:互联网网关

当您在浏览器中输入“google.com”时,您的设备不会直接连接到该网站。相反,它会向您的互联网服务提供商(ISP)发送一个请求,询问该网站的 IP 地址。

ISP 是一家为您提供互联网接入的公司,不同国家的 ISP 可能会有所不同。

3. DNS:互联网的电话簿

ISP 也不知道“google.com”在哪里。为了找到它,它会联系域名系统(DNS),DNS 就像是互联网的一个巨大电话簿。

DNS 存储了所有网站的 IP 地址及其域名。所以当 ISP 收到 google.com 的请求时,它会联系 DNS,查询与该域名关联的 IP 地址。

然后,DNS 响应一个 IP 地址,ISP 将其发送回您的浏览器。

4. 连接到网站

一旦我们有了 IP 地址,您的浏览器会准备一个 HTTP 请求。这个请求通过一系列的电缆和路由器到达其目的地。

接收请求的服务器就像一个仓库,存储了构成网站的所有文件。它会搜索构建‘google.com’的 HTML、CSS 和 JavaScript 文件,并将它们发送回您的浏览器。

5. 渲染魔法

现在,您的浏览器已经拿到了这些文件,它开始解释它们。它读取 HTML,理解结构,应用 CSS 样式,执行 JavaScript……网页就出现在您的屏幕上了。

在此之后,您的浏览器和谷歌服务器之间可能会有许多其他的请求来回传递其他 HTML、CSS 和 JS 文件。然而,您不需要为这些请求再次联系 ISP,因为它们会直接发送到谷歌的服务器。此外,您的浏览器可能已经缓存了 google.com 的 IP 地址,因此下次不需要再向 ISP 发出不必要的请求。

实验:亲身体验

想要证据吗?试试这个:

  1. 打开浏览器的开发者工具(按 F12 或右键单击并选择“检查”)。
  2. 转到“网络”标签。
  3. 输入“google.com”并按下回车。
  4. 找到第一个请求并查看“远程地址”——那是谷歌的 IP 地址!
  5. 将 IP 地址复制粘贴到一个新标签页中并按下回车。

您会在没有 ISP 和 DNS 参与的情况下访问到谷歌。

总结:大局观

所以,当您访问一个网站时:

  1. 域名翻译:您的 ISP 使用 DNS 查找网站的 IP 地址。
  2. HTTP 请求:您的浏览器向服务器请求网站。
  3. 服务器响应:服务器发送 HTML、CSS 和 JavaScript 文件。
  4. 渲染:您的浏览器组装并显示网站。

最后给大家分享IT职场、IT副业的学习资料,扫描下面二维码就可以拿到呢。

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

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

相关文章

docker系列10:Dockerfile挂载容器卷

传送门 docker系列1:docker安装 docker系列2:阿里云镜像加速器 docker系列3:docker镜像基本命令 docker系列4:docker容器基本命令 docker系列5:docker安装nginx docker系列6:docker安装redis docker系…

C语言基础——数组

{\▁/} ( / 。\ ) / ⊃💔\⊃ 为什么我那么努力还是得不到那么多赞 ʕ • ᴥ • ʔ づ♡ど 🎉 欢迎点赞支持🎉 个人主页:励志不掉头发的内向程序员; 专栏主页:C语言基础; 文章目录 前言…

Java入门-java的集合框架

集合概念 集合,有时也称作容器(Container), 是对象的持有者,它们可以有助于高效访问的方式存储的组织对象。以生活中的案例为例: 集合就像装衣服的柜子,衣服就是集合中的元素。 集合框架图 Collection中每次操作的都是一个对象&a…

大事件项目实战

初始化 创建项目 新建api_server文件夹为项目根目录,并在项目中运行如下的命令,初始化管理配置文件: npm init -y 运行如下的命令,安装特定版本的express: npm i express4.17.1 在项目根目录中新建app.js作为整个项目的入口…

【MySQL】MySQL主要知识点目录整理

一、MySQL基本概念 作者相关文章链接: 1、【MySQL】数据库概述-CSDN博客 2、【MySQL】数据类型-CSDN博客 数据、表、数据库 数据:描述事物的符号记录,如数字、文字、图形等。表:将不同的记录组织在一起,用于存储具…

产品经理-交互说明撰写(八)

1. 交互说明 交互说明可以看做是交互设计师或者产品经理输出的最核心的”产品“交互说明面向的”用户“是下游的同事 ⇒ UI设计师、开发工程师、测试工程师 2. 基本交互形式 2.1 页面交互 2.2 元素控件交互 3. 交互说明主要包括以下3个维度 3.1 页面流程(页面之…

医学图像分割--U-net变种

参考:医学图像分割综述:U-Net系列_医学图像 实例分割-CSDN博客 2D Unet 收缩路径:每个块包含两个连续的3 3卷积,后面是一个ReLU激活函数和最大池化层(下采样)扩展路径:该路径包括一个2 2转置卷积层(上采…

推荐丨免费一年期SSL证书在哪里可以申请到?

当然,申请HTTPS证书的流程可以简化为三个主要步骤,以便理解: 第一步:选择证书类型和认证机构 1. 确定证书类型:首先,你需要确定适合你网站的SSL证书类型。常见的有三种: - 域名验证型&#xff0…

什么是HTTP代理?适用于哪些场景?

HTTP代理是一种网络代理服务器,它主要用于处理HTTP协议的请求和响应。HTTP代理充当客户端(如浏览器)和目标服务器之间的中介,允许客户端通过代理服务器来发送HTTP请求,并接收来自服务器的响应。HTTP代理可以分为正向代…

时空AI软件:地理信息与遥感领域的智慧引擎

在地理信息与遥感技术的广阔疆域,时空AI软件如同一颗璀璨新星,将时空信息与智能深度融合,驱动着地理信息分析、决策支持、环境监测、城市规划等领域的深刻变革。本文将深入剖析其技术核心、应用实例、未来趋势,探索时空AI软件如何…

【Python】no module named distutils问题怎么解决

【背景】 安装numpy没问题,启动项目却报numpy少distutils。 升级PIP,重装numpy也不行。 【分析】 看distutils这个名字,似乎是什么通用模块,可能不一定是numpy的问题。 【解决方案】 通过安装如下模块解决 pip install setu…

langchain学习(十三)

一、将其他chain的输入作为新chain的输出,三种方式 1、采用连接符"|",推荐 2、采用lamba表达式输入 3、采用pipe方法 from langchain_community.chat_models import ChatOllama from langchain_core.output_parsers import StrOutputParse…

代码随想录算法训练营第十八天(py)| 二叉树 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

654.最大二叉树 力扣链接 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组…

React 为什么使用map来渲染列表 而不是其他循环方法

1. 声明式与函数式编程 React强调声明式编程,这意味着你只需要关心代码“做什么”,而不是“怎么做”。.map()函数是一种高阶函数,它属于函数式编程范畴,能够返回一个新数组,这非常适合用于生成组件列表。 使用.map()…

自适应容积卡尔曼滤波|(自适应CKF)的MATLAB源代码

介绍 容积卡尔曼滤波在理论上拥有比UKF更高的精度和稳定性,本自适应算法通过对观测残差的计算,在观测协方差R不准确或无法获得时,对R进行调节,以起到降低估计误差的作用。 模型 使用的是三维的非线性模型,经过适当修…

2024年蓝桥杯B组C++——复盘

1、握手问题 知识点:模拟 这道题很简单。但是不知道考试的时候有没有写错。一开始的43个人握手,仅需要两两握手,也就是从42个握手开始,而非43.很可惜。这道题没有拿稳这5分。也很有可能是这5分导致没有进决赛。 总结&#xff1a…

数据集004:跌倒检测数据集 (含数据集下载链接)

数据集简介: 该数据集为跌倒检测数据集,属于imageclassify任务,分为fall和nofall两大类,累计共1000张图片,均为人工标注 xml格式,可用于yolo训练。 数据集链接:跌倒检测数据集(1000…

【软件测试】bug篇|软件测试的生命周期|描述bug的要素|bug的级别|bug的生命周期|高频面试题:与开发产⽣争执怎么处理

目录 一、软件测试的⽣命周期 二、BUG 2.1 bug的概念 2.2 描述bug的要素 2.3 bug级别 2.4 bug的⽣命周期 💡2.5 与开发产⽣争执怎么办(⾼频考题) 💡 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&…

快速生成sql

增加快速开发速度

Python筑基之旅专栏(导航)

目录 一、Python筑基之旅专栏博文清单及链接 二、推荐阅读 一、Python筑基之旅专栏博文清单及链接 01、溯源及发展 02、变量和数据类型 03、搭建Python开发环境及库 04、两个重要函数/列表/元组 05、字符串(一) 06、字符串(二) 07、字符串(三) 08、字典 09、集合 10…