深入理解DNS、ICMP协议与NAT技术:网络世界的三大基石

news2024/11/20 4:36:47

小白苦学IT的博客主页⭐


 

初学者必看:Linux操作系统入门⭐


 

代码仓库:Linux代码仓库⭐


 

❤关注我一起讨论和学习Linux系统❤

前言

在网络世界中,数据的传输和交互离不开各种协议和技术的支持。其中,DNS(域名系统)、ICMP(Internet控制消息协议)和NAT(网络地址转换)技术无疑是构建现代互联网基础设施的三大基石。它们各自扮演着不同的角色,共同确保了网络的高效、安全和稳定。

DNS,作为互联网的“电话簿”,负责将我们熟悉的域名(如www.example.com)转换为计算机能够理解的IP地址。没有DNS,我们将无法轻松访问互联网上的各种资源。

ICMP,则是一个用于在IP主机、路由器之间传递控制消息的网络层协议。它允许主机或路由器报告错误情况,并可以通过ping命令等工具来测试网络的连通性。ICMP协议的存在,使得我们能够及时发现和解决网络问题。

NAT技术,则是一种在IP地址日益紧张的背景下诞生的解决方案。它允许一个私有IP地址的网络通过少量的公有IP地址访问外部网络。NAT技术不仅解决了IP地址不足的问题,还提高了网络的安全性和灵活性。

在本文中,我们将深入探讨DNS、ICMP协议和NAT技术的原理、工作机制以及在实际应用中的场景。希望通过这篇博客,读者能够对这些重要的网络协议和技术有更深入的理解,从而更好地应对网络世界中的各种挑战。

DNS

DNS(Domain Name System)是域名系统,它是互联网中用于将人类可读的域名(如www.example.com)转换为计算机可读的IP地址的系统。DNS是互联网基础设施的重要组成部分,它使得人们无需记忆复杂的数字IP地址,而是可以通过容易记忆的域名来访问网站和服务。DNS是一整套从域名映射到IP的系统。

DNS的工作原理基于一个分层的域名空间,这个空间由各种不同类型的DNS记录组成,包括A记录(将域名映射到IPv4地址)、AAAA记录(将域名映射到IPv6地址)、CNAME记录(将域名映射到另一个域名)、MX记录(指定用于接收电子邮件的服务器)等。

当用户尝试访问一个域名时,其设备上的DNS解析器会向DNS服务器发送一个查询请求。DNS服务器会递归或迭代地查询整个DNS层次结构,直到找到与该域名对应的IP地址。一旦找到,DNS服务器就会将IP地址返回给用户的设备,然后用户的设备就可以使用该IP地址来访问目标网站或服务了。

DNS系统还提供了负载均衡、故障转移和安全性等高级功能。例如,通过使用多个A记录将同一个域名映射到多个IP地址,可以实现负载均衡,从而改善网站的性能和可用性。此外,DNS系统还可以使用安全协议(如DNSSEC)来防止域名劫持和其他形式的网络攻击。

DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.
于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.

最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的。

  • 如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.
  • 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.

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

  • 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
  • 如果新计算机接入网络, 将这个信息注册到数据库中;
  • 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.

至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容.

cat /etc/hosts

域名简介

域名(Domain Name)是互联网上用于标识和定位计算机或计算机组的名称,是互联网上的重要标识。它就像互联网上的门牌号码,通过域名,我们可以方便地访问和定位到互联网上的资源。

1. 域名的组成

域名通常由多个部分组成,通过点号(.)分隔。最右边的部分称为顶级域名(TLD,Top-Level Domain),如常见的.com、.net、.org等。再往左是二级域名,再往左是三级域名,以此类推。例如,在“http://www.example.com”这个域名中,“www”是主机名,“example”是二级域名,“com”是顶级域名。

2. 域名的用途

域名的主要用途是为互联网上的计算机或计算机组提供一个容易记忆和识别的名称。通过域名,用户可以轻松地访问和定位到互联网上的各种资源,如网站、电子邮件、文件传输等。同时,域名也是企业在互联网上的重要标识,有助于提升企业的品牌形象和知名度。

3. 域名的注册与管理

域名的注册和管理通常由域名注册机构(如ICANN)授权的域名注册商负责。用户可以通过域名注册商来注册自己需要的域名,并支付一定的费用。一旦域名注册成功,用户就可以使用该域名来搭建网站、设置电子邮件等。同时,用户也需要遵守相关的域名管理规定,如不得使用违法、违规的域名等。

4. 域名的重要性

在互联网时代,域名的重要性不言而喻。一个易于记忆、具有品牌特色的域名不仅可以提高用户的访问体验,还可以增加企业的曝光率和知名度。因此,很多企业和个人都会花费大量的时间和精力来挑选和注册自己满意的域名。同时,随着互联网的不断发展,域名的价值也在不断提升,成为了一种重要的互联网资产。

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

www.baidu.com

  • com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
  • baidu: 二级域名, 公司名.
  • www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议.

ICMP协议

ICMP协议是一个 网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因.

ICMP功能

ICMP正是提供这种功能的协议; ICMP主要功能包括:

确认IP包是否成功到达目标地址.
通知在发送过程中IP包被丢弃的原因.
ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;

ICMP的报文格式

ICMP大概分为两类报文:

  • 一类是通知出错原因
  • 一类是用于诊断查询

注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
ping命令会先发送一个 ICMP Echo Request给对端;
对端接收到之后, 会返回一个ICMP Echo Reply; 

NAT技术

NAT技术全称为网络地址转换(Network Address Translation),是一种在计算机网络中广泛应用的技术。它的主要作用是将内部网络的私有IP地址转换为公共IP地址,从而实现内部网络和外部网络之间的通信。

NAT技术的基本原理是,通过一个或多个NAT设备,将内部网络的私有IP地址转换为公共IP地址,从而使内部网络中的计算机能够与外部网络进行通信。NAT技术被广泛应用于现代计算机网络中,提供了一种有效管理和利用IP地址的方法。

NAT技术的实现方式主要有三种:静态转换(Static NAT)、动态转换(Dynamic NAT)和端口多路复用(OverLoad)。静态转换是指内部本地地址一对一转换成内部全局地址,相当于内部本地的每一台PC都绑定了一个全局地址。动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。端口多路复用(Port Address Translation, PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换。采用端口多路复用方式,内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。

NAT技术不仅可以解决IP地址不足的问题,还可以有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。同时,NAT技术还具有节省合法的注册地址、在地址重叠时提供解决方案、提高连接到因特网的灵活性、在网络发生变化时避免重新编址等优点。然而,NAT技术也存在一些缺点,如地址转换将增加交换延迟、导致无法进行端到端IP跟踪、导致有些应用程序无法正常运行等。

NAT技术背景

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题,NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的;

NAT IP转换过程

  • AT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAPT

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项

NAT技术的缺陷

由于NAT依赖这个转换表, 所以有诸多限制:

  • 无法从NAT外部向内部服务器建立连接;
  • 装换表的生成和销毁都需要额外开销;
  • 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开;

NAT和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.


代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.


代理服务器是一个网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,并对转发进行控制和登记。它可用于连接Internet与Intranet,在实际应用中发挥着极其重要的作用,除了基本的连接功能,还具备安全性、缓存、内容过滤、访问控制管理等功能。

那么NAT和代理服务器的区别有哪些呢?

  • 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
  • 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
  • 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
  • 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.

代理服务器又分为正向代理和反向代理.

现在,通过一个简单的故事来解释正向代理和反向代理的概念。

正向代理的故事

假设小明想要购买一本国外的专业书籍,但是这本书在国内的书店买不到。于是,小明找到了一个可以帮他从国外购买并邮寄到国内的代购者小李。在这个故事中,小明是客户端,代购者小李就是正向代理服务器,而国外的书店则是目标服务器。

小明向小李(正向代理)发出购书请求,小李接收到请求后,代替小明去国外的书店(目标服务器)购买书籍。书店将书寄给小李,然后小李再将书转交给小明。整个过程中,书店并不知道真正的购书者是小明,只知道是小李来购买。这就是正向代理的工作方式,它隐藏了客户端的真实身份,提供了更高的隐私和安全性。

反向代理的故事

假设有一家大型图书馆(目标服务器),里面收藏了很多珍贵的书籍。但是,由于图书馆太大,读者很难找到自己想要的书籍。于是,图书馆在门口设置了一个咨询台(反向代理服务器),咨询台的工作人员可以帮助读者快速找到他们想要的书籍。

在这个故事中,读者是客户端,咨询台是反向代理服务器,而图书馆则是目标服务器。当读者想要找书时,他们首先会询问咨询台(反向代理)。咨询台的工作人员会根据读者的需求,去图书馆里找到对应的书籍,并将其交给读者。整个过程中,读者并不需要知道书籍具体存放在图书馆的哪个位置,只需要通过咨询台(反向代理)就可以轻松找到自己想要的书籍。这就是反向代理的工作方式,它简化了客户端的访问过程,并提供了负载均衡、缓存等功能,从而提高了访问效率和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1657214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1068 万绿丛中一点红

solution 找出满足①像素值唯一&②和相邻像素点色差大于tol 的像素点个数 若唯一,则输出该像素点列、行、像素值;若不唯一,则输出"Not Unique"若无,则输出"Not Exist" 题干和输出中,都是先列…

【ACM出版】第四届控制与智能机器人国际学术会议(ICCIR 2024)

第四届控制与智能机器人国际学术会议(ICCIR 2024) 2024 4th International Conference on Control and Intelligent Robotics 2024年6月21日-23日 | 中国-广州 官网:www.ic-cir.org EI、Scopus双检索 投稿免费参会、口头汇报及海报展示 四…

【MySQL数据库开发设计规范】之基础规范

欢迎点开这篇文章,自我介绍一下哈,本人笔名姑苏老陈,是一个JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关…

Python从0到POC编写--实用小脚本02

爆破脚本: 爆破脚本也是我们经常使用的东西 这里就简单讲讲后台爆破脚本的编写吧 在编写之前,我们先通过访问网站去看看情况 首先我们可以先登录看看 输入账号 admin ,密码 12345 后 登录失败,提示 用户名或密码错误 在输入…

水质监测设备预警系统

随着工业化进程的加快和城市化水平的提高,水质安全问题愈发受到社会各界的广泛关注。为了确保水资源的清洁与安全,水质监测设备预警系统成为了不可或缺的利器。在这个背景下,HiWoo Cloud平台凭借其先进的技术和卓越的性能,为水质监…

Centos中将UTC的时区改为CTS时区

date命令可以看到现在的时间以及时区,可以看到现在是UTC时区 而想要更改时区那么就要了解tzselect命令 tzselect 是一个 Linux 命令行工具,用于交互式地帮助用户选择并设置系统的时区。这个程序会通过一系列的问题引导用户,从而确定用户所在的…

小程序如何注销

随着移动互联网的深入发展,管控也越来越严格。现在小程序都要求进行ICP备案,不管是新注册的还是以往注册的。很多商家的小程序本身处于无运营状态,现在要求备案,还不如直接注销。下面,将详细介绍小程序注销的步骤和注意…

WPF容器控件之WrapPanel、布局控件

WrapPanel: 换行panel 子元素进行换行&#xff0c;当子元素的宽度或者高度超出了父元素&#xff0c;才进行换行。高度超出父元素的高度 也会另起一列 属性 Orientation布局方式 实例 <WrapPanel Orientation"Horizontal"><Label>C# 是从 C/C 衍生出来的…

Proxmox VE 8 用SDN隔离用户网络

作者&#xff1a;田逸&#xff08;formyz&#xff09; 最新发布的Proxmox VE&#xff08;以下简称PVE&#xff09; 8在Web管理后台集成了易于操作的SDN&#xff08;软件定义网络&#xff09;功能插件&#xff0c;其实质是对不同的PVE用户指定不同的网络&#xff0c;进行逻辑隔离…

低组装直线导轨有哪些应用场景?

低组装直线导轨&#xff0c;是一种用于工业自动化设备中的导轨类型。所谓低组装导轨&#xff0c;是指该导轨的轨道平面高度相对于其他传统导轨较低&#xff0c;其特点是安装方便、维护简单&#xff0c;同时具有较高的稳定性和定位精度。接下来&#xff0c;我们一起来了解低组装…

如何优雅的实现接口限流?

首先限流&#xff0c;其实解决方案有很多&#xff0c;比如通过nginx配置&#xff0c;通过gateway网关进行限流&#xff0c;比如Spring Cloud GateWay整合熔断器实现限流 但是以上都是全局的&#xff0c;如何灵活的针对某些接口进行不同级别的限流呢&#xff1f; 方案一&#…

西汉两个韩信,结局怎么如此相似

西汉军事家、“汉初三杰”韩信是家喻户晓的人物&#xff0c;同时期还有一个韩信&#xff0c;也是战功赫赫&#xff0c;也被封王&#xff0c;史书为了区别&#xff0c;在后一个韩信名字之间加上一个“王”&#xff0c;称为韩王信。韩信是个光芒万丈的人物&#xff0c;韩王信也是…

游戏专用设备指纹方案解析

如同人类拥有独一无二的指纹&#xff0c;设备也有设备的指纹&#xff0c;我们可以把设备指纹理解为设备的唯一识别码。 构建设备指纹需要采集设备硬件信息、软件信息、环境信息、网络信息等维度信息&#xff0c;进行加密/压缩&#xff0c;再通过算法处理&#xff0c;赋予设备唯…

YOLOv9中模块总结补充|SPPELAN

专栏相关代码&#xff1a;目前售价售价69.9&#xff0c;改进点80 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 1. SPPELAN SPPELAN是YOLOv9作者在SPPF的基础上创新的模块&#xff08;增加了一次…

2024付费进群系统,源码及搭建变现视频课程(教程+源码)

前三节讲解搭建支付对接&#xff0c;后两节讲解一些引流变现的方法&#xff0c;还有一种变现就是帮人搭建这样的平台&#xff0c;因为全网都没有一套完整的视频教怎么搭建的&#xff0c;有也只是文字教程&#xff0c;一般新人根本看不懂&#xff0c;我视频实操演示&#xff0c;…

从“制造”到“智造”:“灯塔”经验助力中国制造业转型升级-转载

作者&#xff1a;Karel Eloot&#xff0c;侯文皓&#xff0c;Francisco Betti&#xff0c;Enno de Boer和Yves Giraud 作为中国实体经济的主体&#xff0c;制造业是推动中国经济发展乃至全球制造业持续增长的重要引擎。站在历史与未来交汇的新起点上&#xff0c;中国制造业将背…

马蹄集oj赛(双周赛第二十六次)

目录 斐波那契数列的组合 三国杀 数列分段 小码哥的跳棋游戏新编 能量供应 小码哥爱数字 最小串 小船过河 摘果子 泼墨淋漓 很重的枪 小码哥的布阵指挥 斐波那契数列的组合 #include<bits/stdc.h> using namespace std;// 斐波那契数列 1 1 2 3 5 8 13 21 34…

初始C++(二)

前言&#xff1a; C相对于C语言还有很多区别&#xff0c;接下来我们继续介绍 函数重载&#xff1a; 很好理解&#xff0c;就是Java中的函数重载。C加了函数的修饰&#xff0c;通过函数修饰规则去找。C语言是直接通过函数名查找&#xff0c;C是通过修饰后的函数名去查找。 引用…

蓝桥青少一月 STEMA-Python 测评第一题

第一题&#xff08;难度系数 2&#xff0c;18 个计分点&#xff09; (注.input()输入函数的括号中不允许添加任何信息) 编程实现&#xff1a; 给定一个正整数 N&#xff0c;输出 N 除以 3 的商。 输入描述&#xff1a;输入一个正整数 N 输出描述&#xff1a;输出 N 除以 3 的商…

Faststone Capture:高效屏幕捕获神器评测【AI写作】

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…