计算机网络笔记、面试八股(五)—— 浏览器输入URL
本章目录
- 5. 从输入URL到浏览器显示页面过程中都发生了什么
- 5.1 URL输入
- 5.2 DNS解析
- 5.2.1 域名的等级
- 5.2.2 DNS解析的流程
- 5.2.3 DNS查询方式
- 5.3 建立TCP连接
- 5.4 发送HTTP/HTTPS请求
- 5.5 服务器处理请求并返回HTTP响应
- 5.6 浏览器解析渲染页面
- 5.7 HTTP请求结束,断开TCP连接
5. 从输入URL到浏览器显示页面过程中都发生了什么
5.1 URL输入
在浏览器的地址栏输入URL网址时,大部分浏览器会从历史记录、书签等地方开始查找输入的内容,并给出提示。
敲下回车后,浏览器会检查输入的内容是否是一个合法的URL
- 如果是合法的URL,则判断输入的URL是否完整。
- 如果不完整,浏览器可能会对域进行猜测,补全前缀或者后缀。
- 如果不是合法的URL,则将输入内容作为搜索条件,使用用户设置的默认搜索引擎来进行搜索。
5.2 DNS解析
由于浏览器不能直接通过域名找到对应的服务器的IP地址,所以需要进行DNS解析,即DNS解析的作用就是实现域名和IP地址的转换。
5.2.1 域名的等级
-
根域名 :.root 或者 . ,通常是省略的
-
顶级域名,如 .com,.cn 等
-
次级域名(权威域名),如 baidu.com 里的 baidu,这个是用户可以进行注册购买的
-
主机域名,比如 baike.baidu.com 里的baike,这个是用户可分配的

5.2.2 DNS解析的流程

URL -> 浏览器缓存 -> 系统的DNS缓存 -> hosts文件 -> 本地DNS服务器 -> 根域名服务器 -> 顶级域名服务器 -> 权威域名服务器 -> ip地址返回
在浏览器输入www.163.com域名,
- 检查浏览器缓存,看是否有该域名与IP地址的映射记录
- 查找本地的hosts文件是否有该映射
- 向本地DNS服务器发送请求进行查询。本地DNS服务器为TCP/IP参数中设置的DNS服务器,一般都是由网络接入服务器商提供。
- 本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了。
- 如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大,
www.163.com的ip是啥?
- 根域名服务器收到请求后,看到这是个
.com的域名,就回信说:这个域名是由.com老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1)。 - 本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给
.com这个顶级域名服务器发起请求:请问.com大大,www.163.com的ip 是啥? - 顶级域名服务器说:“我给你负责
www.163.com区域的权威 DNS 服务器的地址,你去问它应该能问到”。 - 本地 DNS 于是转向问权威 DNS 服务器:“老三,
www.163.com对应的IP是啥呀?” 163.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。 - 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
- 本地 DNS 再将 IP 地址返回客户端,由此完成了域名解析。同时,客户端以及本地DNS服务器会在自己的缓存中保存下来此记录,方便之后的查询
5.2.3 DNS查询方式
- 递归查询:一般客户端和本地DNS服务器之间属于递归查询
- 迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询
5.3 建立TCP连接
浏览器获取到服务器的IP地址后,浏览器会用一个随机端口([1024, 65535])向服务器的80端口或443端口发起TCP连接请求。当这个连接请求到达服务端后,通过TCP三次握手建立TCP连接。
5.4 发送HTTP/HTTPS请求
5.5 服务器处理请求并返回HTTP响应
服务器收到HTTP请求后,将发回一个 HTTP 响应报文,内容包括相关响应行、响应头和 响应正文。
5.6 浏览器解析渲染页面
-
处理 HTML 标记并构建 DOM 树。
-
处理 CSS 标记并构建 CSSOM 树。
-
将 DOM 与 CSSOM 合并成一个渲染树。
-
根据渲染树来布局,以计算每个节点的几何信息。
-
将各个节点绘制到屏幕上。

5.7 HTTP请求结束,断开TCP连接
现在的页面为了优化请求的耗时,默认都会开启长连接(keep-alive),那么一个 TCP 连接确切关闭的时机,是这个tab标签页关闭的时候。这个关闭的过程就是四次挥手。
相关文章:
计算机网络笔记、面试八股(五)—— 浏览器输入URL
本章目录5. 从输入URL到浏览器显示页面过程中都发生了什么5.1 URL输入5.2 DNS解析5.2.1 域名的等级5.2.2 DNS解析的流程5.2.3 DNS查询方式5.3 建立TCP连接5.4 发送HTTP/HTTPS请求5.5 服务器处理请求并返回HTTP响应5.6 浏览器解析渲染页面5.7 HTTP请求结束,断开TCP连…...
【速记】快速调通算法项目的环境
1.创建新的conda环境,避免把原有的环境给搞坏。 在CMD中执行,而不是在anaconda的命令行中执行: conda create -n 环境名 --offline python3.8 2.在pycharm中配置conda环境: setting->Project Interpreter->齿轮->add-&g…...
开放开源开先河(上)
目录 1.唯一性定义品牌 2.打造爆款塑造品牌 3.构筑生态体系传播品牌 2022年7月28日,以“软件定义世界 开源共筑未来”为主题的全球数字经济大会开放原子开源峰会在北京开幕,承办主峰会和为捐赠人进行授牌仪式的开放原子开源基金会再次进入公众视野。基金…...
TencentOS 3.1安装MySQL 8.0.32
到官网下载安装包:https://dev.mysql.com/downloads/mysql/ 使用如下命令解包。 tar xf mysql-8.0.32-1.el8.x86_64.rpm-bundle.tar 使用rpm -qa |grep mysql 和rpm -qa |grep mariadb检查是否安装过mysql 如果有,使用下命令移除: rpm -e …...
Javascript的API基本内容(五)
一、js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。 比如:变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型, 定义了一套操作HTML文档的API BOM 浏览器对象模型,定义了一套操作浏览器窗口的API 二、loc…...
分层测试(2)单元测试【必备】
1. 什么是单元测试? 对代码中的逻辑隔离的最小代码片段进行测试,验证其逻辑是否符合预期,单元可以是函数,方法,类,功能模块。 2. 单元测试的优点 掌握代码:单元测试允许开发人员了解单元提供…...
代码随想录算法训练营day45 |动态规划之背包问题 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数
day4570. 爬楼梯 (进阶)1. 确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp数组322. 零钱兑换1. 确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组279.完全平方数1. 确…...
秒懂算法 | 基于图神经网络的推荐算法
图神经网络(Graph Neural Networks,GNN)是近几年兴起的学科,用来作推荐算法自然效果也相当好,但是要学会基于图神经网络的推荐算法之前,需要对图神经网络自身有个了解。 图卷积网络(Graph Convolutional Networks,GCN)提出于2017年。GCN 的出现标志着图神经网络的出现。深度学习…...
CANoe TC8测试脚本的结构介绍
CANoe TC8脚本是通过vTESTstudio平台编写。每个协议(ARP\ICMPv4\IPv4\UDP\TCP\SOMEIP\DHCP)都有自己的vtt文件。每个vtt文件的测试树结构为: Test Fixture Fixture Preparation Test Case Test Case … Test Case Test Case Fixture Completion 当Test Fixture里的Test Case…...
DP(4)--区间DP
将n(1≤n≤200)堆石子绕圆形操场摆放,现要将石子有次序地合并成一堆。 规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 (1)选择一种合并石子的方案,使得做n-1次合并,得分的总…...
【C语言】“qsort函数详解”与“使用冒泡思想模拟使用qsort”
✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨ 文章目录✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨qsort的介绍:一、qsort函数的使用✨比较int类型数据比较字符型数据比较结构体数据冒泡思想…...
接口自动化框架---升级版(Pytest+request+Allure)
目录:导读 一、简单介绍 二、目录介绍 三、代码分析 写在最后 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱。 第一版入口:接口自动化框架(PytestrequestAllure…...
C语言循环语句简述
C 循环 有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。 循环语句允许我们多次…...
STM32开发(16)----CubeMX配置DMA
CubeMX配置DMA前言一、什么是DMA?二、实验过程1.CubeMX配置2.代码实现3.实验结果总结前言 本章介绍使用STM32CubeMX对DMA进行配置的方法,DMA的原理、概念和特点,配置各个步骤的功能,并通过串口DMA传输实验方式验证。 一、什么是…...
让物流园区可视可控,顺丰供应链与亚马逊云科技的供应链新解法
导读:物流园区如何破解供应链断点?在物流园区附近,我们经常看到周边道路停满了集装箱卡车。这是物流园区的一个典型痛点,由于园区内部业务情况的不可见性,司机们往往到了园区才被告知业务繁忙,需要长时间排…...
2023年3月北京/西安/广州/深圳DAMA-CDGA/CDGP数据治理认证报名
DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…...
「TCG 规范解读」TCG 主规范-设计原则
可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance,TCPA)所开发的规范。现在的规范都不是最终稿,都…...
【Spring源码】Spring AOP的核心概念
废话版什么是AOP关于什么是AOP,这里还是要简单介绍下AOP,Aspect Oriented Programming,面向切面编程,通过预编译和运行期间提供动态代理的方式实现程序功能的统一维护,使用AOP可以降低各个部分的耦合度,提高…...
华为OD机试用Python实现 -【任务混部】(2023-Q1 新题)
华为OD机试题 华为OD机试300题大纲任务混部题目输入输出示例一输入输出说明示例二输入输出说明备注Code代码编写思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/ca…...
Linux yum 命令
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖…...
分布式事务在跨境交易中的解决方案
随着全球化贸易与数字支付深度融合,跨境交易已从传统线下单证流转,转向多主体、跨区域、异构系统实时协同。一笔跨境订单通常涉及境内外电商平台、支付机构、收单行、清算网络、海关、物流与仓储等多个独立系统,数据分布在不同国家与地区&…...
N76E003烧录避坑指南:Nu-Link与ICP工具实战技巧
N76E003烧录避坑指南:Nu-Link与ICP工具实战技巧 对于嵌入式开发者而言,N76E003作为新唐科技(Nuvoton)推出的高性能8051内核微控制器,凭借其丰富的外设资源和优异的性价比,在工业控制、智能家居等领域广受欢…...
万象熔炉 | Anything XL入门指南:如何通过negative prompt强化画面干净度
万象熔炉 | Anything XL入门指南:如何通过negative prompt强化画面干净度 1. 工具简介:你的本地AI画师 万象熔炉 | Anything XL是一个基于SDXL技术开发的本地图像生成工具,就像在你电脑里安装了一位专业的AI画师。它最大的特点是完全在本地…...
收藏必备!小白程序员轻松入门大模型核心引擎:AI Agent、MCP与Skill全解析
1. AI Agent:智能决策的核心引擎1.1 AI Agent的定义与核心功能 AI Agent(人工智能体)是一种具备自主决策能力的智能系统,它以大型语言模型(LLM)为核心,能够主动感知环境、分析问题、规划行动并执行任务。与传统被动响应…...
解决PyTorch 2.6兼容性问题:YOLOv8部署避坑指南
解决PyTorch 2.6兼容性问题:YOLOv8部署避坑指南 最近升级到PyTorch 2.6,准备部署YOLOv8模型时,是不是遇到了各种奇怪的报错?模型加载失败、推理速度变慢,甚至直接崩溃退出。这些问题看似复杂,其实大多源于…...
24.两两交换链表中的节点(LeetCode)
题目分析: 为链表建立一个虚拟头节点,然后对接下来的两个节点进行位置交换。设置一个指针变量 cur让其指向虚拟头节点 循环遍历的终止条件为cur->next!NULL 并且cur->next->next!NULL 每次循环时,先定义一个指针变量 temp保存 cu…...
MySQL 事务的二阶段提交是什么?
两阶段提交(Two-Phase Commit, 2PC) 是分布式事务或跨存储引擎事务中,为了保证数据一致性(Atomicity)而采用的一种协议。 在 MySQL 中,2PC 最典型的应用场景是 InnoDB 存储引擎与 Redo Log(重做…...
每天五分钟,跟学pytorch_day3:构建和训练图像分类器
目标:给模型输入一张纯色的图片,模型识别并输出其颜色 一、数据准备: 这里我们将使用经典的 CIFAR10 数据集,它包含 10 个类别的彩色图像,每个类别有 6000 张图像,图像大小为 32x32 像素。 ①使用 torch…...
MangoHud项目管理指南:如何高效使用GitHub Projects进行协作开发
MangoHud项目管理指南:如何高效使用GitHub Projects进行协作开发 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode…...
深入go-json内部:操作码序列与虚拟机的完美结合
深入go-json内部:操作码序列与虚拟机的完美结合 【免费下载链接】go-json Fast JSON encoder/decoder compatible with encoding/json for Go 项目地址: https://gitcode.com/gh_mirrors/go/go-json go-json作为一款高性能的JSON编解码库,其核心优…...
