DNS和ICMP

devtools/2024/9/23 20:01:18/

DNS

DNS(Domain Name System )

DNS 是一整套从域名映射到 IP 的系统

关于DNS背景

TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 . 但是 IP 地址不
方便记忆 .
于是人们发明了一种叫主机名的东西 , 是一个字符串 , 并且使用 hosts 文件来描述主机
名和 IP 地址的关系 .

最初 , 通过互连网信息中心 (SRI-NIC) 来管理这个 hosts 文件的 .
如果一个新计算机要接入网络 , 或者某个计算机 IP 变更 , 都需要到信息中心申
请变更 hosts 文件 .
其他计算机也需要定期下载更新新版本的 hosts 文件才能正确上网 .

这样太麻烦了,于是就有了DNS系统

一个组织的系统管理机构 , 维护系统内的每个主机的 IP 和主机名的对应关系 .
如果新计算机接入网络 , 将这个信息注册到数据库中 ;
用户输入域名的时候 , 会自动查询 DNS 服务器 , DNS 服务器检索数据库 , 得到对应的IP地址
至今 , 我们的计算机上仍然保留了 hosts 文件 . 在域名解析的过程中仍然会优先查找
hosts 文件的内容 .

cat /etc/hosts

 介绍域名

 主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称

比如:www.baidu.com  ,其中

com: 这个是一级域名。 .com表示这是一个企业域名,同级的还有 .org (非盈利组织) ,.net(网络运营商),或者 .edu(教育组织)

baidu:这是二级域名。一般是公司名

www:这只是一个习惯用法。

域名解析过程 

以浏览器或者app也就是客户端,来请求www.baidu.com为例。

1:用户拿到域名想访问百度,首先会拿着域名去访问本地的DNS服务器,以此来获取百度的IP地址是多少。如果本地服务器缓存了这个域名和IP的映射关系,那么在这一步就直接返回给用户了,用户就可以拿着IP地址去访问百度了。

2:如果在本地DNS服务器没有找到,那么本地服务器会将这个域名转发到根服务器

3:根服务器经过查询,发现这是由.com服务器进行管理的,于是返回相应让本地服务器去.com服务器询问。

4:接着,本地服务器就又拿着域名向.com服务器发起请求。

5:在.com服务器中解析这个域名,发现是由baidu.com服务器管理的,所以返回响应,让本地服务器再去baidu.com的服务器进行询问。

6:继续拿着域名请求 baidu.com。

7:最终拿到域名对应的IP地址。

8:将IP地址返回给用户。

我们发现这其实是一个树状结构

如上图所示,域名结构是树状结构,树的最顶端代表根服务器,根的下一层就是由我
们所熟知的 .com .net .cn 等通用域和 .cn .uk 等国家域组成,称为顶级域。网上注
册的域名基本都是二级域名,比如 http://baidu.com http://taobao.com 等等二级域
名,它们基本上是归企业和运维人员管理。接下来是三级或者四级域名。

使用dig工具分析域名

 如果没有安装dig,可以先进行安装

Ubuntu下进行安装:

sudo apt updatesudo apt install bind9-utils

比如说解析百度域名

这里也解析出来了百度的IP地址,但是百度做了特殊处理,以前可以直接用这个IP地址来访问百度,但是现在不行了。 

关于这个结果的解释:

1.开头位置是 dig 指令的版本号
2. 第二部分是服务器返回的详情, 重要的是 status 参数 , NOERROR 表示查询成功
3. QUESTION SECTION 表示要查询的域名是什么
4. ANSWER SECTION 表示查询结果是什么 . 这个结果先将 www.baidu.com 查询
成了 www.a.shifen.com, 再将 www.a.shifen.com 查询成了两个 ip 地址 .
5. 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等 .

 ICMP协议

ICMP协议是网络层的协议。它不是用来传递用户数据的,而是用来进行网络问题定位,状态诊断的。

位置结构:

ICMP虽然和IP协议同为网络层,但是它是在IP协议上面的,ICMP报文也要把自己打包封装成IP报文,然后再向下继续封装。

另外ICMP它提供了一些接口给应用层,也就是说用户是可以直接绕过传输层使用ICMP的。比如我们使用的Ping命令就是。

ICMP的功能:

确认 IP 包是否成功到达目标地址 .
通知在发送过程中 IP 包被丢弃的原因 .
ICMP 也是基于 IP 协议工作的 . 但是它并不是传输层的功能 , 因此人们仍然把它
归结为网络层协议 ;
ICMP 只能搭配 IPv4 使用 . 如果是 IPv6 的情况下 , 需要使用 ICMPv6;

 

 ICMP允许距离故障事发地最近的主机设备(一般是最近的路由器)返回应答。

ICMP报文格式:
 

ICMP报文一般分两类:

1.通知出错原因

2.用于诊断查询

apt install -y traceroute

 

有时候路由器转发的报文数量太多了,路由器设备压力太大了,就有可能给对方发送重定向报文,要求对方给别的路由器转发。

关于ICMP的命令:

ping命令不用多少了

还有一个是traceroute命令:

也是基于 ICMP 协议实现 , 能够打印出可执行程序主机 , 一直到目标主机之前经历多少
路由器。

 

在Ubuntu下的安装 (要在管理员权限下)
apt install -y traceroute

比如还是对百度进行使用测试

 其中最上面的 30 hops max 表示的是最多经过了30个路由器, 60 byte packets表示报文大小是60字节。

其中下面有些显示出来的IP地址的表示的是经过了一个有效的路由器。我们之所以能看到它们的IP地址,是因为他们给我们进行应答了。

某一跳为 * * * 表示这些路由器没有给我们进行ICMP应答。没有给应答的原因有很多,比如设备故障;或者设置了防火墙,不允许给外界的设备发送ICMP报文。

关于ICMP的面试比较坑的问题:ping的端口号是什么?

端口号是传输层面的概念,ping命令是基于网络层协议实现的,所以它是没有端口号的。


http://www.ppmy.cn/devtools/116152.html

相关文章

基于SpringBoot的在线点餐系统【附源码】

​基于SpringBoot的高校社团管理系统(源码L文说明文档) 4 系统设计 4.1 系统概述 网上点餐系统的结构图4-1所示: 图4-1 系统结构 模块包括主界面,首页、个人中心、用户管理、美食店管理、美食分类管理、美食…

QT中的消息机制(事件机制)总结

Qt 中的消息机制(事件机制)是框架的核心部分之一,它通过事件驱动模型来处理用户交互和系统事件。Qt 的事件处理系统允许对象之间通过发送和接收消息或事件来进行通信,这种机制使得应用程序能以响应式的方式来处理各种输入和输出。…

【有啥问啥】深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法

深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法 0. 引言 Markov Chain Monte Carlo(MCMC)是一类用于从复杂分布中采样的强大算法,特别是在难以直接计算分布的情况下。它广泛应用于统计学、机器学习…

python爬虫初体验(一)

文章目录 1. 什么是爬虫?2. 为什么选择 Python?3. 爬虫小案例3.1 安装python3.2 安装依赖3.3 requests请求设置3.4 完整代码 4. 总结 1. 什么是爬虫? 爬虫(Web Scraping)是一种从网站自动提取数据的技术。简单来说&am…

WPF 自定义路由事件

WPF 自定义路由事件 一、自定义路由事件步骤 ① 注册路由事件    ② 为路由事件添加 CLR 事件包装器    ③ 创建可激发路由事件的方法 二、注册路由事件 EventManager.RegisterRoutedEvent(String, RoutingStrategy, Type, Type)     作用:将新的路由事件…

Pandas_iloc_loc_哪个是inclusive哪个是exclusive

iloc 和 loc 包括不包括结尾写的那个行(列)? 不一样! iloc[istart:iend] exclusive on iend 不包括结尾那行(列)! loc[start:end] inclusive on end 包括结尾那行(列)&am…

Sentence Transformers 教程!

Sentence Transformers专注于句子和文本嵌入,支持超过100种语言。利用深度学习技术,特别是Transformer架构的优势,将文本转换为高维向量空间中的点,使得相似的文本在几何意义上更接近。 语义搜索:构建高效的语义搜索系…

计组(蒋)期末速成笔记1

蒋本珊计组期末不挂科复习笔记 第1章 概论 第2章 数据的机器层次表示 第3章 指令系统 第4章 数值的机器运算 第5章 存储系统和结构 第6章 中央处理器 第7章 总线 第1章 概论 蒋本珊计组期末不挂科复习笔记知道你快考试了,莫慌! 第1章 概论1.1 冯诺依曼计…