我們知道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
連接方式如下所示:
如上圖所示,主機為了訪問internet上的服務器,光憑192.168.86.100這個IP是萬萬行不通的,它還沒有權利到互聯網上去行走,因此,主機為了能在互聯網上行走,必須得進行偽裝,既然偽裝就不能再用192.168.86.100嘍,因此就得換一個IP,而這個IP能被互聯網所認識,那麼它就是公司的的出口IP,即131.107.45.179,於是主機訪問web服務器的流程如下:
從上圖,我們知道,主機通過NAT設備後,源ip被進行轉換了,轉換成了131.107.45.179,進行web訪問,對於web服務器來說,它只知道131.107.45.179和自己進行了tcp的連接。
當web服務器收到了syn報文後,它要給對方回覆syn ack報文,流程如下所示:
從上圖我們可以看到,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地址空間不夠的情況。
請大家關注哦。
閱讀更多 防火牆達人 的文章