当前位置:网站首页>面试突击72:输入URL之后会执行什么流程?
面试突击72:输入URL之后会执行什么流程?
2022-08-08 09:29:00 【InfoQ】
- 执行 DNS 域名解析;
- 封装 HTTP 请求数据包;
- 封装 TCP 请求数据包;
- 建立 TCP 连接(3 次握手);
- 参数从客户端传递到服务器端;
- 服务器端得到客户端参数之后,进行相应的业务处理,再将结果封装成 HTTP 包,返回给客户端;
- 服务器端和客户端的交互完成,断开 TCP 连接(4 次挥手);
- 浏览器通过自身执行引擎,渲染并展示最终结果给用户。
1.DNS 域名解析
- 先检查浏览器中的 DNS 缓存,如果浏览器中有对应的记录会直接使用,并完成解析;
- 如果浏览器没有缓存,那就去查询操作系统的缓存,如果查询到记录就可以直接返回 IP 地址,完成解析;
- 如果操作系统没有 DNS 缓存,就会去查看本地 host 文件,Windows 操作系统下,host 文件一般位于 "C:\Windows\System32\drivers\etc\hosts",如果 host 文件有记录则直接使用;
- 如果本地 host 文件没有相应的记录,会请求本地 DNS 服务器,本地 DNS 服务器一般是由本地网络服务商如移动、电信提供。通常情况下可通过 DHCP 自动分配,当然你也可以自己手动配置。目前用的比较多的是谷歌提供的公用 DNS 是 8.8.8.8 和国内的公用 DNS 是 114.114.114.114。
- 如果本地 DNS 服务器没有相应的记录,就会去根域名服务器查询了,目前全球一共有 13 组根域名服务器(这里并不是指 13 台服务器,是指 13 个 ip 地址,按字母 a-m 编号),为了能更高效完成全球所有域名的解析请求,根域名服务器本身并不会直接去解析域名,而是会把不同的解析请求分配给下面的其他服务器去完成,下面是 DNS 域名系统的树状结构图:

2.封装 HTTP 请求数据包
- 请求行
- 请求报头
- 空行
- 请求正文

3.封装 TCP 请求数据包
4.建立 TCP 连接(3 次握手)
- 我:喂,能听到吗?
- 对方:能听到,你能听到吗?(证明了对方的接收能力和我的发送能力)
- 我:我也能听到,咱们聊正事吧。(证明了对方的发送能力和我的接收能力)
5.服务器端获取到 HTTP 请求参数
6.服务器端执行业务处理,并返回数据
- 状态行
- 响应报头
- 空行
- 响应正文

- HTTP 版本号,如 HTTP/1.1;
- 状态码,如 200;
- 状态描述信息,如 OK;
- 200:返回成功;
- 301:永久重定向;
- 302:临时重定向;
- 404:未找到页面;
- 500:服务器程序出错。
7.断开 TCP 连接(4 次挥手)
- 客户端:咱们分手吧;
- 服务器端:好的,让我准备一下。
- 服务器端:我准备好了,分手吧。
- 客户端:好的。
8.浏览器渲染并展示结果
参考 & 鸣谢
边栏推荐
- 【Collection】3. Wallpaper collection
- Do you really know IP addresses?
- MySQL redo log和undo log
- Elasticseach实践1
- xgboost 加速
- 各位大佬想问下, flinkcdc采集oracle我看了下延迟大概两分钟左右,想问下有啥解决方法吗
- Multi-scalar multiplication: state of the art & new ideas
- 文献学习(part33)--Clustering by fast search and find of density peaks
- 什么是本质安全?
- Redis读写分离(三)
猜你喜欢
机器学习理论及案例分析(part3)--聚类
Defense - MFW all over the world
Django+MySQL+HarmonyOS------------笔记二
VMWare Esxi 虚拟系统数据存储扩容(增加容量)的简明教程
移动端/嵌入式-CV模型-2018:MobelNets-v2
COMSOL Multiphysics 6.0软件安装包和安装教程
2022 - image classification 】 【 MaxViT ECCV
Flink Record has Long.MIN_VALUE timestamp (= no timestamp marker). Is the time characteristic
「控制反转」和「依赖倒置」,傻傻分不清楚?
入职半个月的一些思考
随机推荐
COMSOL Multiphysics 6.0 software installation package and installation tutorial
小白求助,关于Go编译的顺序
一个用来装逼的利器
蔚来杯2022牛客暑期多校训练营6 ABGJM
牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02
Mysql数据库架构介绍
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
移动端/嵌入式-CV模型-2017:MobelNets-v1
Kotlin Compose MiUI13.0.4 版本 Livedata不生效
Excel method is commonly used in text function 5
golang-channel-一个基础channel并行操作的简单函数
1252_FreeRTOS_堆栈溢出检查方法与测试
手机APP测试流程规范和方法你知道多少?
VPP source address NAT
Golang实现sha256或sha512加密
Database Tuning: The Impact of Mysql Indexes on Group By Sorting
VPP static mapping to realize DNAT
LabVIEW前面板和程序框图的最大尺寸
STL underlying implementation principle
docker部署redis容器问题