花一分鐘談談IPV4之NAT

我們知道IPV4地址一共32位,我們全世界都在使用IPV4地址,由此而帶來的一個問題就是IPV4地址空間的耗盡,IPV4在設計之初,也並沒有想到互聯網的爆炸式的增長,為了緩解IPV4地址空間的這種境況,於是人們靠著自己的智慧,提出了NAT的策略,所謂的NAT就是地址空間的轉換。

由於在Internet上進行通信,用的是公網的IP地址,所以內網想要訪問外網的話,必須將私有的IP地址進行NAT轉換成公有的IP地址才能在Internet上通信,現在給大家舉個例子說明NAT的應用。

條件如下:

1. 一臺主機的私有IP是192.168.86.100.

2. 假設公司的IP是131.107.45.179(這個IP是我隨機取的)

假設這臺主機想要訪問web服務器,假設這臺web的服務器的IP是132.108.46.119,並且web服務器的開放端口是80。 那麼這個TCP連接的構成如下所示:

1)源ip:192.168.86.100

2)目的IP:132.108.46.119

3)源端口:4567

4)目的端口:80

連接方式如下所示:

花一分鐘談談IPV4之NAT

圖1

如上圖所示,主機為了訪問internet上的服務器,光憑192.168.86.100這個IP是萬萬行不通的,它還沒有權利到互聯網上去行走,因此,主機為了能在互聯網上行走,必須得進行偽裝,既然偽裝就不能再用192.168.86.100嘍,因此就得換一個IP,而這個IP能被互聯網所認識,那麼它就是公司的的出口IP,即131.107.45.179,於是主機訪問web服務器的流程如下:

花一分鐘談談IPV4之NAT

圖2

從上圖,我們知道,主機通過NAT設備後,源ip被進行轉換了,轉換成了131.107.45.179,進行web訪問,對於web服務器來說,它只知道131.107.45.179和自己進行了tcp的連接。

當web服務器收到了syn報文後,它要給對方回覆syn ack報文,流程如下所示:

花一分鐘談談IPV4之NAT

圖3

從上圖我們可以看到,web服務器回覆的數據報文目的ip 131.107.45.179,經過NAT設備後將其轉換為192.168.86.100,這個IP正是這臺主機的IP地址。

這臺主機之所以能夠訪問外網,是NAT設備的幫忙,由此我們可以推斷出,這種基於NAT訪問外網的形式,是比較消耗cpu資源的,因為,NAT設備要保存每條TCP連接的ip的轉換關係,這種轉換關係,正常都使用會話來保存,而會話是要消耗內存的。

因此,IPV6的提出,就是為了解決IPV4地址空間不夠的方案,有了IPV6的地址,就不用做NAT就能訪問web服務器。

當然,NAT也有另一種的含義,就是隱藏內部主機的IP,這個我們不算在內,因為我們現在只談IPV4地址空間不夠的情況。

請大家關注哦。


分享到:


相關文章: