网络】DNS协议、ICMP协议

云掣YunChe9个月前行业资讯522

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




免责申明:

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


相关文章

运维初入门之认识运维,运维日常的工作都在干什么

运维初入门之认识运维,运维日常的工作都在干什么

运维是指系统运维,是指负责维护、管理和优化计算机系统和网络设备的工作。运维日常的工作主要包括系统监控、故障处理、性能调优、安全防护、备份和恢复、资源规划等多个方面。以下是对运维日常工作进行详细说明的2...

【网络】NAT、代理服务、内网穿透(1)

【网络】NAT、代理服务、内网穿透(1)

1.NAT技术NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。1.1...

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

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

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

解决虚拟机卡死且无法强制结束进程的问题

解决虚拟机卡死且无法强制结束进程的问题

【Linux虚拟机死机】有很多种情况,最常见的是系统负载过高导致的。可以是运行内存耗用极大的程序,也会迅速提升系统负载。由于系统负载过高导致的卡死,一定是解决的越快越好!不能再试图依赖任何图形界面的东...

深入了解Linux命名空间中cgroups相关概念:打开容器技术的黑匣子

深入了解Linux命名空间中cgroups相关概念:打开容器技术的黑匣子

一、cgroups概念cgroup全称是control groups,被整合在了linux内核当中,把进程(tasks)放到组里面,对组设置权限,对进程进行控制。可以理解为用户和组的概念,用户会继承它...

Docker容器——网络模式和Cgroup资源限制

Docker容器——网络模式和Cgroup资源限制

一、Docker网络(1)Docker网络实现原理Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容...

发表评论    

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