NAT
Nat,网络地址转换协议。主要功能是实现局域网内的本地主机与外网通信。
在连接外网时,内部Ip地址需要转换为网关(一般为路由器Ip地址)(端口号也需要相应的转换)
如:QQ程序
在一个局域网中,路由器(网关)WAN侧ip为200.0.0.123
局域网三台计算机:计算机A 192.168.0.10,
计算机B 192.168.0.20,
计算机C 192.168.0.30
分别登陆一个qq程序,在各自机子上,IP和Port分别为
计算机A 192.168.0.10:4000,
计算机B 192.168.0.20:4000,
计算机C 192.168.0.30:4000
但是本局域网只有一个公网ip即
200.0.0.123,因此三个qq域外网通讯据需要将ip转换为公网ip,相应地为了不使端口号冲突,Port号也需要进行转换。
路由器(网关)通过NAT协议将3个qq程序转换为
计算机A
200.0.0.123
:4000,
计算机B
200.0.0.123
:4001,
计算机C
200.0.0.123
:4002,
再接收到qq服务器发来的数据流失,再讲Port4000的发给A,Port:4001的发给B
这就实现内网程序与外网的通讯。
Port Forwarding
前面叙述了内网程序如何访问外网。但是如果在内网搭建了服务器,外网如何访问内网服务器呢?
Port Forwarding提供了该功能。
假设局域网有一ftp服务器在计算机上,可以通过
Port Forwarding设置,使得200.0.0.123接收到的ftp流入包均直接转发给计算机A,即数据包在内网的目的地址直接是:192.168.0.10:21。即外网直接通过200.0.0.123:21就可以访问计算机A上的ftp服务器。
假设计算机A和B分别搭建了FTP服务器,端口号均为21.。。(局域网相关ip地址同上一例子)。
通过手动进行
Port Forwarding设置,指定计算机A的端口号映射为5050,
指定计算机A的端口号映射为5051。
这样外网要访问服务器A的ftp地址时,则使用
200.0.0.123:5050,访问服务器B的ftp:
200.0.0.123:5051
Port Triggering
配置数据流出的端口(triggered port)和数据流出的端口(forwarded port)。
使得外网流入
forwarded port的数据流均转向使用
triggered port的计算机。
在
Port Forwarding仅有一个ftp服务器的例子中,可以设置计算机A(有ftp服务器)的端口为5050,然后配置
triggered port为5050,
forwarded port为21,那流入port21的数据流就可以找到计算机A的ftp服务器。
——以上部分为个人理解,不保证准确。