Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

这篇具有很好参考价值的文章主要介绍了Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解析阶段详细流程说明

步骤 说明
浏览器输入:http://www.baidu.com
查找浏览器自身 DNS 缓存:chrome://net-internals/#dns
Windows 系统:查找系统 hosts 文件、Linux 系统:查找 /etc/hosts 文件
浏览器就会发起一个 DNS 系统调用(向本地域名服务器发起域名解析请求)
本地域名服务器 LDNS 替我们的浏览器发起 迭代 DNS 解析请求
本地域名服务器把查询 IP 结果返回客户端(浏览器)

查找浏览器自身 DNS 缓存介绍

在 chrome 浏览器的 url 地址栏输入如下地址

chrome://net-internals/#dns

访问页面结果

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

Resolved lP addresses of “www.baidu.com”:[“112.80.248.75”, “112.80.248.76”].
No data on which protocols are supported.

Host resolver cache

主机解析器缓存(点击 Clear host cache 即可清除缓存记录)

将其一对应 IP 进行直接请求访问

把 112.80.248.75 在浏览器打开:默认 80 端口(访问结果如下)

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

Window 系统查找 hosts 文件

打开路径

C:\Windows\System32\drivers\etc

etc 目录展示

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

里面会有一个 hosts 文件,右击用笔记本打开。在最下面添加如下格式:IP + 空格 + 网址

例如 127.0.0.1 www.baidu.com,那么你访问百度的时候 其实访问的是127.0.0.1(自己电脑的)

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

127.0.0.1 www.baidu.com

我们使用 Golang 开启一个 127.0.0.1 的 server 进程,验证

package main

import ("net/http")

func handle(w http.ResponseWriter, req *http.Request) {
	w.Write([]byte("hello world"))
}

func main() {
	http.HandleFunc("/", handle)
	http.ListenAndServe("127.0.0.1:80", nil)
}

因为默认端口是 80,所以可以省略端口号,直接访问 127.0.0.1 IP,访问结果展示:

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍
因为我们在 window 的 hosts 文件中配置了 127.0.0.1 www.baidu.com,现在我们进行验证上述

访问 www.baidu.com 域名地址(结果是 百度搜索页 结果)

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

问题原因

为什么不是出现不是 hello world,结果是 百度搜索页 呢?

原因:浏览器先查找自身的 DNS 缓存,没有查找到结果才会去 Window 下 hosts 文件查找,所以我们先用进行删除 浏览器 Dns 缓存。

chrome://net-internals/#dns 中 点击 clear host cache (在 # 查找浏览器自身 DNS 缓存介绍 提到)

验证 127.0.0.1 www.baidu.com

# Window 系统查找 hosts 文件 上节中进行修改 Window 中 hosts 文件,并且 删除了 chrome 浏览器的 host cache 缓存,然后继续进行尝试。

访问 www.baidu.com 域名地址(这次更加直接,都直接无法访问此网站了)

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

分析原因:我们双击 chrome 浏览器的 url 地址,展示结果如下:

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍
这是因为 chrome 浏览器的 域名安全策略 ?

有些网址 http 协议和 https 协议是两个服务,有时候需要访问 http 地址,但 chrome 会默认转成 https 请求地址,而且会不停的跳转,导致我们访问不到 http 的网址,非常的烦人。

如何解决?

在 chrome 浏览器地址输入如下地址:

chrome://net-internals/#hsts

在最下面的 Delete domain security policies 中填写 www.baidu.com 地址,然后点击 Delete

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

继续访问 www.baidu.com 域名地址(访问成功,结果是 hello world)

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

继续测试:接下来删除 hosts 文件中 127.0.0.1 www.baidu.com,然后继续访问 www.baidu.com 域名地址,能够发现,结果是 hello world

原因:Chrome 浏览器先查找自身的 DNS 缓存,查找到结果了,不会再去 Window 下 hosts 文件查找域名和 IP 的映射关系。

所以我们如果删除 chrome DNS 缓存,再去访问 www.baidu.com,先查找自身的 DNS 缓存没有查找结果,再去 Window 的 hosts 文件中 没有查找结果,接下来查找 ···(后面的小节会提到)直到映射百度搜索页。

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

本地域名服务器解析(LDNS)

如果在 hosts 文件中也没有找到对应的条目,浏览器就会发起一个 DNS 系统调用,就会向本地配置的首选 DNS 服务器(LDNS一般是电信运营商提供的,也可以使用像 Google 提供的 DNS 服务器)发起域名解析请求(通过的是 UDP 协议向 DNS 的 53 端口发起请求,这个请求是递归的请求,也就是运营商的 DNS 服务器必须得提供给我们该域名的 IP 地址)。

本地电脑网络设置中的 DNS 服务器,一般是自动设置好的,自动设置的 DNS 地址一般是管理 wifi 路由器的 IP 地址;当然也可以手动设置,比如常见的 Google DNS 服务器 8.8.8.8

本地域名服务器

在我们的网络配置中都会有“DNS 服务器地址”这一项,这个地址就用于解决前面所说的如果两个过程无法解析时要怎么办,操作系统会把这个域名发送给这里设置的 LDNS,也就是本地区的域名服务器。

这个 DNS 通常都提供给你本地互联网接入的一个 DNS 解析服务。例如你是在学校接入互联网,那么你的 DNS 服务器肯定在你的学校。例如你是在一个小区接入互联网的,那这个 DNS 就是提供给你接入互联网的应用提供商,即电信或者联通,也就是通常所说的 SPA,那么这个 DNS 通常也会在你所在城市的某个角落,通常不会很远。

这个专门的域名解析服务器性能都会很好,它们一般都会缓存域名解析结果,当然缓存时间是受域名的失效时间控制的,一般缓存空间不是影响域名失效的主要因素。大约 80% 的域名解析都到这里就已经完成了,所以 LDNS 主要承担了域名的解析工作。

运营商的 DNS 服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。

如何查看本地 DNS 服务器?

对于本地 DNS 服务器地址,Windows 系统使用命令 ipconfig 就可以查看,在 Linux 和 Mac 系统下,直接使用命令 cat /etc/resolv.conf 来查看LDNS服务地址。

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

查看配置信息:请点击电脑所连接 WiFi 的 属性即可查看网络属性信息(例如如下所示)

SSID:	TP-LINK_hh
协议:	Wi-Fi 4 (802.11n)
安全类型:	WPA2-个人
网络频带:	2.4 GHz
网络通道:	6
链接速度(接收/传输):	300/300 (Mbps)
IPv4 地址:	192.168.1.106
IPv4 DNS 服务器:	172.16.4.4 210.29.152.xxx(前一个是本地局域网,后一个是公网 IP)

根域名服务器解析(Root Server)

域名服务器 4 种不同的类型

根域名服务器

根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其 IP 地址。因特网上共有 13 个不同 IP 地址的根域名服务器。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个 DNS 客户最近的一个根域名服务器。这就加快了 DNS 的查询过程,同时也更合理地利用了因特网的资源。

顶级域名服务器

这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的 IP 地址)。

权限域名服务器

这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与 IP 地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。

本地域名服务器

本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

解析流程图示

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍

查询根域名服务器 (Root DNS)

如果LDNS没有找到对应的条目,则由本地域名服务器替我们的浏览器发起 迭代 DNS 解析请求。它首先是会找根域的 DNS 的 IP 地址(这个 DNS 服务器都内置 13 台根域的 DNS 的 IP 地址),找到根域的 DNS 地址,就会向其发起请求。

例如:请问 www.baidu.com 这个域名的 IP 地址是什么啊?

根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址,gTLD 是国际顶级域名服务器,如 .com、.cn、.org 等,全球只有 13 台左右。

根域发现这是一个顶级域 com 域的一个域名,于是就告诉本地域名服务器我不知道这个域名的 IP 地址,但是我知道 com 域的 IP 地址,让本地域名服务器去查找它。

查询顶级域名服务器 (Top Level DNS)

本地域名服务器 (Local DNS Server) 再向上一步返回的 gTLD 服务器发送请求。于是本地域名服务器就得到了 com 域的 IP 地址,再向 com 域的 IP 地址发起了请求(请问 www.baidu.com 这个域名的 IP 地址是什么?)

com 域这台服务器告诉本地域名服务器我不知道 www.google.com 这个域名的IP地址,但是我知道 baidu.com 这个域的 DNS 地址,让本地域名服务器去查找它。

查询权威域名服务器 (Authoritative DNS)

接受请求的 gTLD 服务器查找并返回此域名对应的 Name Server 域名服务器的地址,这个Name Server通常就是注册的域名服务器。

例如:在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。

本地域名服务器 (Local DNS Server) 向 google.com 这个域名的 DNS 地址(这个一般就是由域名注册商提供的,像万网,新网等)发起请求(请问 www.baidu.com 这个域名的IP地址是什么?)

这个时候 baidu.com 域的 DNS 服务器一查,果真在我这里,于是就把找到的结果发送给本地域名服务器,这个时候本地域名服务器就拿到了 wwwbaidu.com 这个域名对应的 IP 地址。最后本地域名服务器把结果返回给用户浏览器的主机。

DNS 迭代查询 和 递归查询

DNS域名解析过程:域名解析包含两种查询方式,分别是递归查询和迭代查询。

递归查询

递归查询是一种DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍
迭代查询

DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的 DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止。

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而 DNS 服务器到 DNS 服务器的查询是迭代查询。

DNS 迭代查询 和 递归查询 综合图示

Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍文章来源地址https://www.toymoban.com/news/detail-452376.html

到了这里,关于Chrome 浏览器获取网址映射 IP 地址 DNS 解析过程详细介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 删除安装Google Chrome浏览器时捆绑安装的Google 文档、表格、幻灯片、Gmail、Google 云端硬盘、YouTube网址链接(Mac)

        Mac mini操作系统,安装完 Google Chrome 浏览器以后,单击 启动台 桌面左下角的“显示应用程序”,我们发现捆绑安装了 Google 文档 、 表格 、 幻灯片 、 Gmail 、 Google 云端硬盘 、 YouTube ,一个个单击打开,发现都是网址链接。 那如何删除这些网址连接呢?操作步骤如下:

    2024年02月08日
    浏览(52)
  • 网站是如何进行访问的?在浏览器地址栏输入网址并回车的一瞬间到页面能够展示回来,经历了什么?

    这个问题是检验web和计网学习程度的经典问题。 网站访问流程: 1) 在输入完一个域名之后,首先是检查浏览器自身的DNS缓存是否有相应IP地址映射,如果没有对应的解析记录,浏览器会查找本机的hosts配置文件(一般是C:WindowsSystem32driversetchosts,这个文件是用于在操作系统

    2024年02月14日
    浏览(55)
  • IP-GUARD使用Chrome/edge浏览器出现不兼容的问题

    使用Chrome/edge浏览器出现不兼容的问题,所以做以下通报: 一、Chrome/edge浏览器不兼容 1、问题概述:Google Chrome浏览器及Microsoft Edge Chromium浏览器在78、79版本在 Win 10系统中启用了渲染器代码完整性保护功能(Renderer Code Integrity Protection,防止未经签名的模块被加载到 Chrome浏览

    2024年02月03日
    浏览(156)
  • Java爬虫 通过Chromedriver+Chrome浏览器+selenium获取页面的请求和响应(未完全实现)

    因为最近看到一个软件可以实现网页的识别,自动导入网页的内容,感觉这个功能很厉害(真心佩服设计那个软件的人)。但不清楚这个软件的网页识别的实现,也没有接触过相关的技术,就上网搜索并学习一些相关的技术,所以有了这篇文章。但是只能获取简单的请求,一

    2024年02月13日
    浏览(67)
  • 学习若依框架----之----获取登录登录系统、ip、浏览器信息

    若依里面,创建登录日志是根据异步任务进行新增,设置的有一个延时任务,登录之后,创建登录日志。本文章是非异步任务新增。大概思路是:在登录、注册、退出登录完成返回之前,调用日志工具,进行新增日志操作。 备注: 重点是日志工具逻辑,先判断是不是内网,

    2023年04月15日
    浏览(134)
  • C# 调用浏览器打开网址

    调用方法体 打开浏览器帮助类  

    2024年02月15日
    浏览(46)
  • 学习selenium+python使用 XPath 表达式来实现找到目标元素时智能封装等待,执行测试代码启动Chrome浏览器后,地址栏只显示data;

    学习使用 XPath 表达式来实现找到目标元素时智能封装等待 执行测试代码启动Chrome浏览器后,地址栏只显示 data; 看了好久找到了替代启动浏览器的方法:换成 self.driver.get(\\\'http://localhost:8080\\\') 就好了 然后开始琢磨两者的区别: 使用 self.driver.get(\\\'http://localhost:8080\\\') 时,driver 是

    2024年01月17日
    浏览(70)
  • 解决浏览器自动将http网址转https

    突然发现在内网环境下,本应该能访问的内网ip,现在都访问不了。检查后发现原本都是http协议头的网址被浏览器强制使用https连接,因此浏览器访问不了未添加ssl认证的http网址。 解决方案: 方法一:在浏览器安全设置里添加可以显示不安全内容的网址,并将网址改为http。

    2024年02月12日
    浏览(114)
  • Chrome浏览器的复用

    1.当运行 selenium 自动化时,要求已经登录才能才做。这个时候我们可以提前登录,运行脚本的时候复用已经打开的浏览器。 2.当调试了某个步骤很多的测试用例,前面N-1步已经成功,只需调试第N步。如果从头开始运行脚本,耗时过多,这时我们可以直接复用浏览器只操作第

    2023年04月09日
    浏览(46)
  • Chrome 浏览器远程调试

    打开浏览器的远程调试 Chrome浏览器的快捷方式,右键选择“属性”,在目标一栏加上 --remote-debugging-port=9222 ,后面的端口可以自己定义,完成之后启动浏览器。 我们拿另外一个浏览器测试下 打开新版的edge浏览器,地址栏输入 edge://inspect/#devices ,如果是chrome则需要输入 chr

    2024年02月13日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包