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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 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值,最后该主机就能够得到一连串的数据包路径


目录
相关文章
|
6天前
|
JSON 前端开发 JavaScript
【JavaScript技术专栏】JavaScript异步编程:Promise、async/await解析
【4月更文挑战第30天】JavaScript中的异步编程通过Promise和async/await来解决回调地狱问题。Promise代表可能完成或拒绝的异步操作,有pending、fulfilled和rejected三种状态。它支持链式调用和Promise.all()、Promise.race()等方法。async/await是ES8引入的语法糖,允许异步代码以同步风格编写,提高可读性和可维护性。两者结合使用能更高效地处理非阻塞操作。
|
6天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
4天前
|
存储 并行计算 算法
大模型量化技术解析和应用
眼看人工智能含智能量越来越高含人量越来越低,是否开始担心自己要跟不上这趟高速列车了?内心是否也充满好奇:大模型背后的奥秘是什么?为何如此强大?它能为我所用吗?哪种技术最适合我的需求?
|
4天前
|
机器学习/深度学习 数据采集 算法
利用机器学习进行客户细分的技术解析
【5月更文挑战第17天】运用机器学习进行客户细分是提升企业精准营销和竞争力的关键。通过聚类分析、决策树、支持向量机和神经网络等算法,可深入理解客户需求和偏好。关键步骤包括数据收集预处理、特征选择、模型训练与优化,最终实现客户群体的精准划分,助力定制个性化营销策略。随着技术发展,机器学习在客户细分中的应用将更加广泛。
|
4天前
|
机器学习/深度学习 数据采集 算法
利用机器学习进行用户行为预测的技术解析
【5月更文挑战第17天】本文探讨了利用机器学习预测用户行为的技术,包括数据收集与处理、特征工程、模型选择与训练、评估预测。通过理解用户数据、提取有效特征,使用如RNN、LSTM等深度学习模型进行训练,评估模型性能后,可实现用户行为预测,助力企业决策,如个性化推荐和精准营销。随着技术发展,机器学习在该领域的应用将更加广泛。
|
5天前
|
JSON 搜索推荐 API
使用Elasticsearch进行全文搜索:技术深度解析
【5月更文挑战第16天】本文深入解析了使用Elasticsearch进行全文搜索的技术细节。Elasticsearch是一个基于Lucene的开源搜索引擎,支持全文、结构化搜索和数据分析,具备优秀的扩展性。文中介绍了其核心功能,包括全文搜索、结构化搜索、分析和可扩展性。详细步骤涉及安装配置、数据准备、创建索引、导入数据、构建查询及结果处理。Elasticsearch凭借其高效性能和灵活性,成为企业全文搜索的首选解决方案。
|
6天前
|
监控 Java 测试技术
【企业场景】常见技术场景解析
【企业场景】常见技术场景解析
20 0
|
6天前
|
存储 网络协议 Java
【JavaEE】数据链路层-以太网协议-DNS
【JavaEE】数据链路层-以太网协议-DNS
11 1
|
6天前
|
安全 程序员 网络安全
解析编程中的技术迷题:常见挑战与应对策略
解析编程中的技术迷题:常见挑战与应对策略
6 1
|
6天前
|
人工智能 IDE Devops
通义灵码技术解析,打造 AI 原生开发新范式
本文第一部分先介绍 AIGC 对软件研发的根本性影响,从宏观上介绍当下的趋势;第二部分将介绍 Copilot 模式,第三部分是未来软件研发 Agent 产品的进展。

推荐镜像

更多