NAT 原理与NAT穿越

最近在看负载均衡方面的东西中很多都提到了NAT穿越,特意在此总结一下:
先做一个约定:
内网A中有:A1(192.168.30.112),A2(192.168.30.114)两个用户
网关X1(一个NAT设备)有公网IP222.225.80.51;
内网B中有:B1(192.168.40.112),B2(192.168.40.114)两个用户
网关Y1(一个NAT设备)有公网IP222.225.50,34;.

NAT的简介和原理

简介

NAT即Network Address Translation,它可以让那些使用私有地址的内部网络连接到Internet或其它IP网络上.NAT路由在将内部网络的数据包发送到公用网络时,在IP包的报头把私有地址转换成合法的IP地址.

原理:

当内部网络中的一台主机想传输数据到外部网络时,它先将数据包传输到NAT路由器上,路由器检查数据包的报头,获取该数据包的源IP信息,并从它的NAT映射表中找出与该IP匹配的转换条目,用所选的内部全局地址(全局唯一IP地址)来替换内部局部地址,并转发数据包.
当外部网络对内部主机进行应答时,数据包被送到NAT路由器上,路由器接收到目的地址为内部全局地址(外网IP)的数据包,它将用内部全局地址通过NAT映射表查找内部局部地址,然后将数据包的目的地址替换成内部局部地址(内网私有IP),并将数据包转发到内部主机.

NAT有什么优点和缺点?

优点
  • 对于家庭或小型商业机构,使用NAT可以更便宜,更有效的接入Internet。
  • 使用NAT可以缓解目前全球IP地址不足的问题.
  • NAT能够隐藏内部网络,保证内部网络的安全性.
缺点
  • NAT会增加延迟,因为要转换的每个数据包包头的IP地址,增加了延迟.
  • 导致无法进行端到端IP跟踪.
  • NAT会使某些使用内嵌地址的应用不能正常工作.
NAT的三种类型
静态NAT (一对一)

静态转换:(static Nat):是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址,借助静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问.
假设在A网中A1客户机请求百度具体过程如下:(前提是已经进行过静态NAT配置.)
首先进行DNS解析得到百度的IP为180.97.33.107:4000.接下来的过程如下:
请求过程:

在客户机
192.168.30.112:4000 --> 180.97.33.107:4000
在网关:
222.225.50.81:4000  --> 180.97.33.107:4000
网关上的静态映射表:
192.168.30.112:4000  -->222.225.80.51:4000
根据公网IP,改请求包的源IP. 

回应过程
百度的应用服务器收到请求后,处理请求,回复请求如下:

在百度的应用服务器上:
180.97.33.107:4000   --->222.25.50.81:4000
在网关:
180.97.33.107:4000   --->192.168.30.112:4000 
根据网关上的静态映射表,改变目的IP
总结

在A网中,网关中只有一个合法的公网IP,在A网中的内网中,就只能有一台pc能通过这个网关访问外网,它们之间是一一对应关系,一个内网IP对应网关的一个公网IP,再进行配置时就已经指定.如果想让内网中的其它pc也能访问外网,那么网关就必须有多个公网IP,并对每台系想访问外网的pc进行静态配置.

动态NAT (多对多)

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对并不是一一对应的,而是随机的。所有被管理员授权访问外网的私有IP地 址可随机转换为任何指定的公有IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。每个地址 的租用时间都有限制。这样,当ISP提供的合法IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式。
继续假设A网中的A1访问百度.
前提是进行过动态NAT配置. 这里假设网关A上有3个合法的公网IP(222.225.80.51,222.225.80.52,222.225.80.53)
请求过程

在客户机
192.168.30.112:4000 --> 180.97.33.107:4000
在网关:
222.225.80.51:4000  --> 180.97.33.107:4000 //这个公网IP是从配置时指定的公网IP中随机选择的.也有可能会是222.225.80.52或222.225.80.53;
网关上的静态映射表:
192.168.30.112:4000  -->222.225.80.51:4000
根据公网IP,改请求包的源IP. 

回应过程

在百度的应用服务器上:
180.97.33.107:4000   --->222.25.50.81:4000
在网关:
180.97.33.107:4000   --->192.168.30.112:4000 
根据网关上的静态映射表,改变目的IP
端口多路复用(多对一,目前使用最多的)
 通过使用端口多路复用,可以达到一个公网地址对应多个私有地址的一对多转换。在这种工作方式下,内部网络的所有主机均可共享一个合法外部IP地 址实现对Internet的访问,来自不同内部主机的流量用不同的随机端口进行标示,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有 主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

A网中的A1,A2同时访问百度
请求过程

在客户机
192.168.30.112:4000  ---> 180.97.33.107:4000
192.168.30.114:4000  ---> 180.97.33.107:4000
在网关
222.225.80.51:2223   ---> 180.97.33.107:4000
222.225.80.51:2345   --->180.97.33.107:4000
网关的映射:
192.168.30.112:4000  ---> 222.225.80.51:2223
192.168.30.114:4000  ---> 222.225.80.51:2345 

回复过程和上面的相同,先由百度应用服务器发给网关,查询映射表,发给对应的pc;

不同NAT 网关后的内部主机如何互访?(P2P如何穿越NAT)?

场景

A网中的A1(192.168.30.112)想访问B网中的B1(192.168.40.112);
假设1:假设A网中A1首先访问B网的网关(222.225.50.34),那么A1又怎么能知道B1的网关是222.225.50.34.好,暂且假设A1知道B1的网关为222.225.50.34,现在请求到了B1的网关,那么它又怎么知道发给A网中的哪个主机pc呢.

向外部固定的服务器注册外部地址和端口号.
  • 首先,A1和B1都要向服务器发起注册,连接中携带用户名,这样服务器收到连接后就能将注册信息中携带的IP地址,端口号和用户名关联,做成一张表:
    eg:A1,B1访问180.34.56.12进行注册.
A1 192.168.30.112:4000  -- > 180.34.56.12:5687  
B1 192.168.40.112:4000  -- > 180.34.56.12:5678

A1的网关映射表: 192.168.30.112:4000   --> 222.225.80.51:2345 
B1的网关映射表:192.168.40.112:4000   --> 222.225.50.34:3245 

在180.34.56.12保存一张表

用户名网关IP端口
A1222.225.80.512345
B1222.225.50.343245|
现在假设A1访问B1,先去180.34.56.12检索B1的网关的IP和端口,检索到向其发送连接. 
  • 当数据包到达B1的网关时,根据外网IP和端口查询网关的映射表得到内部IP和端口。
  • 把数据包发给内网对应的pc.
  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NAT网络地址转换)穿越是一种技术,用于在经过NAT设备的网络中建立点对点的直接连接。它的工作原理如下: 1. 穿越请求发起:当两个位于不同NAT后面的设备(称为内部主机)希望建立直接连接时,其中一个设备(称为发起者)会发送一个穿越请求,通常是通过一个中介服务器或者STUN(Simple Traversal of UDP through NATs)服务器。 2. 中介服务器:中介服务器是一个位于公共互联网上的服务器,它帮助内部主机进行穿越。发起者会向中介服务器发送一个穿越请求,包括自己的外部IP地址和端口号。 3. 中介服务器回应:中介服务器收到穿越请求后,会将发起者的外部IP地址和端口号转发给目标设备。目标设备可以通过这些信息知道如何与发起者建立直接连接。 4. 连接建立:目标设备会使用发起者提供的外部IP地址和端口号,直接向发起者发送连接请求。由于目标设备使用了发起者的外部地址,因此该请求可以成功穿越NAT并到达发起者。 5. 数据传输:一旦连接建立,发起者和目标设备之间就可以直接进行数据传输,而无需通过NAT设备进行转发。 需要注意的是,NAT穿越可能需要使用其他技术来实现,例如端口映射(Port Mapping),UPnP(Universal Plug and Play)或者ICE(Interactive Connectivity Establishment)等。这些技术可以帮助内部主机和NAT设备之间进行通信,并确定如何建立直接连接。 总结起来,NAT穿越通过中介服务器或其他辅助手段,使位于不同NAT后面的设备能够建立点对点的直接连接,从而实现端到端的通信。这种技术在点对点应用、实时通信和文件传输等场景中非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值