浏览器输入一个域名的解析过程

news2024/11/20 3:30:45

目录

从输入一个域名的解析过程

以www.baidu.com为例子

本地缓存和hosts文件

mDNS和LLMNR

NBT-NS

路由器广播

Root域名服务器

顶级域名服务器

目标域名服务器

DNS解析完成

操作系统发起TCP连接:

TCP三次握手: TCP连接的建立采用经典的三次握手过程:

TCP连接建立

HTTP请求

服务器处理请求:

HTTP响应:

浏览器渲染:


从输入一个域名的解析过程

  • 本地缓存和hosts文件: 首先,系统会检查本地的DNS缓存以及hosts文件,看是否有目标域名的解析记录。如果有,解析过程就直接结束,直接使用缓存或hosts文件中的IP地址。
  • mDNS和LLMNR: 如果本地缓存和hosts文件中没有找到,系统可能会使用mDNS(对于MacOS和Linux)或LLMNR(对于Windows)在局域网中进行主机名解析。这是一种在本地网络中进行零配置的服务发现协议。
  • NBT-NS: 如果mDNS和LLMNR都没有找到,系统可能会尝试使用NBT-NS(NetBIOS Name Service),这是一种用于在Windows网络中解析NetBIOS主机名的服务。
  • 路由器广播: 如果上述步骤都没有成功,系统可能会向本地网络的路由器发起广播请求,看是否能够得到目标主机的IP地址。
  • Root域名服务器: 如果局域网中的解析仍然失败,系统将发起DNS查询请求,首先向根域名服务器发起查询。根域名服务器将返回顶级域(例如.com)的权威DNS服务器地址。
  • 顶级域名服务器: 然后,系统将向顶级域名服务器发起查询,获取下一级域名服务器的地址。这个过程将一级一级地进行,直到获取到目标域名的权威DNS服务器。
  • 目标域名服务器: 最终,系统将向目标域名的权威DNS服务器发起查询,获取目标域名的IP地址。
  • DNS解析完成: 在上述DNS查询中,已经获取了目标域名(例如, www.baidu.com)对应的IP地址。
  • 操作系统发起TCP连接: 浏览器或其他网络应用通常会通过操作系统提供的套接字接口来发起TCP连接。操作系统根据DNS解析得到的IP地址,向目标服务器发起TCP连接请求。
  • TCP三次握手: TCP连接的建立采用经典的三次握手过程:
  • 第一步(客户端向服务器发送SYN): 客户端发送一个TCP报文,其中包含SYN(同步)标志,表示请求建立连接。
  • 第二步(服务器收到SYN并发送ACK和SYN): 服务器接收到客户端的SYN后,发送一个带有ACK(确认)和SYN标志的报文,表示同意建立连接。
  • 第三步(客户端收到ACK和SYN): 客户端接收到服务器的ACK和SYN后,发送一个带有ACK标志的报文,表示连接建立成功。
  • TCP连接建立: 当三次握手完成后,TCP连接建立成功,双方可以开始进行数据传输。
  • HTTP请求: 一旦TCP连接建立成功,浏览器向服务器发送HTTP请求,包括请求的资源路径等信息。
  • 服务器处理请求: 服务器接收到请求后,根据请求的资源路径等信息,处理并生成相应的HTTP响应。
  • HTTP响应: 服务器将响应内容通过TCP连接发送给浏览器。
  • 浏览器渲染: 浏览器接收到HTTP响应后,解析并渲染页面,呈现给用

以www.baidu.com为例子

本地缓存和hosts文件

检查本地DNS缓存和hosts文件,如果其中有"baidu.com"的解析记录,则直接使用相应的IP地址

                                                    图1 本地dns缓存
                                                              图二本地hosts文件

mDNS和LLMNR

如果本地缓存和hosts文件中没有找到,系统可能使用mDNS(MacOS和Linux)或LLMNR(Windows)在局域网中进行主机名解析。

NBT-NS

如果mDNS和LLMNR都没有找到,系统可能尝试使用NBT-NS(NetBIOS Name Service),在Windows网络中解析NetBIOS主机名。

路由器广播

如果上述步骤都没有成功,系统可能向本地网络的路由器发起广播请求,寻找" baidu.com"的IP地址。

Root域名服务器

如果局域网中的解析仍然失败,系统将发起DNS查询请求,向根域名服务器发起查询,获取.com顶级域的权威DNS服务器地址。

顶级域名服务器

系统将向.com顶级域名服务器发起查询,获取" baidu.com"的权威DNS服务器地址。
对" baidu.com ."的顶级DNS服务器的信息进行了查询。这里列出了"Baidu"公司的权威DNS服务器( ns1.baidu.com .、 ns2.baidu.com .等)。

目标域名服务器

系统将向" baidu.com"的权威DNS服务器发起查询,获取" baidu.com"的IP地址。
并且是一个别名的记录

DNS解析完成

在上述DNS查询中,已经获取了目标域名(例如,www.baidu.com)对应的IP地址。

操作系统发起TCP连接:

浏览器或其他网络应用通常会通过操作系统提供的套接字接口来发起TCP连接。操作系统根据DNS解析得到的IP地址,向目标服务器发起TCP连接请求。

TCP三次握手: TCP连接的建立采用经典的三次握手过程:

  • 第一步(客户端向服务器发送SYN): 客户端发送一个TCP报文,其中包含SYN(同步)标志,表示请求建立连接。
  • 第二步(服务器收到SYN并发送ACK和SYN): 服务器接收到客户端的SYN后,发送一个带有ACK(确认)和SYN标志的报文,表示同意建立连接。
  • 第三步(客户端收到ACK和SYN): 客户端接收到服务器的ACK和SYN后,发送一个带有ACK标志的报文,表示连接建立成功。

TCP连接建立

当三次握手完成后,TCP连接建立成功,双方可以开始进行数据传输。

HTTP请求

一旦TCP连接建立成功,浏览器向服务器发送HTTP请求,包括请求的资源路径等信息。

服务器处理请求:

服务器接收到请求后,根据请求的资源路径等信息,处理并生成相应的HTTP响应。

HTTP响应:

服务器将响应内容通过TCP连接发送给浏览器。

浏览器渲染:

浏览器接收到HTTP响应后,解析并渲染页面,呈现给用

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

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

相关文章

129基于matlab的粒子群算法、遗传算法、鲸鱼算法、改进鲸鱼算法优化最小二乘支持向量机(lssvm)的gam正则化参数和sig2RBF函数的参数

基于matlab的粒子群算法、遗传算法、鲸鱼算法、改进鲸鱼算法优化最小二乘支持向量机(lssvm)的gam正则化参数和sig2RBF函数的参数。输出适应度曲线,测试机和训练集准确率。程序已调通,可直接运行。 129 matlabLSSVM优化算法 (xiaoh…

10款强大的iPhone微信恢复软件:轻松恢复丢失的微信数据

微信已成为近年来最受欢迎的消息和社交媒体平台之一。它在全球拥有数百万用户,让人们能够联系、分享时刻并进行各种交易。随着微信的普及,对全面恢复解决方案的需求从未如此之大。本文探讨了专为 iPhone 用户设计的十款顶级微信恢复软件选项。每个软件都…

Copy of 一喷就能清新口气,更简单的漱口伴侣

平时日常维护口腔健康,除了要按时刷牙之外,每日清洁漱口也很有必要,这时使用专业漱口水效果更佳。平时我都是使用超市里常见的传统液体漱口水,偶然听牙医朋友说起市面上还有一款新的漱口云泡也很好用。就是目前我正在使用的这款清…

向数据库添加数据出现java.lang.NullPointerException

问题描述 向数据库中新增一条数据,出现 controller: Autowiredprivate ArticleService articleService;PostMappingpublic Result add(RequestBody Article article){articleService.add(article);return Result.success();} Service: Ser…

【STM32】HAL库的STOP低功耗模式UART串口唤醒BUG,第一个接收字节出错的问题(尚未解决,疑难杂症)

【STM32】HAL库的STOP低功耗模式UART串口唤醒BUG,第一个接收字节出错的问题(尚未解决,疑难杂症) 文章目录 BUG复现调试代码推测原因及改进方案尝试中断时钟供电外设唤醒方式校验码硬件问题 切换到STOP0模式尝试最终结论和猜想附录…

计算机网络-2019期末考试解析

【前言】 从内容上看比较像计算机网络课程了,先做了。 一.填空选择题(共 20 分,每空 1 分) 1 、双绞线由两根相互绝缘的、绞合成均匀的螺纹状的导线组成,下列关于双绞线的叙述,不正确的是___ __…

【SAP-PP】生产订单导入问题--完成日期向前推了一天

问题描述: 在执行BAPI_PRODORD_CREATE生产订单导入的时候,发现填写入模板中的基本完成日期是12月31日,但是到具体工单时变成了12月30日 截图说明: 感觉很神奇,咋一看,真的是日期提前了一天,de…

Next.js 学习笔记(六)——缓存

缓存 Next.js 可通过缓存渲染工作和数据请求来提高应用程序的性能并降低成本。本页将深入介绍 Next.js 缓存机制、可用于配置这些机制的 API 以及它们之间的交互方式。 需要知道:本页将帮助你了解 Next.js 的工作原理,但这并不是使用 Next.js 提高工作效…

1 月 21 日,三件事儿,线上不见不散丨社区活动

1 月 21 日,三件事儿,线上不见不散: RTE 开发者社区,三位联合主理人正式亮相,分享对于行业、社区与开发者人才发展的思考;「实时互动行业人才洞察2024」正式发布,关于行业、人才与生态的分析与…

【Python学习】Python学习13-日期和时间

目录 【Python学习】Python学习13-日期和时间 前言通过time 获取时间戳时间元组获取当前时间,格式化时间格式化时间转换python中时间日期格式化符号获取日历Time 模块日历(Calendar)模块其他模块参考 文章所属专区 Python学习 前言 本章节主…

Macos下修改Python版本

MacOS下修改Python版本 安装 查看本机已安装的Python版本:where python3 ~ where python3 /usr/bin/python3 /usr/local/bin/python3 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3如果没有你想要的版本,去python官网下载安装包。…

【金猿案例展】黑龙江省粮食质量安全监测和技术中心——荣联助力黑龙江粮食仓储智能化升级...

‍ 荣联科技集团案例 本项目案例由荣联科技集团投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新服务企业榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 近年来,国家粮食和物资储备信息化工作取得了长足发展,但与新时…

C++ Primer 6.1 函数基础

函数的形参列表 int func(int v,int v2) {int v,v2;//!错误 } 函数返回类型 不能是数组和函数(两者都不接受对拷),但可以是指针 局部对象 形参和函数体内部的变量称为局部变量,仅在函数内部可见,隐藏外部…

行为型设计模式——策略模式

策略模式 策略模式非常简单,只需要将策略或者某个算法定义成一个类,然后传给需要使用的对象即可。**定义:**该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算…

【c++】list迭代器失效问题

目录 一、list iterator的使用 二、list的迭代器失效 一、list iterator的使用 对于list的迭代器的用法,可以将它看做一个指针(实际要更加复杂)来使用,该指针指向list中的一个节点。 【注意】 (1)begin和end为正向迭代器&#x…

【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)

目录 问题描述 思路分析 数据结构构建部分 计算部分 代码实现 结果测试 此问题解决方法不唯一,这里介绍的是一种使用数组和循环实现的简单办法 问题描述 思路分析 问题的要求是输入一个日期,计算这是当年的第几天——要解决这个问题,逻…

记录汇川:H5U与Fctory IO测试8

主程序: 子程序: IO映射 子程序: 出料程序 子程序: 重量程序 子程序: 自动程序 Fctory IO配置: HMI配置 实际动作如下: Fctory IO测试8

SPI接口协议

SPI接口协议 SPI(Serial Peripheral Interface)是由Motorola公司定义的接口协议标准,串行外设接口(SPI)是微控制器和外围IC(如传感器、 ADC、 DAC、移位寄存器、 SRAM等)之间使用最广泛的接口之一。SPI是一种同步、全双工、主从式接口&#x…

智慧农庄电商小程序(商城系统)

文章目录 项目简介商城功能项目结构技术选型后端使用的技术前端使用的技术 程序体验 项目简介 基于当前流行技术组合的前后端分离商城系统: SpringBoot2JpaMybatisPlusSpringSecurityjwtredisVue的前后端分离的商城系统, 包含商城、拼团、砍价、商户管理…

redis stream restTemplate消息监听队列框架搭建

整体思路 1. pom增加redis依赖&#xff1b; 2. 消息监听器&#xff0c;实现StreamListener接口&#xff0c;处理消息到达逻辑&#xff1b; 3. 将消息订阅bean及监听器注册到配置中&#xff1b; 1. pom <?xml version"1.0" encoding"UTF-8"?> <…