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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: DNS协议、ICMP协议、NAT技术

三、NAT技术(重点)

NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机


3.1 NAT技术背景

在IPv4协议中,IP地址数量不足是一个大问题,而NAT技术就是当前解决IP地址不够用的主要手段,是路由器的一个重要功能


在进行对外通信时,NAT能够将私有IP经过一系列替换操作最终转为全局IP,即NAT是一种将私有IP和全局IP相互转化的技术

装有NAT软件的路由器叫做NAT路由器,所有使用私有IP的主机在和外界通信时,都要在NAT路由器上将其私有IP转换成全局IP

很多学校、家庭、公司内部每个终端设置的IP都是私有IP,而只在路由器或必要的服务器上设置全局IP

全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的

3.2 NAT IP转换过程

假设某个局域网中有A、B、C三台主机,在公网中有一台服务器,以主机A访问公网中的这台服务器为例,观察数据包在传输过程中IP地址的转换过程


数据包从局域网到公网的过程


b5b42b3400394138bd8e90cd217f2626.png


主机A向服务器发起数据请求的过程中,数据包中IP地址的转换过程如下:


开始,该数据包中的源IP地址就是主机A的私有IP地址,目的IP地址就是服务器的公网IP地址

当数据包经过NAT路由器时,路由器会将该数据包的源IP地址替换成WAN口IP地址,此时该数据包的源和目的IP地址就都是公网IP了

该数据包在互联网中经过各种路由转发,最终到达服务器主机

服务器收到主机A的数据请求并处理后,就会对主机A发来的请求进行响应


数据包从公网到局域网的过程


111fcaf6242e47b68de9e43fb0558dc4.png


服务器向主机A进行响应的过程中,数据包中IP地址的转换过程如下:


开始,该数据包中的源IP地址就是服务器的公网IP地址,目的IP地址就是NAT路由器的WAN口IP地址

数据包在互联网中进行路由转发,到达主机A所在局域网的NAT路由器,此时路由器会将该数据包的目的IP地址替换成主机A的私有IP地址

最终路由器就会将该数据包转发给局域网中的主机A

因为主机A向服务器发起数据请求时,该数据包中的源IP地址被替换成了NAT路由器的WAN口IP地址,相当于是该路由器代替主机A向服务器发起了数据请求,因此服务器发出的响应数据包的目的IP地址应该是NAT路由器的WAN口IP地址


3.3 NAPT

地址转换表


当局域网中的主机要访问外网时,NAT路由器会将这些数据包的源IP地址替换成WAN口IP地址

当外网发来响应数据时,NAT路由器又会将响应数据包的目的IP地址替换成局域网中对应主机的IP地址

那NAT路由器是如何判断,应该将从外网收到的数据包转发给局域网中的哪一台主机呢?


实际在NAT路由器内部,有一张自动生成的,用于地址转换的表

该转换表中维护的就是局域网中主机的私有IP,与其对应访问的外网中的某个公网IP之间的映射关系

局域网中的主机第一次向外网发起数据请求时,就会生成表中的映射关系

如在TCP建立连接时,会建立对应的映射关系,在TCP断开连接后,就会删除对应的映射关系

在刚才的例子中,主机A第一次向服务器发起数据请求时,路由器中就会建立以下映射关系


d6181b94af674e09913c54e8e76efbbe.png


当NAT路由器收到服务器向主机A发来的响应数据时,就可以通过查表得知该响应数据是发送给局域网当中的主机A的


但若转换表中维护的只是局域网中主机的私有IP,与其对应访问的外网中的某个公网IP之间的映射关系,那么就会出现某些问题。若局域网中的主机A和主机B同时都在访问该服务器,那么此时转换表中就会建立如下两对映射关系:

ba4286fd11ae48789f1f980c8ccbfa8e.png



此时这张转换表只能保证从左到右的唯一性,而不能保证从右到左的唯一性,当服务器发来响应数据时,该数据包中的目的IP地址都是路由器的WAN口IP,此时NAT路由器就无法判断该数据包应该转发给主机A还是主机B,此时就需要用到NAPT技术


NAPT


NAPT(Network Address Port Translation,网络地址端口转换),可以将多个内部地址映射为一个合法公网地址


当局域网中的主机向外网发送数据时,路由器会将该数据包的源IP地址替换为WAN口IP地址,并建立该主机私有IP与其对应访问的公网IP之间的映射关系

但若局域网中的多台主机同时访问同一个外网服务,当路由器收到外网发来的响应数据时,路由器无法判断该响应数据应该转发给局域网中哪台主机,因为该局域网中所有主机的数据包都由路由器代替发送了,因此发来的响应数据包的目的IP地址都是路由器的WAN口IP地址

于是NAPT在建立转换表的映射关系时,除了建立局域网中私有IP与其对应访问的公网IP之间的映射关系外,还会加上一个由NAT路由器选定的端口号

此时当局域网中的多台主机同时访问同一个外网服务时,虽然外网发来的响应数据的目的IP地址都是路由器的WAN口IP,但发给局域网中不同主机的响应数据对应的目的端口号是不同的,此时路由器就能通过 IP+Port 的方式来区分发给不同主机的数据包

如局域网中的主机A和主机B都在访问同一个服务器,并且访问服务器时采用的端口号都是1025


假设主机A发送的数据包先到达路由器,此时路由器将数据包的源IP地址替换成WAN口IP地址,由于路由器用于访问该服务器的1025号端口没有被使用,因此该数据包的源端口号可以不变

当主机B发来的数据包到达路由器时,路由器同样将数据包的源IP地址替换成WAN口IP地址,但此时路由器用于访问该服务器的1025号端口已被使用,因此路由器会重新选定一个端口号对数据包的源端口号进行替换

7a5cc854eeac4d9fa3b489a787ceae90.png


此时这张转换表既能保证从左到右的唯一性,也能保证从右到左的唯一性


当服务器发来的响应数据到达NAT路由器时,虽然服务器发给主机A和主机B的数据包对应的目的IP地址相同

但路由器用1025号端口代替主机A进行数据请求的,用1026号端口代替主机B进行数据请求的

因此NAT路由器可以根据数据包目的端口号,来判断应将数据包转发给主机A还是主机B,进行对数据包中的目的IP地址进行替换,然后转发给局域网内对应主机

路由器


路由器是工作在网络层的一个设备,负责将数据包从一个网络转发到另一个网络,但不能狭义的认为路由器只能工作在网络层


NAT路由器在进行数据转发时,不仅能替换数据包的源和目的IP地址,在必要的情况下还可能会替换数据包的源和目的端口号,而端口号实际是传输层的概念


为了对IP地址动态管理,大部分路由器都带有DHCP功能,而DHCP是应用层的一个协议。因此现在的路由器其实并不仅仅提供网络层相关的服务,网络协议栈中的各层路由器可能都有涉及


3.4 NAT的缺陷

NAT技术进行私有IP和公网之间的替换,主要是依赖NAT路由器中维护的网络地址转换表,但这张转换表也体现出了NAT的一些缺陷:


无法从NAT外部向内部服务器建立连接,因为外部无法知道内部的私网IP,就无法主动与内部服务器建立连接

转换表的生成和销毁都需要额外开销

通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开

3.5 NAT与代理服务器

代理服务器(Proxy Server)的功能就是代理网络用户发送、获取网络信息,代理服务器又分为正向代理和反向代理


正向代理


正向代理,位于客户端和目标服务器之间,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端


be9d91e6343c4428a546f5f0409e5f80.png


公司内部一般都有自己的服务器,当使用公司内网上网时


对外网发起的数据请求,先转发到公司服务器上,然后由公司的这台服务器代替你对外网进行访问

当公司的服务器收到对应外网的响应数据后,再由公司服务器将数据转发给你

正向代理的好处:


正向代理最大的一个好处就是可以加速资源访问

如公司中大量员工都要访问外网的同一个资源,那么正向代理服务器就可以将对应的资源缓存到本地,当其他人要访问该资源时,直接在正向代理服务器获取即可,而不需要再次进行外网访问

反向代理


反向代理,也位于客户端和目标服务器之间,对于客户端而言,反向代理服务器就相当于目标服务器,用户不需要知道目标服务器的真实地址,用户只需访问反向代理服务器就可获得目标服务器提供的服务


客户端直接向反向代理服务器发起数据请求,然后再由反向代理服务器将客户端的数据请求转发给真正的目标服务器进行处理,数据处理完毕后反向代理服务器再将数据结果返回给客户端


e0f9edb627c54c63a1afdc6df8c4e1b7.png


如域名www.baidu.com对应的服务器实际就是一个反向代理服务器


百度内部实际并不只有一台服务器,但不同地区的人们都可以通过访问www.baidu.com享受到百度提供的服务,实际访问的就是百度的反向代理服务器

当这台反向代理服务器收到客户端的数据请求后,就会将数据请求转发给百度内部的某台服务器进行数据处理,然后再将数据处理的结果返回给客户端

反向代理的好处:


反向代理可以起到负载均衡的作用。比如不设置反向代理服务器,那么用户在访问百度时,就会随机访问到百度内部的某台服务器,此时就可能导致某些服务器压力太大,而某些服务器却处于闲置状态。而设置了反向代理服务器后,就能够通过某些方法让用户的数据请求较为平均的落到每台服务器上

反向代理还能起到安全防护的作用。有了反向代理服务器后,不需直接将提供服务的服务器对应的信息暴露。当有非法请求发送到反向代理服务器时,反向代理服务器就相当于一层软件屏障,可以在反向代理服务器中部署一些防护措施,让这些非法请求在反向代理服务器就被过滤,而不会影响内部实际提供服务的服务器

注意:代理服务器的主要工作只是对数据进行转发,因此代理服务器处理数据的压力不会特别大,并且代理服务器也可以有多个,因此不必担心代理服务器过载的情况


正向代理和反向代理的异同


正向代理和反向代理的相同点:


正向代理服务器和反向代理服务器都位于客户端和服务器之间

正向代理服务器和反向代理服务器的主要工作,都是将客户端的请求转发给服务器,再将服务器的响应转发给客户端

正向代理和反向代理的不同点:


正向代理一般为客户端架设,需要对客户端主机进行设置,可帮助客户端访问其无法访问的服务器资源的,如:vpn翻墙

反向代理一般是服务端架设的,可帮助服务器做负载均衡、安全防护等工作,如百度的反向代理服务器

正向代理中,服务器不知道真正的客户端到底是谁,服务器认为正向代理服务器就是真实的客户端,而反向代理中,客户端不知道真正的服务器是谁,客户端认为反向代理服务器就是真实的服务器

NAT和代理服务器的区别


NAT和代理服务器都是代理向服务器发起数据请求的,但有如下区别:


从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题,而代理服务器更贴近具体应用,如通过代理服务器进行翻墙、像迅游这样的加速器也是使用的代理服务器

从底层实现上讲,NAT工作在网络层,直接对IP地址进行替换,而代理服务器往往工作在应用层

从使用范围上讲,NAT一般在局域网的出口部署,而代理服务器可以在局域网代理,也可以在广域网代理,也可以跨网代理

从部署位置上看,NAT一般集成在防火墙、路由器等硬件设备上,而代理服务器则是一个软件程序(比如Nginx和Apache),需要部署在服务器上


目录
相关文章
|
19天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
42 3
|
4天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
26 3
|
4天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
15 2
|
7天前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
21 3
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
62 11
|
9天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
9天前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
16天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
16天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
31 1

推荐镜像

更多