DNS协议、ICMP协议、NAT技术(一)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: DNS协议、ICMP协议、NAT技术

一、DNS协议

1.1 认识DNS

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


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


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

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

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

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


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

若新计算机要接入网络,或者某个计算机IP变更,就需要将对应信息注册到数据库中

当用户通过域名访问互联网服务时,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址

至今,计算机上仍保留了hosts文件,hosts文件中一般存储的是主机名与IP地址之间的映射,用户也可以在hosts文件中自主添加域名和IP映射关系,在域名解析的过程中会优先查找hosts文件的内容


使用 cat /etc/hosts 可以查询本机hosts文件中的内容


5d2039a2c5c6407b8e838ed0961adc3b.png


1.2 域名简介

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


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

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

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

1.3 域名解析过程

先在浏览器的DNS缓存中去查询是否有对应的记录,若查询到记录就可直接得到对应的IP地址,完成解析

若在浏览器的DNS缓存中没有找到,则去查询操作系统中的DNS缓存,若查询到对应的IP地址则完成解析

若在操作系统的DNS缓存中没有找到,则去查找本地的hosts文件,若查询到对应的IP地址则完成解析

若在本地hosts文件中没有找到,就会去本地DNS服务器中查找。本地DNS服务器IP地址一般由本地网络服务商提供,如电信、移动等公司,一般通过DHCP自动分配。目前使用的比较多的是谷歌提供的公用NDS 8.8.8.8和国内公用DNS 114.114.114.114。若在本地DNS服务器中有对应域名的缓存,则直接返回对应的IP地址,完成解析

若本地DNS服务器中没有找到,那么本地DNS服务器就会拿着域名去根DNS服务器中询问,根DNS服务器会告知顶级域名服务器的IP地址

本地DNS拿到顶级域名服务器的IP地址后,就会拿着域名去找顶级DNS服务器,顶级域名服务器会告诉本地DNS权威域名服务器的IP地址

本地DNS服务器拿着域名去权威域名服务器中,查询域名对应的IP地址,最终将该域名对应的IP地址返回给浏览器,此时整个域名解析过程就完成

1.4 使用dig工具分析DNS过程

#安装dig工具
sudo yum install bind-utils

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

5fb2be80a4914186bc29626125971a4f.png



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

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

QUESTION SECTION表示待查询的域名

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

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


二、ICMP协议

2.1 ICMP协议的定位

在TCP/IP四层模型中,网络协议栈自顶向下分为应用层、传输层、网络层和数据链路层


其中应用层最典型的协议有HTTP、HTTPS和DNS等,传输层最典型的协议有TCP和UDP,网络层最典型的协议就是IP,数据链路层最典型的协议就是MAC帧协议,但实际网络层还有两种协议:ICMP和IGMP

d8fa66ad6e344265905d4924daae2ef5.png



ICMP、IGMP和IP协议都属于网络层的协议,并且属于IP的上层协议


IP的上层协议不一定就直接是传输层的协议,IP的上层协议有可能也是网络层的协议,但就是位于IP的上层

与之类似的,数据链路层中的ARP协议和RARP协议,这两个协议虽然与MAC帧协议都属于数据链路层,但这两个协议属于MAC帧的上层协议


2.2 ICMP功能

ICMP的主要功能包括:


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

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

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

举例


如当主机A在向主机B发送数据的过程中,主机B因为某些原因已经离线了


448f4e88a8744ce9b6c36fe66349822d.png


当发送的数据包到达主机B所在局域网的入口路由器时,入口路由器为了获得主机B的MAC地址,于是会向主机B发送ARP请求包,但由于主机B已经离线了,因此路由器在多次发送ARP请求包而得不到响应后,就会返回一个ICMP Destination Unreachable的包给主机A,此时主机A就知道自己发送的数据无法到达主机B


2.3 ICMP协议格式(了解)

484523fd943e474bb00d08f091f4b4b1.png


ICMP大概分为两类报文


一类是通知出错原因的

一类是用于诊断查询的


a7475c7a35e84755b29b3980b5fc8d89.png

2.4 ping命令

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


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


380dc8ddf5a0471c9fcad904ca854dfa.png


此处ping的是百度的域名,该域名会由DNS解析成IP地址

ping命令不仅能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存时间)

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

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

50bd1314c1d149b2ad9ade781bc69806.png


telnet对应的端口号是23,ssh对应的端口号是22,那ping对应的端口号是多少?


这是一个圈套,ping命令是基于网络层的ICMP协议,而端口号是属于传输层的内容,因此ICMP协议根本就不关心端口号。ping命令实际是绕过了传输层的,并没有什么所谓端口的概念


2.5 traceroute命令

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


如使用 traceroute www.baidu.com 命令,遍历数据包传送到百度服务器所经过的所有路由器



e8d4f9beb42649ab9851b806952483fd.png

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

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

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


目录
相关文章
|
10天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
34 3
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
37 11
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
8天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
8天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
22 1
|
8天前
|
安全 测试技术 数据安全/隐私保护
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
|
14天前
|
网络协议 安全 网络架构
NAT穿透技术、穿透原理和方法
【10月更文挑战第19天】 NAT穿透技术、穿透原理和方法
49 7
|
10天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
25 1
|
14天前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
65 1

推荐镜像

更多