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


目录
相关文章
|
5月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
280 14
|
11月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
611 3
|
7月前
|
存储 缓存 网络协议
DNS协议详解
通过本文,您可以全面了解DNS协议的各个方面,从而更好地理解和应用这一重要的互联网基础服务。
1493 44
|
6月前
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
331 5
|
9月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
488 3
|
10月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
268 3
|
10月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
758 3
|
10月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
1133 2
|
9月前
|
传感器
Modbus协议深入解析
Modbus协议是由Modicon公司(现施耐德电气)于1979年发明的串行通信协议,主要用于工业自动化系统中的PLC通信。本文深入解析了Modbus协议的主从模式、数据类型(线圈、离散输入、保持寄存器、输入寄存器)、帧结构和通信过程,并介绍了其应用场景和重要性。
359 0
|
11月前
|
网络协议 安全 网络架构
NAT穿透技术、穿透原理和方法
【10月更文挑战第19天】 NAT穿透技术、穿透原理和方法
821 7