域名、IP、DNS、Hosts、Nginx

news2024/9/30 3:24:59

在这里插入图片描述
先从最熟悉,也是最表层的域名ip说起:
比如你和我,你叫张三,我叫李四,名字类似于域名。你在网吧玩,很多太多台电脑各自都有个座位号,座位号就类似于ip,我想去网吧找你去玩电脑,光知道名字,但不知道你位置,所以,就需要DNS。

DNS
DNS就是说ip一长串,不好记啊,想个办法弄个简单名字,所以他的主要功能就是把域名转换成具体的ip地址,就是说找你位置,我光知道名字不行,我还得找到具体的座位ip才行。
域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
注意:这域名可以和ip地址绑定,一个ip地址可以被多个域名绑定

HOSTS
再说hosts,这个是个本地域名解析文件,不管你是windwos还是linux,那都是有的,没有就自己建一个。

windows一般在:C:/Windows/System32/drivers/etc/hosts

Linux的hosts文件路径一般:/etc/hosts

范例:

127.0.0.1 localhost

127.0.0.1 www.test.com

这个文件其实也是配置了ip和域名之间的映射关系的数据库,有啥作用呢,就是说,本地要是有这个文件,就优先用这个文件中的配置去解析,如果没有,那就通过nds解析。

注意:hosts文件只能配置ip和域名的映射关系,但是不能配置端口号,默认访问80端口

Nginx
因为要解决端口问题,这里就得使用大名鼎鼎的反向代理软件:Ngin,至于Nginx是什么,怎么安装配置,可以在我以前的文章查看或者度娘搜索。

简单的范例:

//nginx.conf

server {

listen 80; //监听的端口

server_name test.com; //监听的域名

proxy_set_header Cookie $http_cookie; //头信息

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {

proxy_pass http://localhost:8080; //代理转发,所有到test.com 80端口访问的请求,都会转发到本地8080端口处理

}

}

------------------------------------------------------------- 重点 -------------------------------------------------------
在这里插入图片描述

域名结构:
http://www.sina.com.cn./

http://主机名.二级域. 顶级域。根域/

树状结构最顶层称为根域,用“."表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有,但根服务器,无法承担庞大的负载,采用“委派"机制,在根域下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器,如将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的域名解析请求,都会转发给com域服务器,同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机。

问题:
当我们在浏览器输入一个 URL 地址时,浏览器要向这个 URL 的主机名对应的服务器发送请求,就得知道服务器的 IP,对于浏览器来说,DNS 的作用就是将主机名转换成 IP 地址。

DNS域名解析流程
DNS 域名解析,简单地说就是把域名翻译成 IP 地址。例如:把 www.baidu.com 这个域名翻译成对应 IP 220.181.38.251,这里只是举个例子
在这里插入图片描述
域名解析流程:(以Chrome浏览器为例)

① Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有https://www.xxx.com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。

注:我们怎么查看Chrome自身的缓存?可以使用 chrome://net-internals/#dns 来进行查看

② 如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束.

注:怎么查看操作系统自身的DNS缓存,以Windows系统为例,可以在命令行下使用 ipconfig /displaydns 来进行查看

③ 如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。

④ 如果在hosts文件中也没有找到对应的条目。浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器(一般是电信运营商提供的,也可以使用像Google提供的DNS服务器)发起域名解析请求(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。
如果没有找到对应的条目,则运营商的DNS代我们的浏览器发起迭代DNS解析请求,它首先是会找根域的DNS的IP地址(这个DNS服务器都内置13台根域的DNS的IP地址),找到根域的DNS地址,就会向其发起请求(请问www.xxx.com这个域名的IP地址是多少啊?),根域发现这是一个顶级域com域的一个域名,于是就告诉运营商的DNS我不知道这个域名的IP地址,但是我知道com域的IP地址,你去找它去,于是运营商的DNS就得到了com域的IP地址,又向com域的IP地址发起了请求(请问www.xxx.com这个域名的IP地址是多少?),com域这台服务器告诉运营商的DNS我不知道www.xxx.com这个域名的IP地址,但是我知道xxx.com这个域的DNS地址,你去找它去,于是运营商的DNS又向xxx.com这个域名的DNS地址(这个一般就是由域名注册商提供的,像万网,新网等)发起请求(请问www.xxx.com这个域名的IP地址是多少?),这个时候xxx.com域的DNS服务器一查,诶,果真在我这里,于是就把找到的结果发送给运营商的DNS服务器,这个时候运营商的DNS服务器就拿到了www.xxx.com这个域名对应的IP地址,并返回给Windows系统内核,内核又把结果返回给浏览器,终于浏览器拿到了www.xxx.com 对应的IP地址,该进行一步的动作了。

注:一般情况下是不会进行以下步骤的

如果经过以上的4个步骤,还没有解析成功,那么会进行如下步骤(以下是针对Windows操作系统):

⑤ 操作系统就会查找NetBIOS name Cache(NetBIOS名称缓存,就存在客户端电脑中的),那这个缓存有什么东西呢?凡是最近一段时间内和我成功通讯的计算机的计算机名和Ip地址,就都会存在这个缓存里面。什么情况下该步能解析成功呢?就是该名称正好是几分钟前和我成功通信过,那么这一步就可以成功解析。

⑥ 如果第⑤步也没有成功,那会查询WINS 服务器(是NETBIOS名称和IP地址对应的服务器)

⑦ 如果第⑥步也没有查询成功,那么客户端就要进行广播查找

⑧ 如果第⑦步也没有成功,那么客户端就读取LMHOSTS文件(和HOSTS文件同一个目录下,写法也一样)

如果第八步还没有解析成功,那么就宣告这次解析失败,那就无法跟目标计算机进行通信。只要这八步中有一步可以解析成功,那就可以成功和目标计算机进行通信。

另外注意:
从代码层面,实现域名到ip解析的环节如下图:
在这里插入图片描述

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

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

相关文章

RK3568平台开发系列讲解(驱动基础篇)mmap系统调用详解

🚀返回专栏总目录 文章目录 一、什么是mmap二、mmap映射类型2.1、私有匿名映射2.2、私有文件映射2.3、共享文件映射2.4、共享匿名映射沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将详细介绍mmap系统调用。 一、什么是mmap mmap/munmap函数是用户空间中常用的…

AttributeError: ‘LTP‘ object has no attribute ‘sent_split‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

PCB阻抗误差控制在5%,究竟有多难?

众所周知,阻抗控制是我们做高速设计最基本的原则。目前常规的板厂会把阻抗控制在10%的误差,不少朋友就会有疑问,为什么是10%?理论上误差肯定是越小越好,所以为什么不能进一步的把常规控制能力推到8%,甚至5%…

【Elastic (ELK) Stack 实战教程】10、ELK 架构升级-引入消息队列 Redis、Kafka

目录 一、ELK 架构面临的问题 1.1 耦合度过高 1.2 性能瓶颈 二、ELK 对接 Redis 实践 2.1 配置 Redis 2.1.1 安装 Redis 2.1.2 配置 Redis 2.1.3 启动 Redis 2.2 配置 Filebeat 2.3 配置 Logstash 2.4 数据消费 2.5 配置 kibana 三、消息队列基本概述 3.1 什么是…

DAP-seq技术鉴定全基因组水平上的ZjVND7靶基因,揭示酸枣全基因组复制在调节木质部导管分化和耐旱性中的作用

全基因组复制对生物体的影响是多方面的。全基因组加倍后,基因剂量效应、修饰的互作调控、快速遗传和表观遗传的修饰和变化,都会对基因组产生强烈影响,进而影响基因表达,最终导致形态、生理和适应性等性状方面的差异。在同源多倍化…

247个Python实战案例:从入门到进阶(含源码)

Python是目前最热门的编程语言之一。由于其可读性和对初学者的友好性,已被广泛使用。 那么要想学会并掌握Python,可以实战的练习项目是必不可少的。 这247个实战案例让你告别枯燥,60秒学会一个小例子,系统学习Python,从…

【硬件外设使用】——DAC

【硬件外设使用】——DACDAC基本概念DAC使用方法pyb.dacmachine.dacDAC可用的传感器DAC基本概念 DAC是数字模拟转换器(Digital to Analog Converter)(的缩写,是一种将数字信号转换为模拟信号的电路。 它的作用是将数字信息转换为…

记录 vue-cli 安装过程

1. VueCli CLI 是 Commond-Line Interface 的缩写 如果开发大型项目,肯定需要考虑代码目录结构、项目结构和部署、热加载、代码单元测试等事情,那么你必然需要使用 VueCLI,使用 VueCLI 可以快速搭建 vue 开发环境以及对应的 webpack 配置。 …

LCA 树上差分(点差分 , 边差分)

文章目录1. LCA(求最近公共父节点 , 求树上两点最短距离)先求节点深度 , 处理 fa 数组 , 然后做LCA过程板子(有根树 , 无根树默认 1 为根即可)1.Dis(求树上两点最近距离)2.聚会树上差分用来处理树上的一些区间操作 , 一…

ElasticSearch配置SearchGuard

一、安装ElasticSearch6.4.3 下载ElasticSearch6.4.3 1、解压到/usr/local/elasticsearch-6.4.3 tar -zxvf elasticsearch-6.4.3.tar.gz 2、修改配置文件elasticsearch.yml cluster.name: searchguard_demo node.name: node123 network.host: 0.0.0.0 2、创建linux用户es…

百度搜索去广告及高级用法

更高级的B站视频 6个百度精准搜索的技巧!还可以屏蔽广告哦~(搜索指令教程)_哔哩哔哩_bilibili 1.去广告最简单的指令 搜索问题之后 空格 之后-advertisement 2.精确搜索 我们经常在搜索比较长的短句的时候会发现,百度会把…

密码学|DES加密算法|学习记录

DES简介 DES属于对称密码算法中的分组加密算法 密钥一共64bit,其中56位参与运算,其余8bit为校验位(8 16 24 32 40 48 56 64) n个64位明块经过加密后得到的n个64位密文块加在一起就是密文 DES一般步骤 IP置换 : IP置…

【ChatGPT】ChatGPT掀起AIGC与AI浪潮

文章目录 前言 一、我为什么要这么做? 二、AI与AIGC 1.AI是什么? 2. AIGC是什么? 2.1 AIGC的优势 2.2 AIGC的劣势 3. AI与AIGC的区别 三、ChatGPT 四、应对措施和改变 1. 找到自己的风格 2. 学习AI的优点 3. 创新型方法 总结​​​​​​​ 前…

Mybatis分页查询——四种传参方式

目录 一、顺序传参 1. 持久层接口方法 2. UserMapper.xml映射文件新增标签 3. 新增测试方法 4. 运行结果 二、param传参 1. 持久层接口方法 2. UserMapper.xml映射文件新增标签 3. 新增测试方法 4. 运行结果 三、自定义POJO类传参 1. 自定义POJO类 2. 持久层接口方…

深度学习中的学习率设置技巧与实现详解

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

【计算机网络】第二章 应用层 3

Email应用的特性 异步应用,方便用户 提供一对多通信 价格低廉 主要包含: o 用户代理(user agents,UA) o 邮件服务器(mail servers) o 邮件传输协议:SMTP o 邮件访问协议:POP3或IMAP 用户代理 o 客户端程序 o 提供编辑、发…

【Linux】认识协议

🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…

【Java 编程语言】——JDK 安装

JDK 安装 文章目录JDK 安装一、JDK的选择与下载1.JDK的选择2.JDK的下载二、Java环境变量的配置一、JDK的选择与下载 1.JDK的选择 目前的JDK的版本更新很快,已经到了JDK20了。但是对于普通的开发或者学习人员来说,选择较为稳定的JDK是更为合适的选择。当…

干货丨AI常见问题及处理方法

AI软件在运行时经常会容易报错或者操作不成功,问题及处理方法分享给大家 01 当AI中色板里面没有颜色可选 原因:将图片素材直接以新窗口打开,所以显示的是位图文件。 解决办法:重新新建文件,然后将图片拖入新建文件中…

让Ai来告诉你Linux应该怎么学

今天在slack上添加了Claude,他属于ChatGPT的最强竞品,支持中文,体验非常舒适,也并不像国内某些自建AI那样弱智。 至于Linux要怎么学,就让Claude来回答吧。 你能告诉我Liunx应该怎么学吗? 学习Linux,我有…