浏览器输入www.baidu.com后执行的全部过程

news/2024/4/18 14:59:35/文章来源:https://blog.csdn.net/c_study__c/article/details/129189448

日升时奋斗,日落时自省 

<1>URL输入

URL称为 : 统一资源定位符,用于定位互联网上的资源,也就是平常提起的"网址"

地址栏输入网址之后按下回车,浏览器会对输入的信息进行评判

(1)检查输入的内容是否是是一个合法的网址连接(非法地址不行)

(2)合法的情况下 : 再次判断网址是否完整,如果不完整,浏览器会进行在本有的网址上进行猜测补全地址的前缀或者后缀;最终浏览器接收到的网址:www.baidu.com;

(3)不合法 : 将输入内容作为搜索条件 ,  直接当做默认搜索引擎进行搜索

<2>DNS域名解析IP地址

浏览器不是直接通过域名来找对应服务器的IP地址的 , 所以使用DNS解析浏览器发送来的请求解析的网址的IP地址

根据七层网络协议 (了解): 浏览器和服务器都可以看做是 应用层的一个应用

实际上就是一个应用层到另一个应用层的过程,该过程一般使用的是HTTP协议进行

 HTTP协议底层的TCP/IP协议,需要用IP地址建立连接.浏览器直接接收的是网址,针对的域名是需要找到对应IP地址的

第一步 : 用户在浏览器中输入域名操作系统会检查浏览器缓存和本地的hosts文件中,是否有这个网址记录,如果有的话就从记录里面找到对应的IP地址,完成域名解析 

第二步 : 如果第一步中没有的话,接下来使用TCP/IP参数中设置的DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源,则返回解析结果,完成域名解析

第三步 : 第二步也没有完成解析的情况下: 检查本地DNS服务器是否缓存有该网址记录,有的话就返回解析结果 , 完成域名解析

第四步 : 本地服务器也没有找到的话,再发送到查询报文到根DNS服务器,根DNS服务器收到请求好后 , 返回顶级域DNS服务器地址, 之后本地DNS服务器发送查询报文到顶级域DNS服务器;顶级域DNS服务器收到请求后,返回权威DNS服务器地址,本地DNS服务器再发送查询报文到权威DNS服务器,权威DNS服务器收到请求后,最终返返回IP地址,完成域名解析

<3>建立TCP连接(三次握手)

当浏览器获取到服务器的IP地址后,浏览器就会用一个随机的端口号向像服务器80端口发起TCP连接请求,该连接请求抵达服务器端后,开始建立连接 TCP 三次握手

 针对三次握手(简单叙述):

TCP 连接 客户端 与 服务器 交互需要3个数据报(上图中的 SYN  (SYN+ACK)  ACK) ; 三次握手的目的就是为了确认双方的接收和发送能力是否正常 , 初始序列号,窗口大小等(详细TCP解析)

第一次握手 : 客户端发送 SYN 报文段 ,并进入 SYN + ACK 状态 , 等待服务器的确认

第二次握手 : 服务器收到SYN报文段 需要给客户端发送ACK 同时也需要发送一个SYN报文,所以也就是向客户端发送 SYN + ACK

第三次握手 : 客户端接收到了SYN + ACK 报文 向服务器发送确认包,客户端进入等待状态,等待服务器收到客户端ACK包也会进入

<4>发送HTTP/HTTPS请求

服务器接收到请求,根据报头中的content -type 的值来判处理请求的数据

HTTPS  :  会在TCP与HTTP之间多添加一层协议做为加密及鉴别服务,HTTPS使用SSL协议和TLS协议,保证了信息的安全

TLS协议 :用于在两个通信应用程序之间提供保密性和数据完整性。TLS协议由两层组成:TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)

当浏览器到web服务器的连接建立后,浏览器会发送一个初始的HTTP GET请求, 目标通常是一个HTML文件,服务器收到请求以后,将发回一个HTTP响应报文,内容包括相关响应头 和 HTML正文

HTTP响应报文 包含了 状态行 、响应头部 、空行 和 响应包体组成

状态行格式:HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version:表示服务器HTTP协议的版本(一般是HTTP /1.1 )
Status-Code:表示服务器发回的响应状态代码(十进制数字1,以代码的形式表示服务器对请求的处理结果)
Reason-Phrase:表示状态代码的文本描述,简单的文字描述(例如 Not Found),也可以自定义,早期兼容文本客户端,当前使用较少
CRLF:回车符+换行符

注:此处提到的是状态码,状态码不是只能判断错误,我们最常见网页资源不存在的时候会出现404 Not Found ,同时还有其他的状态都是状态代码描述的

状态代码解析 :

HTTP响应报文状态行中的状态代码由三位数字组成,第一个数组定义了响应的类别 ,共有五中可能取值:

1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。
4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。

<5>浏览器解释渲染页面

浏览器接收到响应以后,根据响应类型判断出后面的数据应该是HTML文档格式,

不同浏览器引擎渲染过程都不太一样,我以谷歌浏览器为例来介绍一下渲染过程

第一步 :处理HTML标记并构建DOM树 

第二步 : 处理CSS标记并构建CSSOM树 

第三步 :将DOM树与CSSOM树合并成一个渲染树

第四步 :浏览器根据渲染树把页面绘制到屏幕上

<6>HTTP请求结束,断开TCP连接

针对长链接和短链接分别概括性指的是 两个版本http1.0 和 http1.1的区别;

在HTTP/1.0规定默认使用的是短连接(浏览器与服务器值保持短暂的连接);浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。

 HTTP/1.1规定默认使用长连接,数据传输完成了保持TCP连接不断开(不发送RST包、不不四次挥手),用以保持连接特性。使用长连接的HTTP协议,在同一个TCP的连接中可以传送多个HTTP请求和响应(多个请求和响应可以重叠,多个请求和响应可以同时进行),会在响应头有加入这行代码:Connection:keep-alive

TCP断开连接:四次挥手释放(TCP详细版)

 四次挥手(简单叙述):

执行四次交互

第一次 :发送FIN报文 ,服务器接收同时返回ACK,此时服务器知道 自己能接收成功

第二次:客户端接收到服务器返回的ACK,客户端知道了自己发送的数据能被接收(自己能发送数据成功)

第三次:服务器发送FIN, 证明服务器发送功能没有问题

第四次:客户端接收FIN后,返回ACK,告诉服务器能够它能够发送成功

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

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

相关文章

Python Unittest框架

1、unittest简介 unittest是Python自带的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件,主要适用于单元测试,可以用来作自动化测试框架的用例组织执行框架。 2、unittest框架的特性: 提供用例组织与执行:当测试用例只有几条的时候可以不考虑…

Nginx 02篇——Nginx基本配置与参数说明篇

Nginx 02篇——Nginx基本配置与参数说明篇前言-默认配置文件1. 前言——关于nginx1.1 关于nginx1. 2 Nginx 01篇——Nginx安装2. Nginx 配置文件结构2.1 Nginx 安装后的默认文件2.2 Nginx 的三大组成部分3. 配置参说明-1——整个配置3.1 配置说明3.2 参考4. 配置说明-2—详细说…

postgres 源码解析51 LWLock轻量锁--2

本篇将着重讲解LWLock涉及的主要API工作流程与实现原理&#xff0c;相关基础知识见回顾&#xff1a;postgres 源码解析50 LWLock轻量锁–1 API介绍 函数API功能CreateLWLocks分配LWLocks所需的内存并进行初始化LWLockNewTrancheId分配新的Tranche ID,供用户使用Extension模块…

结构效度分析流程

结构效度分析流程如下图 一、结构效度的意义 效度分析在学术研究中非常常见&#xff0c;结构效度是为了分析“从量表获得的结果与设计该量表时所假定的理论之间的符合程度”。简单来讲&#xff0c;在研究者设计量表之初&#xff0c;一般会预设好几个维度&#xff0c;在经过因子…

kafka入门到精通

文章目录一、kafka概述&#xff1f;1.定义1.2消息队列1.2.1 传统消息队列的使用场景1.2.2 消息队列好处1.2.3 消息队列两种模式1.3 kafka基础架构二、kafka快速入门1.1使用docker-compose安装kafka1.2测试访问kafka-manager1.3 查看kafka版本号1.4 查看zookeeper版本号1.5 扩展…

python学习之OpenCV-Python模块的部分应用示例(生成素描图和动漫图)

文章目录前言一、图片转灰度二、对图片进行二值化处理三、对图片去除噪点四、调整图片透明度五、生成素描滤镜效果图&#xff08;方法结合应用&#xff09;六、生成动漫卡通滤镜效果图&#xff08;方法结合应用&#xff09;总结前言 OpenCV 是一个图像和视频处理库&#xff0c…

掌握饮食健康:了解你的宏量营养素摄入

谷禾健康 // 俗话说“病从口入”&#xff0c;我们的健康状况很大一部分取决于饮食。而食物基本上是由各种营养素构成的。 宏量营养素是人体大量需要的必需营养成分。宏量营养素指的是“三大”营养素&#xff1a;蛋白质、脂肪和碳水化合物&#xff0c;它们是我们饮食中的关键。 …

【JavaScript】基本语法大全

前言&#xff1a; 大家好&#xff0c;我是程序猿爱打拳。在学习C和Java这样的后端编程语言后&#xff0c;我们大概率会学习一些关于前端的语言如HTMLJavaScript。又因为前后端基本语法有些许不同&#xff0c;因此我整理出来。今天给大家讲解的是JS中的数据类型、运算符、选择结…

【华为OD机试模拟题】用 C++ 实现 - 最低位排序(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

Eth-trunk :LACP模式链路聚合实战

Eth-trunk : LACP模式链路聚合实战 需求描述 PC1和PC3数据vlan10 &#xff0c;网段为192.168.10.0 /24PC2和PC4数据vlan20 &#xff0c;网段为192.168.20.0 /24确保设备之间互联互通&#xff0c;使用最大互联带宽并没有环路确保相同网段的PC可以互通判断交换机之间的每个端口…

ros下用kinectv2运行orbslam2

目录 前提 创建工作空间 orbslam2源码配置、测试&#xff1a; 配置usb_cam ROS功能包 配置kinect 前提 vim 、 cmake 、 git 、 gcc 、 g 这些一般都装了 主要是Pangolin 、 OpenCV 、 Eigen的安装 18.04建议Pangolin0.5 创建工作空间 我们在主目录下创建一个catkin_…

Node 10.0.8.6:9003 is unknown to cluster

解决方案解决方案一解决方案一 ① 概念介绍 公网ip&#xff1a;就是任意两台连接了互联网的电脑可以互相ping ip,能够通的ip 内网ip&#xff1a;只是在内网中使用无法与外网连接的ip ②问题背景 在腾讯云上搭建的一个redis集群&#xff0c;集群启动后 可以看到启动节点…

TX Text Control .NET Server for ASP.NET 31.0 SP2 CRK

用于 ASP.NET 31.0 SP2 的 TX 文本控件 .NET 服务器 用于 ASP.NET 的 TX 文本控件 .NET 服务器 TX Text Control Server for ASP.NET 是用于 Web 应用程序或服务的服务器端组件。它是一个完全可编程的 ASP.NET 文字处理器引擎&#xff0c;提供了广泛的文字处理功能。使用 TX Te…

C++中的内存管理

文章目录前言1.C中内存空间的划分2.C内存管理方式1.对内置类型的处理2.对自定义类型的处理3.new和delete实现原理4.定位new3.总结1. malloc/free和new/delete的区别2. 内存泄漏前言 C中的内存空间划分和C语言是很像的&#xff0c;基本上区别不大。但是因C中&#xff0c;引入了…

davis2016评估教程

DAVIS 2016是VOS任务中的一个经典的benchmark&#xff0c;但是一些VOT的算法有时候也可以预测mask&#xff0c;所以也会在上面测一测性能&#xff0c;本次就随手记录一下自己评测的过程&#xff0c;有需要的小伙伴可以往下看。 DAVIS 2016数据集官方项目网站&#xff1a;https:…

TCP四次挥手

TCP 四次挥手过程是怎样的&#xff1f; TCP 断开连接是通过四次挥手方式。 双方都可以主动断开连接&#xff0c;断开连接后主机中的「资源」将被释放&#xff0c;四次挥手的过程如下图&#xff1a; 客户端打算关闭连接&#xff0c;此时会发送一个 TCP 首部 FIN 标志位被置为 1…

node报错

记录bug:运行 npx -p storybook/cli sb init 时报错gyp info spawn C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exegyp info spawn args [gyp info spawn args build/binding.sln,gyp info spawn args /nologo,gyp info spawn args…

prometheus + alterManager + 飞书通知,实现服务宕机监控告警;实测可用

架构设计图 最终效果图 项目准备 xml依赖 <!-- 监控相关 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.…

消息队列--Kafka

Kafka简介集群部署配置Kafka测试Kafka1.Kafka简介 数据缓冲队列。同时提高了可扩展性。具有峰值处理能力&#xff0c;使用消息队列能够使关键组件顶住突发的访问压力&#xff0c;而不会因为突发的超负荷的请求而完全崩溃。 Kafka是一个分布式、支持分区的&#xff08;partition…

JAVA 8 新特性 Lamdba表达式

Java8 新特性&#xff1a; 1、Lamdba表达式 2、函数式接口 3、方法引用和构造引用 4、Stream API 5、接口中的默认方法和静态方法 6、新时间日期API 7、Optional 8、其他特性 Java8 优势&#xff1a;速度快、代码更少&#xff08;增加了新的语法 Lambda 表达式&#xff09;、强…