NAT与ARP小结

不同负载均衡方式对网络结构和网络服务器配置有不同的要求,下面两个是与之关系比较紧密的技术。下面分别简要介绍各自原理和工作过程:
NAT(Network Address Translation)网络地址转换,主要针对IP v4地址不足提出的一种应对办法。其基本思想是为某个公司或单位分配一个或少量IP地址用于传输Internet流量,而在公司内部每台机器有自己的内部IP,内部机器之间通过内部IP传输流量;当一个内部分组需要传输到Internet上时通过NAT做网络地址转换,将内部IP转换成分配的对应InternetIP,现在的路由器一般都有这个功能。三段保留的私有IP或内部IP地址是:
10.0.0.0-10.255.255.255/8
172.16.0.0-172.31.255.255/12
192.168.0.0-192.168.255.255/16
上面只描述了一个分组出去的情形即替换内部IP即可,当一个应答分组回来的时候,那么NAT设备怎么知道用哪个目标IP来替换外部IP呢?理论上可以在IP头部添加一个新的域来保存最原始的IP地址,但这需要改变Internet上所有机器运行的的IP协议,显然不是一个有效的办法。发现所有IP分组携带的不是TCP就是UDP数据包,它们都包含了一个源端口和一个目的端口,NAT正是通过端口来解决上面提到的映射问题。
NAT设计上的一些缺陷:
1.NAT违反了IP的结构模型,本来的结构模型声明一个IP地址唯一标示一台机器,Internet路由也建立在此基础上,而NAT使得N台机器使用同一个IP;
2.NAT将Internet网络从一个无连接的网络变成一个面向连接的网络:NAT维护每个经过分组的映射信息:网络维护连接的状态,这种是面向连接网络的特性。一旦NAT设备崩溃其维护的映射关系丢失,进而导致所有TCP连接被破坏。而如果不使用NAT当路由器崩溃时是不会影响到TCP连接的。
3.NAT违反了软件分层的原则,网络层的功能依赖传输层数据的状态;如果TCP升级就可能导致NAT设备不能正常工作;
4.对于Internet上的非TCP或UDP进程,NAT无法正常工作;导致扩展新协议带来困难;

ARP协议:
由于数据链路层并不理解IP地址,绝大多数机器通过NIC解答LAN上,只能看到LAN地址。每个NIC在出厂的时候都全球唯一标示的一个MAC地址(MAC地址前24位是厂商ID,后24厂商自己分配)。因此需要建立IP到MAC地址的映射关系。以以太网为例:机器A要发送一个分组到目标IP(机器B),机器A通过IP协议只能知道发送的目标IP是否跟自己在一个网络、是否需要路由,但无法确定目标机器具体的MAC地址。在小型网络中可以手工维护这个映射很容易办到,但是当网络达到一定规模,手工维护的效率会非常低下。通常机器A可以发送一个广播分组到以太网去询问谁拥有目标IP,而拥有目标IP的机器将自己的MAC作为应答回复给A。而这个就是ARP协议运行过程。为了避免频繁的广播,一般会将IP-MAC映射关系缓存起来,而且为了避免来回确认在广播的时候直接将自己的IP-MAC映射放到广播分组中从而提高效率。此外,一个机器在启动时通常会将其IP-MAC映射关系进行广播:发送一个ARP请求查找自己的IP地址,正常情况下通过这个广播会把自己的映射关系保存到其他机器缓存中,并且不会收到任何回应;如果收到应答说明子网中存在跟你一样的IP,相信大家也遇到过系统IP冲突的提示。映射关系存在缓存,那么相应的就存在缓存刷新的问题,通过设定一个特定的超时时间即可。

你可能感兴趣的:(NAT与ARP小结)