NAT技术

NAT技术

一、介绍

  • NAT(Network Address Translation,网络地址转换)是一种在计算机网络中广泛使用的技术,主要用于实现私有网络地址与公共网络地址之间的转换。它不仅解决了IPv4地址不足的问题,还增强了网络安全性和隐蔽性。
  • NAT技术的基本原理是在专用网(如局域网)连接到公共网络(如互联网)的路由器上安装NAT软件。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

二、实现方式

  • 静态转换:静态转换是指将内部网络的私有IP地址转换为公有IP地址时,IP地址对是一对一的,且这种映射关系是一成不变的。某个私有IP地址只转换为某个公有IP地址。这种方式通常用于内部网络中只有少量计算机需要对外进行通信的情况,如服务器等。
  • 动态转换:动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的、随机的。所有被授权访问互联网的私有IP地址可随机转换为任何指定的合法IP地址。动态转换可以使用多个合法外部地址集,适用于内部网络中有大量计算机需要对外进行通信的情况。
  • 端口多路复用:端口多路复用是指改变外出数据包的源端口并进行端口转换。采用这种方式,内部网络的所有主机均可共享一个合法外部IP地址实现对互联网的访问。这种方式可以最大限度地节约IP地址资源,同时隐藏网络内部的所有主机,有效避免来自互联网的攻击。因此,端口多路复用方式是当前网络中应用最多的NAT技术。

三、典型应用场景

  • NAT技术的典型应用场景是在私有网络内部(如园区、家庭)使用私有地址,而在网络出口设备(如路由器)上部署NAT。
  • 对于从内部网络向外部网络发送的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址);而对于从外部网络向内部网络发送的流量,则对数据包的目的地址进行转换。通过这种方式,可以有效地节约公网IPv4地址资源。

四、转换过程示意图

五、NAPT

1、介绍

  • NAPT(Network Address Port Translation,网络地址端口转换),也称为端口多路复用,是一种特殊类型的网络地址转换(NAT)技术。它不仅能够转换IP地址,还能转换传输层端口号。
  • 采用NAPT方式,内部网络的所有主机均可共享一个合法外部IP地址实现对互联网的访问。这种方式可以最大限度地节约IP地址资源,同时隐藏网络内部的所有主机,有效避免来自互联网的攻击。

2、工作原理

  • 当私有网络中的设备尝试与外部网络通信时,NAPT设备(通常是路由器或防火墙)会检查传出数据包的源IP地址和端口号。然后,它会将这些信息替换为公共IP地址和一个新的端口号(如果原始端口号已经被使用,则选择一个未使用的端口号)。
  • 这个转换过程会记录在NAPT表中,以便在接收到响应数据包时能够正确地将其转发回原始设备。

3、示意图

六、缺点

  • 增加数据包延迟:NAT技术需要对数据包进行地址转换和端口转换等操作,这会增加数据包的延迟,从而影响网络的响应速度。
  • 限制某些应用程序的带宽使用:NAT技术可能会限制网络中的某些应用程序(如P2P文件共享和视频流等)的带宽使用,这会影响网络的传输速度和质量。
  • 成为网络性能的瓶颈:NAT技术通常是在路由器上实现的,因此路由器的性能也会成为影响网络性能的瓶颈。如果路由器性能不足,就会影响数据包的转发速度和网络响应速度。
  • 无法从NAT外部向内部服务器建立连接,装换表的生成和销毁都需要额外开销。

七、代理服务

1、介绍

  • 代理服务器是一种位于客户端和服务器之间的计算机程序或系统,其主要功能是接收来自客户端的请求,然后代表客户端向目标服务器发起请求,并将从服务器返回的数据转发给客户端。这种机制使得代理服务器能够在客户端和服务器之间起到中介的作用。

2、主要功能

  • 匿名性和隐私保护:代理服务器可以隐藏客户端的真实IP地址,从而保护用户的隐私。在某些情况下,代理服务器还可以提供匿名访问服务,使得用户能够绕过网络审查或访问被限制的网站。
  • 缓存和加速:代理服务器可以缓存频繁访问的网页内容,从而减少向目标服务器发送的请求数量,加快访问速度。对于需要频繁访问相同资源的用户来说,代理服务器可以显著提高访问效率。
  • 负载均衡:在一些大型网络或服务器集群中,代理服务器可以分配请求,实现负载均衡,确保每个服务器都能得到合理的请求量。
  • 访问控制和过滤:代理服务器可以设置访问规则,限制或允许特定用户或IP地址访问某些资源。它还可以用于过滤恶意内容或广告,提高用户体验。

3、正向代理

(1)定义

  • 正向代理(Forward Proxy)是代理服务器的一种,用于代理客户端向目标服务器发起请求。
  • 客户端通过正向代理服务器发送请求,代理服务器代替客户端向目标服务器请求资源,并将服务器的响应返回给客户端。

(2)工作原理

  • 客户端向正向代理服务器发送请求,指明希望访问的目标服务器。
  • 正向代理服务器接收到请求后,代替客户端向目标服务器发送请求。
  • 目标服务器处理请求,并将响应数据返回给正向代理服务器。
  • 正向代理服务器将响应数据转发给客户端。

(3)特点

  • 隐藏客户端的真实IP地址,使得服务器无法直接看到客户端的请求来源。
  • 客户端必须进行一些特别的设置才能使用正向代理。

4、反向代理

(1)定义

  • 反向代理(Reverse Proxy)是代理服务器的一种形式,用于代理服务器端处理来自客户端的请求。
  • 客户端将请求发送给反向代理服务器,反向代理服务器将请求转发给内部的实际服务器,并将服务器的响应返回给客户端。

(2)工作原理

  • 客户端向目标服务器发送请求。
  • 请求首先会经过反向代理服务器。
  • 反向代理服务器根据配置决定将请求转发给哪个实际服务器进行处理。
  • 实际服务器处理请求,并将响应数据返回给反向代理服务器。
  • 反向代理服务器将响应数据转发给客户端。

(3)特点

  • 隐藏服务器的真实IP地址,使得客户端无法直接访问实际服务器。
  • 对客户端而言,反向代理服务器就相当于目标服务器。

5、与NAT的区别

  • 应用层面:NAT设备是网络基础设备之一,主要解决IP地址不足的问题。而代理服务器则更贴近具体应用,如通过代理服务器进行翻墙、加速访问等。
  • 底层实现:NAT工作在网络层,直接对IP地址进行替换。而代理服务器则往往工作在应用层,处理各种协议,如HTTP、FTP等。
  • 使用范围:NAT一般在局域网的出口部署,用于实现内部网络与外部网络的通信。而代理服务器则可以在局域网、广域网甚至跨网中部署。
  • 部署位置:NAT通常集成在防火墙、路由器等硬件设备上。而代理服务器则是一个软件程序,需要部署在服务器上。

八、NAT穿透

1、介绍

  • NAT穿透(NAT Traversal),又称内网穿透或内网映射,是计算机科学中TCP/IP网络中的一个常见问题,它涉及在处于使用了NAT(网络地址转换)设备的私有TCP/IP网络中的主机之间建立连接。
  • NAT穿透是指在一个内网环境下,能够将内部的服务、设备(如电脑、手机、物联网设备等)通过特定的中间设备及协议连接到公网上。从而使外网用户可以远程访问内部网络上的服务或设备,而不需要对内网的网络架构做任何改变。

2、原理

  • NAT穿透的实质是利用路由器上的NAT系统,使具有特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。
  • 具体来说,NAT设备(或软件)维护一个状态表,它会把内部网络的私有IP地址映射到外部网络的合法IP地址上。每个包头中的IP地址和端口信息在NAT设备(或软件)中都被修改并翻译成正确的IP地址发往下一级。当一个内网主机通过NAT打开一个"外出"的TCP或UDP会话时,NAPT(网络地址端口转换)会分配给这个会话一个公网IP和端口,用来接收外网的响应数据包,并经过转换通知内部网的主机。
  • 然而,NAT技术的一个问题是,它自动屏蔽了非内网主机主动发起的连接,即从外网发往内网的数据包将被NAT设备丢弃,这使得位于不同NAT设备之后的主机之间无法直接交换信息。NAT穿透技术正是为了解决这个问题而诞生的。

本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信

创作不易,如果觉得博主写得不错,请点赞、收藏加关注支持一下💕💕💕

相关推荐
A.sir啊3 小时前
爬虫基础(六)代理简述
爬虫·python·网络协议
Bulestar_xx3 小时前
vulnhub DC-4 walkthrough (含非预期)
linux·网络·安全
5xidixi6 小时前
HTTP(1)
网络·网络协议·http
doubt。8 小时前
2.[网鼎杯 2020 朱雀组]phpweb
网络·安全·web安全·网络安全·php·代码复审
lingllllove8 小时前
使用 HTTP::Server::Simple 实现轻量级 HTTP 服务器
服务器·网络协议·http
職場上的造物主8 小时前
高清种子资源获取指南 | ✈️@seedlinkbot
python·ios·php·音视频·视频编解码·视频
dal118网工任子仪8 小时前
94,【2】buuctf web [安洵杯 2019]easy_serialize_php
android·前端·php
Linux运维老纪8 小时前
K8s之Service详解(Detailed Explanation of K8s Service)
服务器·网络·云原生·容器·kubernetes·云计算·运维开发
Ljw...9 小时前
udp和tcp的区别
网络协议·tcp/ip·udp
程序猿编码9 小时前
自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
linux·c语言·c++·网络安全·shell·命令行