[网络]NAT与内网穿透技术初探【待续】
1 局域网网段IP
要真正了解NAT就必须先了解现在IPv4地址的使用情况,私有 IP 地址是指内部网络或主机的IP 地址,公有IP 地址是指在因特网上全球唯一的IP 地址。RFC 1918 为私有网络预留出了三个IP 地址块,如下:
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255
上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP 或注册中心申请而在公司或企业内部自由使用。
2 NAT
2.1 NAT设备如何区分不同的私网内IPv4的Host呢?
IPv4地址只有32位,满打满算只有42.9亿个地址,还要去掉保留地址、组播地址,能用得只有36亿左右,IPv4很早就被列强瓜分完毕,感谢有NAT这项技术苦苦支撑,我们还可以继续在互联网遨游。
公司局域网、机构局域网、个人局域网可以使用局域网IPv4地址(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16),然后在各个局域网的边界WAN口使用一个或多个公网IPv4进行一对多的转换。
如果是一对一转换,那压根节省不了IPv4地址空间;所以一般NAT都是一对多的,即一个公网IPv4映射多个私网IPv4,那问题来了,NAT设备如何区分不同的私网IPv4 的host呢?
答案是:NAT使用基于session 转换规则:
- 对于
TCP/UDP
使用:Host 's 私有IPv4 + Port <------> NAT 公网IPv4 + Port - 对于
ICMP
使用:Host 's 私有IPv4 + session ID <------> NAT 公网IPv4 + session ID
由于session ID 在NAT设备上是独一无二的,所以NAT可以很容易区别局域网内部的不同host。
至于其它传输协议,NAT使用的也是类似session ID 的转换规则,即使用可以将不同host 轻易分辨出来的字段做键值,动态创建映射表项,做双向的地址+ KEY 的转换。
2.2 NAT解决的什么问题?
NAT(Network Address Translation,网络地址转换),也叫做网络掩蔽或者IP掩蔽。
NAT是一种网络地址翻译技术,主要是将内部的私有IP地址(private IP)【转换成】可以在公网使用的公网IP(public IP)。
2.2 NAT的来源、定义
NAT(Network Address Translation,网络地址转换)是1994年提出的。
当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网(私网IP)连接到因特网(公网IP,全球唯一)的路由器上安装NAT软件。
装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。
这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。
有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文的数据部分进行修改,以匹配IP头中已经修改过的源IP地址。
否则,在报文数据部分嵌入IP地址的应用程序就不能正常工作。
3 内网穿透技术:=NAT穿透
3.1 定义
3.2 内网穿透技术与NAT的区别
NAT:解决 内网Host访问外网指定Host的问题。(内网Host---->外网Host)
内网穿透技术: 解决 外网Host访问内网指定Host的问题 (内网Host<----外网Host)
3.2 内网穿透实现方案比较
3.2.1 花生壳的内网穿透思路
花生壳DDNS是将用户的动态IP 地址映射到一个固定的域名上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP 地址传送给位于服务商主机上的服务器程序,服务项目器程序负责提供 DNS 服务并实现动态域名解析。DDNS 的主要作用就是捕获用户每次变化的 IP 地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来与用户交流了。
X 参考文献
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!