当前位置: 首页 > news >正文

计算机网络笔记、面试八股(五)—— 浏览器输入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 域名的等级

  1. 根域名 :.root 或者 . ,通常是省略的

  2. 顶级域名,如 .com,.cn 等

  3. 次级域名(权威域名),如 baidu.com 里的 baidu,这个是用户可以进行注册购买的

  4. 主机域名,比如 baike.baidu.com 里的baike,这个是用户可分配的

5.2.2 DNS解析的流程

URL -> 浏览器缓存 -> 系统的DNS缓存 -> hosts文件 -> 本地DNS服务器 -> 根域名服务器 -> 顶级域名服务器 -> 权威域名服务器 -> ip地址返回

在浏览器输入www.163.com域名,

  1. 检查浏览器缓存,看是否有该域名与IP地址的映射记录
  2. 查找本地的hosts文件是否有该映射
  3. 本地DNS服务器发送请求进行查询。本地DNS服务器为TCP/IP参数中设置的DNS服务器,一般都是由网络接入服务器商提供。
    • 本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了。
    • 如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大, www.163.com 的ip是啥?
  4. 根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1)。
  5. 本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给 .com 这个顶级域名服务器发起请求:请问 .com 大大,www.163.com 的ip 是啥?
  6. 顶级域名服务器说:“我给你负责 www.163.com区域的权威 DNS 服务器的地址,你去问它应该能问到”。
  7. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.163.com对应的IP是啥呀?” 163.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
  8. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
  9. 本地 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 浏览器解析渲染页面

  1. 处理 HTML 标记并构建 DOM 树。

  2. 处理 CSS 标记并构建 CSSOM 树。

  3. 将 DOM 与 CSSOM 合并成一个渲染树。

  4. 根据渲染树来布局,以计算每个节点的几何信息。

  5. 将各个节点绘制到屏幕上。

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 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖…...

不止于仿真:用Multisim14.0的BUCK电路案例,手把手教你理解CCM/DCM模式与电感计算

从波形到公式:用Multisim 14.0解锁BUCK电路CCM/DCM模式的本质理解 当我们第一次翻开电力电子教材,那些关于BUCK电路工作模式的描述往往显得抽象而晦涩。"连续导通模式(CCM)"、"断续导通模式(DCM)"、"临界电感值"——这些概…...

ARM PMCCNTR寄存器:性能监控与时钟周期计数详解

1. ARM PMCCNTR寄存器深度解析在现代处理器架构中,性能监控单元(PMU)是系统调优和性能分析的关键组件。作为ARM架构性能监控的核心,PMCCNTR寄存器提供了精确的处理器时钟周期计数能力。这个64位寄存器在AArch32和AArch64执行模式下具有架构映射关系&…...

奇异值分解(SVD):从黑盒到语义空间的一场解剖之旅

转载声明:本文核心思想源自 Jonathon Shlens A Tutorial on Principal Component Analysis、AMS Feature Column on SVD 及 LSA Tutorial 等经典文献,仅对叙述方式与图示进行重构,以适配中文技术社区的阅读语境。0. 开场:如果线性…...

RT-DETR最新创新改进系列:4D辅助细化为检测颈部注入额外表达,融合后再增强,解码前再提纯,精度提升从特征质量开始!【细化特征,稳住精度】

本文为 RT-DETR 改进系列纯净发布稿,写法采用模块化技术博文形式:先讲痛点,再讲结构,再给配置、训练方式、实验表格和注意事项。全文仅保留技术正文,便于直接发布。摘要 本文围绕 4D 辅助细化 展开。该版本属于 结构增…...

AI技能文件管理工具agent-skills-lint:多助手环境下的统一质检方案

1. 项目概述:为什么我们需要一个AI技能文件“质检员”如果你和我一样,同时在使用Claude Code、Cursor、Aider这些AI编程助手,那你一定遇到过这个烦人的问题:每个助手都有自己的“技能”(Skills)系统&#x…...

别再死记硬背关键帧了!用Blender 2.83.9的Rigify,带你拆解走路动画的物理原理(附膝跳问题修复)

别再死记硬背关键帧了!用Blender 2.83.9的Rigify,带你拆解走路动画的物理原理(附膝跳问题修复) 当你第一次尝试用Blender制作走路动画时,是否遇到过这样的困境:明明按照教程一步步设置了关键帧,…...

2026 流量卡办理全攻略:从下单、激活到售后,新手一遍看懂不踩坑

现在人人都离不开手机流量,不管是日常刷视频、追剧观影,还是备用机上网冲浪,一张划算又正规的通用流量卡,已经成为大众刚需。但很多新手第一次在线办理优惠号卡,普遍一头雾水:分不清流量卡是否正规靠谱、办…...

从F103到F407:老STM32玩家升级指南,详解性能差异与项目移植实战

从F103到F407:老STM32玩家升级指南,详解性能差异与项目移植实战 对于熟悉STM32F1系列开发的工程师来说,升级到F407系列既是一次性能跃迁的机会,也伴随着学习曲线和移植挑战。本文将深入剖析两款芯片的差异,并提供可落地…...

你的oh-my-zsh插件列表还缺它吗?深度体验autojump:不止是目录跳转

深度探索autojump:oh-my-zsh终端导航的智能记忆系统 终端操作效率一直是开发者关注的焦点。当你的命令行环境从基础功能升级到oh-my-zsh这样的强大框架后,如何进一步挖掘工具潜力成为提升工作流的关键。在众多效率插件中,autojump以其独特的&…...

告别卡顿与臃肿:两种高效获取MATLAB Online账号的实战指南

1. 为什么你需要MATLAB Online? 如果你正在读这篇文章,大概率是因为你的电脑跑不动桌面版MATLAB了。我完全理解这种痛苦——当年我的老笔记本打开MATLAB要三分钟,运行个简单脚本风扇就狂转,更别提安装时那令人绝望的20GB硬盘占用…...