首先,我们要了解一个概念:NAT。网络地址转换是在IP地址日益稀缺的情况下产生的,主要目的是为了重用地址。NAT分为两类:基本NAT和NAPT(网络地址/端口转换器)。
基本NAT是90年代中期提出的,当时在一个私网(域)中,只有少数节点需要与外网连接。这些节点需要全球唯一的IP地址,其他节点的IP地址则可以复用。基本NAT的作用是,子网内使用了一个预留的IP子网,外界是看不到的。只有少数IP地址可以对应真正的全球唯一IP地址。当这些节点需要访问外网时,基本NAT就负责将这个节点子网内的IP转换成一个全球唯一的IP并发送出去。
那么,另一种NAT——NAPT又是怎么回事呢?NAPT不仅会改变通过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。NAPT是我们真正讨论的主要话题。
接下来,让我们通过一个例子来了解NAPT的工作原理。假设有一个专用网络10.0.0.*,客户端A是这个网络中的一台计算机。该网络的网关(NAT设备)的外部IP是155.99.25.11(也应该有一个内部IP地址,如10.0.0.10)。如果客户端A中的一个进程想要访问外部网络主机18.181.0.31的1235端口,那么数据包通过NAT时会经历以下过程:
1. NAT将此数据包的原始IP地址更改为155.99.25.11。 2. NAT为这个传输创建一个会话,并给这个会话分配一个端口,比如62000。 3. 将这个包的源端口改成62000,所以原来是(10.0.0.1:1234→18.181.0.31:1235)变成了(155.99.25.11:62000→18.181.0.31:1235)。
一旦NAT创建了一个会话,它会记住端口62000对应10.0.0.1的端口1234,从18.181.0.31发送到端口62000的数据会被NAT自动转发到10.0.0.1。这样,客户端A就与外部网络主机建立了连接。
当然,在实际应用中,NAT还有许多其他的变体和功能,如端口多路复用、端口映射等。但是,只要掌握了NAT的基本原理,就能轻松应对各种网络环境下的IP转换问题。
如何把局域网IP改成广域网IP?其实在路由器上做nat(端口映射)就行了。首先,介绍一些基本概念:NAT(网络)
局域网IP如何变成广域网IP?其实在路由器上做nat(端口映射)就行了。
首先,介绍一些基本概念:
NAT(网络地址转换器):网络地址转换是在IP地址日益稀缺的情况下产生的,其主要目的是重用地址。NAT可以分为两类,基本NAT和NAPT(网络地址/端口转换器)。
起初,NAT是运行在路由器上的一个功能模块。
最早提出基本NAT是基于一个私网(域)中只有少数节点需要与外网连接(呵呵,这是90年代中期提出的)。那么实际上这个子网中只有少数节点需要全球唯一的IP地址,其他节点的IP地址应该是可以复用的。
所以NAT的基本功能很简单,子网内使用了一个预留的IP子网,外界是看不到的。子网中只有少数IP地址可以对应真正的全球唯一IP地址。如果这些节点需要访问外网,那么基本NAT就负责把这个节点子网内的IP转换成一个全球唯一的IP并发送出去。(基本NAT会改变IP包中原来的IP地址,但不会改变IP包中的端口。)
有关基本NAT,请参见RFC 1631。
另一种NAT叫做NAPT。从名字上也可以看出,NAPT不仅会改变通过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。我们可能没有看到很多基本的NAT设备(呵呵,我没见过),NAPT是我们真正讨论的主要话题。看:
服务器S1
181.0.31:1235
|
^第一期(A-S1) ^ |
| 18.181.0.31:1235 | |
v 155.99.25.11:62000 v |
|
精灵
155.99.25.11
|
^第一期(A-S1) ^ |
| 18.181.0.31:1235 | |
v 10.0.0.1:1234 v |
|
客户A
10.0.0.1:1234
有一个专用网络10。* * *,客户端A是其中一台计算机。该网络的网关(NAT设备)的外部IP是155.99.25.11(也应该有一个内部IP地址,如10.0.0.10)。如果客户端A中的一个进程(该进程创建了一个UDP套接字,绑定到1234端口)想要访问外部网络主机18.181.0.31的1235端口,当数据包通过NAT时会发生什么?
首先,NAT会将此数据包的原始IP地址更改为155.99.25.11。然后NAT会为这个传输创建一个会话(Session(Session抽象概念,如果是TCP,可能会话是以SYN包开始,以FIN包结束。还有UDP,从这个IP的这个端口的第一个UDP开始,结束,呵呵,可能几分钟,可能几个小时,看具体实现)并给这个会话分配一个端口,比如62000,然后把这个包的源端口改成62000。所以原来是(10 . 0 . 0 . 1:1234->;18.181.0.31:1235)改成了(155 . 99 . 25 . 11:62000->;18.181.0.31:1235)。
一旦NAT创建了一个会话,NAT会记住端口62000对应10.0.0.1的端口1234,从18.181.0.31发送到端口62000的数据会被NAT自动转发到10.0.0.1。(注意:这意味着18.181.0.31发往62000端口的数据会被转发,其他IP发往该端口的数据会被NAT丢弃),这样客户端A就与服务器S1建立了连接。
呵呵,上面的基础知识可能很多人都知道,所以下面才是重点部分。
看看下面的情况:
S1服务器S2服务器
18.181.0.31:1235 138.76.29.7:1235
| |
| |
- - -
|
^第一期(A-S1) ^ | ^第二期(A-S2) ^
| 18.181.0.31:1235 | | | 138.76.29.7:1235 |
155.99.25.11:62000诉155.99.25.11:62000
|
锥形NAT
155.99.25.11
|
^第一期(A-S1) ^ | ^第二期(A-S2) ^
| 18.181.0.31:1235 | | | 138.76.29.7:1235 |
10.0.0.1版:1234伏
|
客户A
10.0.0.1:1234
以上是弱电工业网整理的“局域网的IP如何变成广域网的IP[图文]”教程。