【网络】DNS协议、ICMP协议

饭宝  金牌会员 | 2024-9-11 08:32:43 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

DNS协议与ICMP协议   
  
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文件当中的内容。

1.2域名简介

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


  • com:一级域名,表现这是一个工商企业域名。同级的还有.net(网络提供商)和.org(开源组织或非盈利组织)等。
  • baidu:二级域名,一般对应的就是公司名。
  • www:只是一种习惯用法,之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表现主机支持的协议。
1.3域名分析过程(相识)


1.4使用dig工具分析DNS过程

我们可以使用dig工具来查看域名分析的过程,比方查看百度域名www.baidu.com的分析过程。
dig工具的分析效果如下:

分析:


  • 开头位置是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。

   一个值得注意的坑
  有些面试官可能会问: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值,最后该主机就可以或许得到一连串的数据包路径。

我误以为运气掌握在别人手里,而没有意识到我可以为本身的人生执笔。 —塞巴斯蒂安·巴里

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表