【转】NAT工作原理

深入学习NAT工作原理

我们单位中的电脑很多,组成了一个局域网,网络中只有一个电脑和外网(Internet)相连,当然有一个外网地址,但仅仅一个。我以前一直不明白,我们局域网的电脑均能上网,几台同时上也没有问题,究竟是怎么实现的?

当时我知道,Internet网上的计算机都必须有一个IP地址(公址Public IP),才能和Internet网络上其他设备正确通信。在某个时刻必须是唯一的(这句话某个时刻要解释一下,我以前家用电脑是通过电信上网的,每次登陆上网都会从电信公司ISP得到一个公址Public IP,但每次并不相同,当我得到某个公址Public IP,外网上的其他设备不会为我得到的那个公址Public IP;但是当我下线以后,其他某一台电脑是可以得到我刚才用的那个公址Public IP。其实ISP是把公址Public IP是租给我的,我不租时他们可以租给其他电脑以提高Public IP利用率(Public IP就是一种资源,不是无穷无尽的),但是不可以同时把一个公址Public IP租给两台设备,可以在不同时间把一个公址Public IP租给两台或更多设备,在任一时间一个公址Public IP只对应着Internet网上一个设备,如我的计算机,而不会两个)

我们局域网的电脑均能上网,几台同时上也没有问题,究竟又是怎么实现的?这就要说到我们今天学习的NAT。

下面先来一段教科书上的定义:NAT网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

看了上面定义,还是不能理解局域网中电脑几台同时均能上网的问题。

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat 和 端口多路复用OverLoad。

其中端口多路复用OverLoad是目前我们网络中应用最多的一类,我们就拿他说事。(其他两种,你感兴趣又不知道的话,不知百度之吧,呵,不是很难理解的)

搞懂了其中端口多路复用OverLoad,你就能理解理解局域网中电脑几台同时均能上网的问题了。不要怕头疼,接着看,关键的地方要到啦。

我们说我的计算机和外网通信,一定是我的电脑里有一个应用程序在运行,比如说IE浏览器。这个应用程序能够和外界Internet网通信,必须在本计算机上打开一个或几个端口;同样当他浏览某个网站的某个网页时,也必须通过网站服务器中的一个或几个端口才能复制网页内容再按原路传送过来,我们的浏览器将他显示在我们的屏幕上。这就是我们运用浏览器浏览网页的过程。从上面的过程我们可以知道,网络设备间通信不仅要有Public IP(我的计算机和网站服务器的),而且要有各自端口号才能完成相互的通讯。IP+端口号才是完整的通讯地址!

端口是什么?我罗嗦几句。这里的端口是指软端口。有有软就有硬,对!硬端口直观、简单,就是电脑主机箱后面的那些插口:RJ45接口、串口、并口、RS232等等,看得见、数得清的。

软端口是什么东东?电脑里应用程序、服务等打开的端口,看不见的,当然你看不见不要紧,那些应用程序能知道并使用。每个和外部通信的应用程序均会创建属于自己的一个(或几个)软端口以便和外部通信。当然每个端口有自己的端口号以示区分。通常一台计算机最多可以开65535个端口,也就是说端口号可以是1~65535,完全够你(的计算机中的应用程序)用的了。我们说的远程桌面运用,其实就开了一个端口:3389.通过这一个端口就可以完全控制你的电脑了。

有人还是搞不清软端口、硬端口,比如我以前就这样,看见端口就头晕。(我这人挺笨的,我妈可以证明)所以我就再比较一下他们。我们通常上网浏览、发邮件等会同时开几个软端口,他们都是通过RJ45这一个硬端口和外界通信的,也就是说,一个硬端口中可以同时通过几个软端口中的通信数据。体会一下吧。什么,还不懂?!你可以到一边凉快……

顺便说一句,应用程序都必须建立通信端口吗?不一定。比如有些游戏(也是一种应用程序)有单机版和网络版的,单机版就不一定建立通信端口(如果能更新就要建立),网络版一定会建立。以后你就知道单机版和网络版的含义和区别了吧。

端口问题说了半天,也许你已经……,我要说的,正是这些端口构成NAT的基础,使内网的多台电脑能够共享一个公址Public IP同时上网。理解上面的内容,下面就说明NAT工作原理——本篇重点!

NAT工作原理图

图  1

我们现在以一个IE浏览器浏览新浪首页实例来说明NAT工作原理(阅读下文是请多参见图1):

1、假设我们局域网中的一台电脑A(192.168.1.100),打开了IE浏览器,IE浏览器程序运行后,打开本机的1111端口(这个端口是随机的,系统动态产生),我想浏览新浪首页,就在地址栏输入http://www.sina.com.cn/,即我要访问http://www.sina.com.cn/,http://www.sina.com.cn就是12.130.132.30:80(这里面涉及到DNS,不是本篇重点,说明省略),此时我的电脑A就向内网(局域网)发一个数据包,这个数据包不仅有数据(即我想干什么——浏览网页),还包括一类重要的信息——源地址和目标地址。源地址就是表明数据包时由谁发出的,源地址由IP和端口两部分组成,我们这就是192.168.1.100:1111;目标地址表明此数据包要送到什么地方去,或者理解为要与谁通信,他也是由IP和端口两部分组成,我们这就是12.130.132.30:80,数据包大概以广播的形式发出,局域网上的其他电脑均能收到,但他们不会有响应,但是作为NAT服务器的计算机(本例为192.168.1.1)收到此数据包会有响应。

(NAT服务器的计算机有两个网卡:一个和内网相连,此网卡IP是私址(PRIVITE IP)类型,我们这为(192.168.1.1);另外一个和外网(Internet)相连,此网卡IP是公址(PUBLIC IP)类型,我们这为(122.195.93.74)。他把局域网和外网联系起来,并完成内外网地址(IP+端口)的映射工作)

2、3、NAT服务器会根据数据包中的目标地址,把这个数据包送到目标地址12.130.132.30:80——新浪网站(WEB服务器),但在送出此数据包之前,他对此数据包进行了修改:把此数据包的源地址由192.168.1.100:1111改为122.195.93.74:2222,这个过程就是NAT。数据包的目标地址不变。同时,他会在自己计算机中建立如图2的对照表(NAT TABLE),以后还用的上此表,后面会说到。

图 2

此时两者建立的关系是映射,即一一对应,在不中断IE浏览器程序运行,这种关系一直保持。此时如果你又打开搜狐网页,就又会增加建立一个映射,如192.168.1.100:1112——122.195.93.74:2223。

从上我们可以看到,无论是IE浏览器程序开的端口,如本例中1111,还是NAT服务器的映射端口本例中2222,都是随机的,但一旦建立,他们必须是一一对应的映射关系,而且不会被其他程序再使用!

4、接着说,新浪网站(WEB服务器)——12.130.132.30:80口运行的程序收到此数据包以后,处理分析得知,要把本站某网页内容复制后再发到122.195.93.74:2222(注意这是我们的NAT计算机),就打包数据发送。这个数据包也有源地址和目标地址,源地址12.130.132.30:80(新浪),目标地址122.195.93.74:2222(我们的NAT计算机)。

5、很快我们的NAT计算机就收到到此包了,NAT计算机根据图2的对照表,把此数据包的目标地址从122.195.93.74:2222改为192.168.1.100:1111,这个过程也是NAT,源地址不变,为新浪网址12.130.132.30:80。

6、修改后将数据包向内网发出,我的这台局域网中的电脑A,更确切的说我的电脑运行着的IE浏览器程序就能收到他要的外网数据,处理以后就在我的显示器上将新浪网页显示出来。

至此完成我们内网电脑通过NAT服务器和外网设备一次完整的通讯,这个过程中地址改过两次,也就是说NAT两次:在我内网计算机上传的过程中,数据包的源地址改过一次,目标地址一直保持不变;下传过程中相反。

类似的,我们局域网中的计算机B要访问外网,过程和上相似,NAT服务器会提供另外一个未用的端口给局域网中的计算机B。只要NAT服务器能提供不同的端口(NAT服务器可提供上万个端口),就可以让内网计算机和外网通讯(俗称上网),并且能让数台内网计算机互不影响地同时上网。

时间: 2024-08-15 19:56:49

【转】NAT工作原理的相关文章

[转]虚拟机VMware3种网络模式(桥接、nat、Host-only)的工作原理

VMware网络配置详解一:三种网络模式简介 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其 中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口,这些后面会详细介绍 选择虚拟机网络模 式方法如下,单击Edit virtual machine settings,如图所示: 然后在Hardware选项卡中选择Ethernet,在左边Network connection框架中有如下四个单选项: 1. Bridged(桥接模式) 在桥接模式下,VMwa

LVS集群之工作原理

  首先我们要了解LVS的工作机制: LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默认情况下通过用户请求的地址和端口来判断用户的请求,从而转发到后台真正提供服务的主机,而判断这种请求的是通过套接字来实现,所以四层就可以实现. 而且这个转发的过程对用户而言是透明的(简单的讲,就是用户访问DR的IP,而DR转发给RSS,而用户不知道这个过程) LVS的工作模式: 1.D

LVS的工作原理

NAT模型 NAT模型其实就是通过网络地址转换来实现负载均衡的,它的工作方式几乎跟iptables 中的DNAT一模一样的,NAT模型的工作方式: 1.用户请求VIP(也就是是CIP请求VIP) 2,Director Server 收到用户的请求后,发现源地址为CIP请求的目标地址为VIP,那么Dorector Server会认为用户请求的是一个集群服务,那么Director Server 会根据此前设定好的调度算法将用户请求负载给某台Real Server ,假如说此时Director Ser

lvs工作原理

LB Load Balancing:解决方案 硬件: F5 BIG-IP 思杰 Citrix Netscaler A10 A10 Array Redware 软件:lvs linux Virtual Server 作者章文嵩博士 ipvs相当于netfilter,工作在内核中,将用户转发 框架,需要依赖以规则完成转发 ipvs集群服务 定义一个或多个后端的服务器 ipvsadm LVS:四层交换.四层路由(据说并发400w,F5 600w) VIP: keepalived CIP   clien

lvs,dhcp,dns,lnmp,lamp,zabbix,nagios,hadoop,openstack,rsync等工作原理

一.客户端获取DHCP的过程 1.客服端通过广播发送    DHCPdiscovery包,寻找DHCP服务器数据包 源IP:0.0.0.0    目的地址:255.255.255.0 无响应:等待1秒,发送第二次.等待9秒,发送第三次.13.16. 有相应: 2.服务器提供地址信息    DHCPoffer包 用客户端MAC地址回应 数据包中包含IP地址.租约信息等 3.客户端接受并广播 发送    DHCPrequest广播包,告知网络中所有DHCP主机 发送arp包,检查IP是否可用,若被占

Sftp和ftp 区别、工作原理等(服务器被动就是被动模式,PORT模式建立数据传输通道是由服务器端发起的,在PASV模式中,数据传输的通道的建立是由FTP客户端发起的)good

Sftp和ftp over ssh2的区别 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.在此协议中SS

路由及路由器工作原理深入解析3:路由与端口

日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器"和"TCP/IP V4 协议网络的分段原理"2个问题,日志"路由及路由器工作原理深入解析2"http://user.qzone.qq.com/2756567163/blog/1438329517介绍了路由的工作原理,并以一个具体实例的实现深入剖析了路由的实现过程

路由及路由器工作原理深入解析4:路由器操作实例

日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路由器"和"TCP/IP V4 协议网络的分段原理"2个问题:日志"路由及路由器工作原理深入解析2"http://user.qzone.qq.com/2756567163/blog/1438329517介绍了路由的工作原理,并以一个具体实例的实现深入剖析了路由的实现过程

Sftp和ftp 差别、工作原理等(汇总ing)

Sftp和ftp over ssh2的差别 近期使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,仅仅要sshdserver启动了,它就可用,它本身不须要ftpserver启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.