浏览器输入URL再按下回车会经历哪些过程

news2024/9/25 3:24:45

目录

前言

一、解析URL

二、解析域名(DNS)

三、TCP三次握手建立连接

1.seq、syn、ack含义

2.三次握手 

四、发送http/https请求

五、服务器响应请求

六、浏览器解析渲染页面 

七、TCP四次挥手断开连接

总结


前言

看各种面经发现这个问题是一个高频出现的面试问题,但我自己对于浏览器知识点的了解相对薄弱,通过这篇文章来简单了解下浏览器相关知识点。

一、解析URL

输入URL按下回车后,浏览器会提取输入的协议、域名、路径等信息,检测输入的URL是不是一个合法的链接或者搜索词。

二、解析域名(DNS)

域名的构成如www.baidu.com.

最后的.为根域名(常忽略不写)

.com:一级域名(也叫顶级域名) com一般为营利组织 还有.net(网络提供商)  .org(非营利组织)

baidu:二级域名

www:主机名

获取输入域名中的ip地址,会通过多层域名解析服务器解析域名获得ip地址。

1.会在本地缓存中查找是否缓存过域名所指的ip地址

2.会检查host文件

3.浏览器发送一个请求到本地DNS服务器,本地DNS服务器进行解析

4.如果本地DNS服务器没有,则本地DNS服务器向根DNS服务器发送请求,进行解析

5.如果根域名解析服务器没有则本地DNS服务器去向顶级域DNS服务器进行解析

6.本地DNS服务器向权威DNS服务器发送请求

三、TCP三次握手建立连接

1.seq、syn、ack含义

seq:序列号 用于标识TCP报文段的顺序

ack:确认号 用于确认已接收到的报文字段的序列号

SYN:用于建立连接,等于1时表示这是一个连接请求或连接接受报文

ACK:确认序号有效 为1时生效,为0时无效

2.三次握手 

1.第一次握手 客户端发送SYN包(seq=x)到服务器,等待服务器确认

2.第二次握手 服务器接收客户端的SYN包,确认客户的SYN(ack=x+1),同时自己也发送一个SYN(seq=y)包,即ACK+SYN包

3.第三次握手 客户端接收服务器传过来的ACK+SYN包,向服务器发送确认包ACK(ack=y+1)

三次握手完成,客户端和服务器正式开始传递数据

如图所示:

四、发送http/https请求

TCP连接建立好后浏览器会向服务器发送http/https请求

完整的请求包含三个部分:请求行+请求头部+请求体

 

五、服务器响应请求

六、浏览器解析渲染页面 

在这条博客详细写了浏览器渲染的流程

浏览器的渲染流程-CSDN博客

七、TCP四次挥手断开连接

FIN:请求释放连接

第一次挥手:客户端发送FIN(seq=u)数据包到服务器,用来关闭客户端到服务器的数据连接

第二次挥手:服务器接收FIN包,向客户端发送ACK包(seq=v,ack=u+1,将序列号+1作为本次确认号)

第三次挥手:服务器发送一个FIN(seq=w)包到客户端,请求客户端关闭连接

第四次挥手:客户端收到服务器发送的FIN包,向服务器端发送ACK包(ack=w+1,将序列号+1作为本次确认号,seq=u+1,将确认号作为序列号发送),服务器收到ACK包后关闭连接,客户端等待一段时间后未收到服务器端消息证明其关闭后则关闭连接。

如图所示:


总结

以上就是在浏览器中输入URL到回车会发生的全部过程

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

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

相关文章

LLM之RAG实战(四):Self-RAG如何革命工业LLM

论文地址:https://arxiv.org/pdf/2310.11511.pdf Github地址:https://github.com/AkariAsai/self-rag 尽管LLM(大型语言模型)的模型和数据规模不断增加,但它们仍然面临事实错误的问题。现有的Retrieval-Augmented Gen…

详解—C++右值引用

目录 一、右值引用概念 二、 左值与右值 三、引用与右值引用比较 四、值的形式返回对象的缺陷 五、移动语义 六、右值引用引用左值 七、完美转发 八、右值引用作用 一、右值引用概念 C98中提出了引用的概念,引用即别名,引用变量与其引用实体公共…

uniapp实现检查版本检测,更新

1.首先需要获取当前app的版本 const systemInfo uni.getSystemInfoSync();// 应用程序版本号// #ifdef APPme.version systemInfo.appWgtVersion;// #endif// #ifdef H5me.version systemInfo.appVersion;// #endif2.在获取到服务器保存的app版本 3.点击按钮验证版本号 //…

【源码】车牌检测+QT界面+附带数据库

目录 1、基本介绍2、基本环境3、核心代码3.1、车牌识别3.2、车牌定位3.3、车牌坐标矫正 4、界面展示4.1、主界面4.2、车牌检测4.3、查询功能 5、演示6、链接 1、基本介绍 本项目采用tensorflow,opencv,pyside6和pymql编写,pyside6用来编写UI界…

2023年【上海市安全员B证】考试题库及上海市安全员B证考试资料

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员B证考试题库是安全生产模拟考试一点通总题库中生成的一套上海市安全员B证考试资料,安全生产模拟考试一点通上上海市安全员B证作业手机同步练习。2023年【上海市安全员B证】考试题库及上海市安…

支出管理如何帮助企业抵御经营成本压力?

近日,国内中小企业协会发布最新中小企业发展指数情况,虽然经济持续恢复向好,但依然面临困难和挑战。企业经营成本压力不减,效益状况总体仍不乐观。 许多中小企业采取被动措施,想方设法削减成本。然而,如果…

怎样培养孩子的好习惯

好习惯是孩子成长道路上不可或缺的伴侣。那么,如何在孩子成长的关键时期培养他们良好的习惯呢?以下是几点建议: 一、以身作则,成为孩子的榜样 父母是孩子的第一任老师和榜样。要求孩子做到的事情,自己首先要做到。只有…

常用的系统存储过程

exec sp_databases ---列出服务器上所有的数据库信息 exec sp_help student ---查看学生表中的所有信息 exec sp_renamedb Myschool,MySchools ---更改数据库的名称 需要两个参数 一个是原来数据库的名称 一个是要改为的数据库名称 消息框显示:数据库 名称 MyS…

Docker——2. Docker基础

1. 常见命令 不用重复使用docker run命令,这是创建容器命令,启动容器应该是docker start; docker ps 查看进程运行状态; docker rmi 删除镜像、rm 删除容器; docker logs 查看日志、docker exec 执行命令进入容器内部&…

c#读取XML文件实现晶圆wafermapping显示demo计算电机坐标以便控制电机移动

c#读取XML文件实现晶圆wafermapping显示 功能: 1.读取XML文件,显示mapping图 2.在mapping视图图标移动,实时查看bincode,x,y索引与计算的电机坐标 3.通过设置wafer放在平台的位置x,y轴电机编码值,相机在wafer的中心位置&#…

jstree组件的使用详细教程,部分案例( PHP / fastAdmin )

jstree 组件的使用。 简介:JsTree是一个jquery的插件,它提交一个非常友好并且强大的交互性的树,并且是完全免费或开源的(MIT 许可)。Jstree技持Html 或 json格式的的数据, 或者是ajax方式的动态请求加载数…

基于ssm的汽车服务商城系统设计与实现论文

摘 要 本课题是根据用户的需要以及网络的优势建立的一个基于Vue的汽车服务商城系统,来更好的为用户提供服务。 本基于Vue的汽车服务商城系统应用Java技术,MYSQL数据库存储数据,基于SSMVue框架开发。在网站的整个开发过程中,首先对…

关于响应式布局,你需要了解的知识点

什么是响应式布局? 响应式布局,就是根据不同设备展示不同的布局,以免更方便用户浏览页面。 举个很简单的例子,我们在电脑上浏览网页,屏幕非常大,这时候可能采用的是如下图所示的布局方式。这种布局方式很宽…

[陇剑杯 2021]日志分析

[陇剑杯 2021]日志分析 题目做法及思路解析(个人分享) 问一:单位某应用程序被攻击,请分析日志,进行作答: 网络存在源码泄漏,源码文件名是_____________。(请提交带有文件后缀的文件名&…

vue项目debugger调试看不到源码

vue项目debugger调试看不到源码 引用地址:vue项目debugger调试看不到源码_hua_ban_yu的博客-CSDN博客_vue项目网页源代码查看不了 在开发vue项目时,不知为啥进行debug但是查看不到页面源代码,尝试过很多方法,最后在看到大神相关…

WSL的安装与使用 (超详细图文版安装教程)

安装与使用 Windows Subsystem for Linux - WSL 安装(两种方式均可实现WSL的安装)图文版安装文字版安装步骤1:启用 WSL 功能步骤2:选择并安装 Linux 发行版步骤3:配置和使用 WSL步骤4:与 Windows 的互操作性…

探索高级AJAX技术:深入研究异步请求和响应处理

大家有关于JavaScript知识点不知道可以去 🎉博客主页:阿猫的故乡 🎉系列专栏:JavaScript专题栏 🎉ajax专栏:ajax知识点 🎉欢迎关注:👍点赞🙌收藏✍️留言 目录…

Docker-consul容器服务自动发现与注册

什么叫微服务或者注册与发现? 是一种分布式管理系统,定位服务的方法。 在传统的架构中,应用程序之间直连到已知的服务。 已知的服务:设备提供的网络、IP地址、基于tcp/ip端口 基于现微服务部署,服务的动态性&#…

在MDK开发调试过程中,发现程序正常运行,但是打断点无法进入。

在MDK开发调试过程中,发现程序正常运行,但是打断点无法进入。 打断点无法进入: 程序无法进行: 查找问题:这些都已经配置 上面都已经配置,最终发现: 勾选后进入断点成功。

以csv为源 flink 创建paimon 临时表相关 join 操作

目录 概述配置关键配置测试启动 kyuubi执行配置中的命令 bug解决bug01bug02 结束 概述 目标:生产中有需要外部源数据做paimon的数据源,生成临时表,以使用与现有正式表做相关统计及 join 操作。 环境:各组件版本如下 kyuubi 1.8…