网络】DNS协议、ICMP协议

云掣YunChe11个月前行业资讯602

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值,最后该主机就能够得到一连串的数据包路径。




免责申明:

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


相关文章

Linux 配置MySQL环境(三)

Linux 配置MySQL环境(三)

一、下载1. 官网下载MySQL官网:https://www.mysql.com/进入官网之后点击 DOWNLOADS进入页面 ( 在这里我们选择社区版) ,点击 MySQL Community (G...

JAVA 程序员-云计算学习路径

JAVA 程序员-云计算学习路径

课程内容关系图第一章:容器化基础云计算简单概念测试安装 Nginx服务器的安全组设置按量付费优点私有网络 VPC 实战Docker 基础概念开通华为服务器Docker 安装镜像操作容器操作修改容器内容...

Docker:容器化和虚拟化

Docker:容器化和虚拟化

虚拟化虚拟化是一种资源管理技术,它将计算机的各种实体资源(如CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。这些资源的新虚拟部分是不受现有资源...

Linux 安装Docker完整教程(六)

Linux 安装Docker完整教程(六)

背景近些年随着云原生的发展,Docker在云原生中的作用使得它也蓬勃发展起来。今天这篇文章就带大家一起实现一下在Linux操作系统下Docker的部署过程,收藏起来,以备不时之需。当然,如果对Dock...

Linux CGroup资源限制(概念&限制进程CPU使用)

Linux CGroup资源限制(概念&限制进程CPU使用)

Linux CGroup资源限制(详解)最近客户认为我们程序占用cpu过高,希望我们限制,排查之后发现是因为程序频繁gc导致,为了精细化、灵活的的限制,想到了使用Linux CGroup。0...

【Docker 】深入探索 Docker :高阶操作与配置设置(上)

【Docker 】深入探索 Docker :高阶操作与配置设置(上)

Docker 是现代应用开发和部署的重要工具,能够帮助开发者轻松创建、管理和部署容器化应用。除了基本的命令外,掌握高阶操作和配置设置将大大提高您的工作效率和应用性能。本文将介绍一些 Docker 的高...

发表评论    

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