网络】DNS协议、ICMP协议

云掣YunChe6个月前行业资讯307

1.DNS协议

DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。


1.1DNS背景

TCP/IP中通过IP地址和端口号的方式,来确定网络中一个主机上的一个程序。但IP地址是一长串数字,并不便于人们记忆,于是人们发明了一种叫做主机名的东西,并用hosts文件夹来描述主机名和IP地址之间的对应关系。


最初,这个hosts文件是由互联网信息中心(SRI-NIC)来管理的。


如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件。

其他计算机也需要定期下载更新新版本的hosts文件才能正确上网。

当用户通过域名访问互联网服务时,会先通过域名在本地的hosts文件中找到其对应的IP地址,然后再用这个IP地址去访问对应的服务。

但这样太麻烦了,于是产生了DNS系统。


一个组织的系统管理机构,维护系统内的每个主机的 IP 和主机名的对应关系;

如果新计算机接入网络,将这个信息注册到数据库中;

用户输入域名的时候,会自动查询 DNS 服务器,由 DNS 服务器检索数据库,得到对应的 IP 地址。

至今,我们的计算机上仍然保留了 hosts 文件。在域名解析的过程中仍然会优先查找 hosts 文件的内容。


通过cat /etc/hosts可以查看hosts文件当中的内容。

image-20240812165801605



1.2域名简介

域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称,例如www.baidu.com。


com:一级域名,表示这是一个工商企业域名。同级的还有.net(网络提供商)和.org(开源组织或非盈利组织)等。

baidu:二级域名,一般对应的就是公司名。

www:只是一种习惯用法,之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议。

1.3域名解析过程(了解)

image-20240812165937588


1.4使用dig工具分析DNS过程

我们可以使用dig工具来查看域名解析的过程,例如查看百度域名www.baidu.com的解析过程。


dig工具的分析结果如下:

image-20240812170048902



说明:


开头位置是dig工具的版本号。

第二部分是服务器返回的详情,其中status参数为NOERROR表示查询成功。

QUESTION SECTION表示待查询的域名。

ANSWER SECTION表示查询的结果,首先www.baidu.com被查询成了www.a.shifen.com,而最终www.a.shifen.com被查询成了两个具体的IP地址。

最下面是一些结果统计,包含查询时间和DNS服务器的地址等。

更多dig的使用方法,参见https://www.imooc.com/article/26971?block_id=tuijian_wz

2.ICMP协议

ICMP(Internet Control Message Protoco)Internet控制报文协议,用于在IP主机、路由器之间传递控制信息,是一个TCP/IP协议。


ICMP、IGMP和IP协议与arp协议和MAC帧的关系一样,ICMP协议和IGMP协议属于IP的上层协议,但他们同属网络层。


2.1ICMP的功能

一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通。但是IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。


ICMP正是提供这种功能的协议,ICMP主要功能包括:


确认IP包是否成功到达目标地址。

通知在发送过程中IP包被丢弃的原因。

ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议。

ICMP只能搭配IPv4使用。如果是IPv6的情况下,需要使用ICMPv6。

2.2ping命令

ping命令就是基于ICMP协议实现的,通常用于测试本地主机与另一台主机之间的通信信道是否正常。


例如,使用ping www.baidu.com命令,测试本地主机与百度服务器之间的通信信道是否正常。


ping命令会先发送一个ICMP Echo Request给对端。

对端接收到之后,会返回一个ICMP Echo Reply。

image-20240812171006530


一个值得注意的坑


有些面试官可能会问:telnet是23端口,ssh是22端口,那么ping是什么端口?


首先,ICMP协议是IP层的一个协议,它直接封装在IP数据包中,作为IP层的一个功能扩展。端口号(Port Number)是传输层协议(如TCP和UDP)中的一个概念,用于区分同一台主机上不同应用程序之间的通信。由于ICMP协议并不属于传输层,而是直接位于IP层之上,因此它不需要端口号来区分不同的应用程序或服务。


其次,ICMP协议的主要功能是发送控制消息和错误报告,而不是传输用户数据。这些控制消息和错误报告是面向网络的,而不是面向特定应用程序的。因此,ICMP协议不需要像传输层协议那样,通过端口号来指定接收消息的应用程序。


最后,ICMP协议的设计初衷是为了提供网络层的错误报告和诊断功能,而不是为了支持复杂的端到端通信。因此,它采用了较为简单的协议结构,没有包含像端口号这样的复杂字段。


2.3traceroute命令

traceroute命令也是基于ICMP协议实现的,traceroute命令可以遍历数据包传送到目标主机所经过的所有路由器。




原理简述:


traceroute命令底层实际是通过增加存活时间(TTL)值来实现的。

因为每当数据包经过一个路由器,其TTL值就会减1,当TTL值减为0时对应路由设备就会将该数据包丢弃,并传送一个ICMP TTL数据包给发送主机。

因此traceroute命令底层可以发出多个数据包,并给这些数据包设置不同的TTL值,最后该主机就能够得到一连串的数据包路径。




免责申明:

本文转载自网友公开分享,若有侵权,请联系我们删除!


相关文章

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,Pod 的状态为 CrashLoopBackOff 表示某个容器在启动后崩溃,Kubernetes尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增...

Docker--Docker Registry(镜像仓库)

Docker--Docker Registry(镜像仓库)

什么是Docker Registry?镜像仓库(Docker Registry)是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。镜像仓库主要负责存储Docker镜像,这些镜像包...

浅谈linux性能调优之六:IO调度算法的选择

浅谈linux性能调优之六:IO调度算法的选择

一) I/O调度程序的总结     1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成.    2) 每个块设备都有它自...

MySQL运维之分库分表与读写分离

MySQL运维之分库分表与读写分离

分库分表1.介绍问题分析随着互联网以及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较...

Docker全攻略:从入门到精通,掌握容器构建关键技能

Docker全攻略:从入门到精通,掌握容器构建关键技能

引言        Dockerfile 是构建 Docker 镜像的核心文件。它定义了如何将应用程序及其依赖打包成一个可以跨平台运行的容器。本篇博客将从基础概...

微服务保护和分布式事务(5)

微服务保护和分布式事务(5)

2.3 XA 模式:Seata 支持四种不同的分布式事务解决方案:XATCCATSAGA这里我们以XA模式和AT模式来给大家讲解其实现原理。XA 规范是 X/Open 组织定义的分布式事务处理(DTP...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。