nat中源IP 源MAC 目的IP 目的MAC的变化

  • Post author:
  • Post category:其他

注意:MAC地址在同一个广播域里面不变,跨越广播域的时候发生变化,IP地址在整个网络中不发生变化,除了经过NAT除外。

NAT技术:为了解决IPV4地址匮乏,引入的机制

NAPT技术:是为了解决数据报文返回到源端,引入端口号机制,避免同一个公网地址,引起冲突,引入的机制

 

经过NAT之后:

 

源IP映射成公网地址IP   源MAC变成当前接口的MAC 并且添加端口映射,避免引起冲突

目的IP不变  目的MAC变成吓一跳的mac,注意当数据报文从目的端发回来的时候要去掉上面的端口。

 

NAT技术在整个计算机数据报文的传输过程中意义重大,务必要理解清楚,下面通过一个例子加深理解。

 

这里遵从Douglas E.Comber这位大牛的著作,将运行NAT软件的电脑称之为NAT Box。一般情况下要求NAT Box的一端连接具有私有IP地址的电脑(称之为Internal Host),而另一端至少具备一个在公共因特网上的有效地址G。如下图所示:

NAT Box对来自于Internal Host的数据包以及从公共Internet传来的数据包进行了IP地址转换,具体说来,如果Internal Host A想要访问公共Internet网上的资源,当请求数据包到达NAT Box之后,NAT Box将该数据包的源IP地址由192.168.1.100替换成公共InternetIP地址G;当公共Internet将资源返回到NAT Box时,NAT Box又将该数据包的目的IP地址替换成内部的Internal Host A地址。

内部Internal Host通过NAT上网时,公共Internet看到是NAT Box在索取资源,它看不到真正请求资源的是Internal Host,即Internal Host相对于公共Internet来说是透明的。我们都知道Internal HostIP是私有IP,这样的IP在公共Internet上是不能够出现的,但是因为NAT的缘故,即便是私有IPInternal Host也一样可以访问公共Internet的资源。

由此可见,NAT Box内部必然存在一张表格,内含Internal Host与公共Internet地址相互之间的映射,内部Internal Host访问外部资源的时候建立这张表格。如果我们在私有网络里只有Internal Host A的话,那么它与G的对应就是一对一的,即这张表格可以是下面的样子:

(G, 192.168.1.100)

但实际情况却是私有网络里有很多Internal Host,如果仅仅还是与G对应而没有其他的辅助的话,那么这张表格就乱了,因为从公共Internet上回来的多个数据包使得NAT Box不知道究竟将数据包传递到哪个Internal Host处,因为这些数据包的目的地址都是G,如下所示:

(G, 192.168.1.100)

(G, 192.168.1.101)

(G, 192.168.1.102)

所以,NAT的衍生技术NAPT就出现在了人们眼前,NAPT主要是把TCP的端口号给加了进来,从而导致NAT Box维护的表格变成下面的样子:

从上表可以看到,Host AHost B需要同时访问百度服务器(百度的IP220.181.112.143),而Host C则访问谷歌服务器(谷歌的IP173.194.44.127),三者启动各自的TCP端口号21023123451274。由于这些端口号来源于Host本身,所以有可能它们都采用了相同的端口号。三个Host的访问请求可以简化成如下的形式:

(192.168.1.10021023; 220.181.112.143, 80)

(192.168.1.101, 12345; 220.181.112.143, 80)

(192.168.1.102, 1274; 173.194.44.127, 21)

当上面的请求到达NAT Box之后,NAT Box又做了什么“龌龊”的事情呢?NAT Box将这些请求中的源IP地址和源TCP端口号替换成如下的形式:

(G14003; 220.181.112.143, 80)

(G, 14010; 220.181.112.143, 80)

                                                                                                   (G, 14012;173.194.44.127, 21)

看到了吧,如果此时百度服务器和谷歌服务器都将响应数据包返回给NAT Box的话,那么NAT Box是否知道该怎么样分发对应的数据包到正确的Host了呢?答案是肯定的,如果你还没明白的话,请再想想。

如果你明白了的话,那么这里有个问题考考你。上面表格中的三个NAT Port号是否能相同呢?答案是否定的哈。

 


版权声明:本文为xiangdongwang1000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。