打开一个网站所经历的过程

  1. 浏览器查找网址(URL)对应的服务器的IP地址: 当你在浏览器输入一个网址,计算机需要知道这个网址对应哪台服务器,所以要先查找这个网址对应的 IP 地址。这一步是通过 DNS(域名系统)完成的,浏览器先查找自身缓存的 DNS 记录,如果没有缓存或者缓存过期则会向本地 DNS 服务器或者根 DNS 服务器查询,找到对应的 IP 地址。

  2. 浏览器发送 HTTP 请求:找到服务器的IP地址后,浏览器会通过 TCP 协议与服务器建立连接(三次握手),然后向服务器发送一个 HTTP 请求,请求中包含了你要访问的URL。

  3. 服务器处理请求,返回 HTTP 响应:服务器接收到请求后,会处理这个请求,处理完后返回一个 HTTP 响应,响应中包括了返回的数据(比如HTML文件),状态码和一些其他信息。

  4. 浏览器的解析和渲染: 浏览器收到服务器发来的HTTP响应后,会解析响应内容,如HTML,CSS,JavaScript等文件,然后渲染成可视化的网页。

  5. 浏览器可能会发出额外的请求: 在解析HTML过程中,浏览器可能会发现还需要额外的资料,例如图片、CSS、JavaScript文件、字体文件等,这时候浏览器会再向服务器发出额外的请求,请求这些文件。

  6. 交互: 当页面加载完成后,用户可以进行交互,例如点击链接、填充表单等,这些可能会导致更多的HTTP请求。

以上就是所谓的“访问一次网站背后发生的事情”,其涉及到的网络知识相当丰富,包括了DNS解析、TCP连接、HTTP协议、 HTML / CSS / JS的解析和渲染等。

打开一个网站会经历的流程可以分别对应网络的四层模型:

  1. 查找服务器IP地址: 这基本上属于网络模型的第四层,也就是应用层。DNS(域名系统)服务就是应用层的服务之一。

  2. 浏览器发送HTTP请求: HTTP请求是应用层(第四层)的行为,并且依赖于对应的传输层(第三层,TCP)与网络层(第二层,IP)的行为。

  3. 服务器处理请求并返回HTTP响应: 这一步同样涉及到应用层(HTTP请求处理与响应)、传输层(TCP)和网络层(IP)的行为。

  4. 浏览器解析和渲染页面: 这个主要是应用层的行为,由浏览器程序完成。

  5. 浏览器发出额外的请求: 这涉及到应用层(HTTP请求)和传输层(TCP)以及网络层(IP)。

  6. 用户使用浏览器和页面进行交互: 这个行为主要是应用层的行为。

这就是打开一个网站的整个过程在网络模型四层中的对应关系。

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

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

相关文章

从零学算法240

240.编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,…

代码随想录 Leetcode45. 跳跃游戏 II

题目&#xff1a; 代码(首刷看解析 2024年2月15日&#xff09;&#xff1a; class Solution { public:int jump(vector<int>& nums) {if (nums.size() 1) return 0;int res 0;int curDistance 0;int nextDistance 0;for (int i 0; i < nums.size(); i) {nex…

网页布局之浮动

一&#xff0c;传统网页布局的三种方式 普通流&#xff08;标准流&#xff09;、浮动、定位。 二&#xff0c;标准流&#xff08;普通流/文档流&#xff09; 即为标签按照规定好的默认方式排列。 1.块级元素会独占一行&#xff0c;从上向下顺序排列。 常用元素&#xff1a;…

Mybatis | 初识Mybatis

初识Mybatis 目录: 初识Mybatis什么是Mybatis&#xff1f;Hibernate 和 MyBatis的区别&#xff1f;Mybatis的下载和使用Mybatis的工作原理 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#…

【动态规划专栏】专题二:路径问题--------3.礼物的最大价值

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

算法模板 6.并查集

并查集 用于解决连通块问题。 判断集合个数也就是判断p[x] x 的个数 836. 合并集合 - AcWing题库 #include <bits/stdc.h> using namespace std; const int N 1e5 10; int p[N]; // 记录每个元素的father int n, m;int find(int x){ // 查询元素x的fatherif(p[x] …

[05] computed计算属性

computed计算属性 语法&#xff1a; 声明在 computed 配置项中&#xff0c;一个计算属性对应一个函数使用起来和普通属性一样使用 {{计算属性名}} 注意 computed配置项和data配置项是同级的computed中的计算属性虽然是函数的写法&#xff0c;但它依然是属性computed中的计算…

linux 修改开发板网卡eth0的ip地址

win10如何新增电脑ip地址&#xff1a; https://blog.csdn.net/linxinfa/article/details/105817473 ifconfig # 可设置网络设备的状态&#xff0c;或是显示目前的设置。 命令详解&#xff1a;https://www.runoob.com/linux/linux-comm-ifconfig.html 一、临时修改 ifconfig e…

MySQL篇之事务

一、事务 1.事务的定义 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2.事务的特性 ACID的解释如下&#xff1a; 1. …

webpack实际实践优化项目

参考&#xff1a; 如何通过性能优化&#xff0c;将包的体积压缩了62.7% 雅虎35条 20210526-webpack深入学习&#xff0c;搭建和优化react项目 本文只专注于性能优化的这个部分。 总体来说分为两个方面&#xff1a;第一是开发环境中主要优化打包速度&#xff0c;第二是线上环境…

什么是特征值和特征向量?(done)

什么是齐次方程&#xff1f; https://blog.csdn.net/shimly123456/article/details/136198159 行列式和是否有解的关系&#xff1f; https://blog.csdn.net/shimly123456/article/details/136198215 特征值和特征向量 参考视频&#xff1a;https://www.bilibili.com/video/BV1…

怎么把Maven依赖的包都提取到文件夹

由于我用Maven只想借助他下载jar包和依赖&#xff0c;不想自己的程序编译还得依赖Maven&#xff0c;所以试验时候用Maven引用依赖&#xff0c;试验成功再拷贝jar包来本地引用&#xff0c;有时候依赖多&#xff0c;一个个拷贝就太慢了。所以要能批量把所有依赖jar提取出来。 加…

【删除数组用delete和Vue.delete有什么区别】

删除数组用delete和Vue.delete有什么区别&#xff1f; 在 JavaScript 中&#xff0c;delete 和 Vue.js 中的 Vue.delete 是两个完全不同的概念&#xff0c;它们在删除数组元素时的作用和效果也有所不同。 JavaScript 中的 delete 关键字&#xff1a; 在原生 JavaScript 中&a…

【C语言】长篇详解,字符系列篇2-----strcat,strcmp,strncpy,strncat,strncmp函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本期系列为【C语言】长篇详解&#xff0c;字符系列篇2-----“混杂”的字符串函数&#xff0c;字符串函数的使用和模拟实现【图文详解】&#xff0c;图文讲解各种字符串函数&#xff0c;带大家更深刻理解C语言中各种字符串函数的应用&#xff…

LeetCode.589. N 叉树的前序遍历

题目 589. N 叉树的前序遍历 分析 我们之前有做过LeetCode的 144. 二叉树的前序遍历&#xff0c;其实对于 N 插树来说和二叉树的思路是一模一样的。 二叉树的前序遍历是【根 左 右】 N叉树的前序遍历顺序是【根 孩子】&#xff0c;你可以把二叉树的【根 左 右】想象成【根 孩…

【python】网络爬虫与信息提取--scrapy爬虫框架介绍

一、scrapy爬虫框架介绍 scrapy是一个功能强大的网络爬虫框架&#xff0c;是python非常优秀的第三方库&#xff0c;也是基于python实现网络爬虫的重要技术路线。scrapy不是哟个函数功能库&#xff0c;而是一个爬虫框架。 爬虫框架&#xff1a;是实现爬虫功能的一个软件结构和功…

AS-V1000 视频监控平台产品介绍:客户端功能介绍(四)

目 录 一、引言 1.1 AS-V1000视频监控平台介绍 1.2平台服务器配置说明 二、软件概述 2.1 客户端软件用途 2.2 客户端功能 三、客户端功能说明 3.1告警管理 3.1.1告警联动 &#xff08;1&#xff09;告警联动显示 &#xff08;2&#xff09;告警联动处理 3…

基于学习的参数化查询优化方法

一、背景介绍 参数化查询是指具有相同模板&#xff0c;且只有谓词绑定参数值不同的一类查询&#xff0c;它们被广泛应用在现代数据库应用程序中。它们存在反复执行动作&#xff0c;这为其性能优化提供了契机。 然而&#xff0c;当前许多商业数据库处理参数化查询的方法仅仅只…

代码运行时内存分区

计算机科学中&#xff0c;代码运行时的内存通常划分为以下分区&#xff1a; 堆栈 静态区 活跃区 代码段 常量存储区 全局/静态数据区 只读数据区 BSS 段 ----------------------------------- | 代码段 | ----------------------------------- | …

LeetCode--1445. 苹果和桔子

文章目录 1 题目描述2 测试用例3 解题思路 1 题目描述 表: Sales ------------------------ | Column Name | Type | ------------------------ | sale_date | date | | fruit | enum | | sold_num | int | ------------------------(sale…