一、網聯網
1.1、區域網與網際網路
區域網
一個最簡單的區域網就是家庭用的WLAN,再者你所在的公司或者學校一般也都是一個小的區域網。
網際網路
網際網路(internet),又稱國際網路,指的是網路與網路之間所串連成的龐大網路,這些網路以一組通用的協議相連,形成邏輯上的單一巨大國際網路。給你一個簡單的解釋,就是將上述的大大小小的區域網連線起來,便形成了網際網路。
網際網路由大大小小的網路組合而成,路由器、交換機、閘道器等實現了網際網路的組網和接入網方式。
二、一封情書的旅程
2.1、區域網內部定址過程
這麼一個現實的場景
你和如花小姐姐在一個城市,你很想他你搬磚之餘給如花寫了一封情書如上所示(有點重口味了,哈哈)
分析一下這封信,除了你對如花的愛,還能分析出什麼呢?假設你辦公室裡兩臺計算機,要進行通訊,你的計算機是IP1,MAC1,目標計算機是IP2,MAC2給你捋一個對應關係
致如花的一封信 | 通訊 | 對應層級 |
---|---|---|
同城市 | 區域網內 | --- |
XXOO | DATA | 應用層 |
你 | 源MAC1 | 資料鏈路層 |
如花 | 目標MAC2 | 資料鏈路層 |
信 | 物理層的位元流 | 物理層 |
郵寄的過程 | 物理層的資料傳輸媒介 | 物理層 |
你和如花在一個城市,所以你給他的情書,都可以十一路親自送到如花家裡。這個過程類似於區域網內部主機通訊,如果兩臺機器互相知道其MAC地址可以直接交流,前提是互相知道彼此的MAC地址,就像你認識如花一樣。如果不認識,就要通過廣播找到如花家的地址然後你才能將情書送過去。
是不是很形象?
看標題為什麼說是區域網內部定址過程呢?你會發現整個過程中並沒有用到IP地址(並不是真的不需要IP地址,需要區域網IP地址,不過這個地址是用來去獲取目標及其的MAC地址用的),只是用到了MAC地址。區域網內部的主機互聯互通只需要MAC地址,而不需要IP地址,IP地址的作用是不同區域網的互聯互通。
PS:如今比較流行的組網方式是一個邏輯整體(公司,學校等)或者一個區域組一個區域網,再通過交換機接入Internet。因為在區域網
中IP只是邏輯上的劃分,不信你可以在你所在的公司或者學校修改一下自己的IP(最好是最後一段),依然能夠連上網路。這樣的話,
每個人都可以隨意修改IP,IP != 使用者。所以MAC地址這個時候就有用了,只有MAC地址才能表示使用者。交換機中儲存了 MAC <-> IP 的
對映關係。區域網訪問網際網路的唯一通道就是交換機。
2.2、網際網路定址過程
4.1中的你寫給如花的信件,始終沒有說到一個重要的資訊,那就是郵編。
PS: 這裡將郵編等同於地址,地址和郵編作用差不多,一般的地址會比郵編的定位更加詳細,郵編是地理地址數字化的結果,具體請搜尋郵
編的作用,我們這裡把郵編 == 地址
如果你跟如花不在一個城市,她在上海,你在北京,十一路不好使了,你寫給如花的信件就要通過郵局才能郵寄到如花手裡。郵局就像是網際網路,將大家聯絡起來,能夠實現信件互通。
同樣類比兩臺主機的通訊,你的主機IP1,MAC1,如花的主機IP2,MAC2。 再來羅列一下這個對應關係。
致如花的一封信 | 通訊 | 對應層級 |
---|---|---|
不同公司 | 網際網路 | --- |
XXOO | DATA | 應用層 |
你的郵編 | IP | 網路層 |
如花的郵編 | IP | 網路層 |
你 | 源MAC1 | 資料鏈路層 |
如花 | 目標MAC2 | 資料鏈路層 |
信 | 物理層的位元流 | 物理層 |
郵寄的過程 | 物理層的資料傳輸媒介 | 物理層 |
你把信放到北京郵政,北京郵政將信件送到上海郵政,然後上海郵政再把信件送到如花手中。上述過程像是兩臺在不同網路內的計算機通訊,郵編是什麼?郵編就是IP地址,當兩臺通訊的主機不在同一個區域網內,就需要使用IP地址找到對方所在的區域網,到達區域網內再通過MAC地址將資料送達具體的主機。
從上面兩個章節,可以看到這封情書的旅程有點複雜。
- 北京郵政將信件郵寄到上海郵政
- IP定址:網路層的工作,通過IP一個區域網到另一個區域網
- 上海郵政再將信件送到如花手中
- MAC定址:資料鏈路層工作,區域網內定址
這裡還有一個問題:為什麼上海郵政能找到如花?因為如花之前在上海郵政郵寄過信件,然後上海郵政知道如花的具體地址。類比到
網際網路上,從一個區域網到另一個區域網,那“另一個區域網”怎麼找到目標主機的呢?其實上面已經解釋了,當前主流的組網方式是
大大小小的區域網通過交換機連線到網際網路,交換機就是你所在的區域網的出入口,你也可以驗證一下這一點,如果你在家並且你家有
路由器的wifi,兩臺連線wifi的手機或電腦百度IP地址,你會發現兩臺裝置的IP地址是一樣的,get?。交換機也維護了一個ARP表,接
下來就不解釋為什麼交換機能找到目標主機了。你應該懂了。
三、正經的網路定址過程
第四章節中詳細介紹了你和如花的愛情,這個章節正經點,說說網路定址到底是怎樣一個過程。
如上圖,現在有傳送發:A,接收方:B
- 主機A
- 主機A將資料傳送到交換機1
- 網路層封包 IP1 --> IP2
- 資料鏈路層封包:MAC1 --> MAC3
- 物理層將資料轉為位元流通過媒介傳送資料
- 交換機1
- 交換機1將資料傳送到路由器
- 網路層封包 IP1 --> IP2
- 資料鏈路層封包:MAC3 --> MAC4
- 物理層將資料轉為位元流通過媒介傳送資料
- 路由器
- 路由器將資料傳送到交換機2
- 網路層封包 IP1 --> IP2
- 資料鏈路層封包:MAC4 --> MAC5
- 物理層將資料轉為位元流通過媒介傳送資料
- 交換機2
- 交換機2將資料發往主機B
- 網路層封包 IP1 --> IP2
- 資料鏈路層物理層封包:MAC5 --> MAC2
- 將資料轉為位元流通過媒介傳送資料
如上所示整個過程就完成了,值得注意的一點是網路層始終都是IP1-->IP2。不斷變化的是資料鏈路層的MAC地址。
以上過程有幾個前提,AB主機的IP1和IP2都是外網IP,但是外網IP是有限的,一般的區域網內主機使用的都是內網IP,只有接入網際網路的閘道器(家庭寬頻的光貓)才會給分配一個外網的IP。也就是說交換機1和交換機2才是公網IP,這樣的話私有IP定址的問題如何解決?答案是NAT技術。
看紅色部分,為什麼主機A能找到交換機1?交換機1能找到路由器...
看藍色部分,為什麼主機A知道交換機1的MAC地址為MAC3,交換機1知道路由器的MAC3...
如果主機AB使用的都是內網IP,他們如何找到對方?
帶著這三個問題繼續往下看。
四、ARP協議與RARP協議
ARP(Address Resolution Protocol),即地址解析協議。ARP表中維護了IP --> MAC地址的對映,另外其為了知道對映關係,需要詢問網內的主機,讓對方告知其MAC地址,即詢問目標IP對應的MAC地址。這也是三章節中,為什麼主機A知道交換機1的MAC地址的原因。
如上圖所示,如果我們執行一個簡單的命令,ping 192.168.1.1(IP2),整個過程大致分為兩步。
- 廣播:詢問IP2的mac地址。並告知對方自己的IP和MAC地址
- 響應:IP2回覆IP1自己的MAC地址
我們再來細化這個過程
- IP1:
- 查詢本地APR地址表
- 首先IP1會在本地ARP地址表中查詢,是否知道IP2的MAC地址。
- 如果ARP中存在。直接讀取MAC2。
- 如果不知道
- 發起廣播:詢問IP2的mac地址。並告知對方對方自己的IP和MAC。
- 目標主機收到廣播進行相應
- 不是目標的主機收到廣播,不響應
- IP2:
- 收到IP1的廣播並記錄:將廣播中攜帶的IP1的IP和MAC地址寫入IP2的本地ARP表。
- 響應IP1。告知對方自己是IP2,MAC為MAC2
- IP1:
- 收到響應,將其MAC地址寫入ARP表中。
arp -a然你看看自己真實的ARP快取表
4.1、ARP欺騙
ARP協議的基本功能是以廣播的形式通過目標主機的IP地址查詢目標主機MAC地址。網路內的主機都可以進行ARP應答,如果黑客將自己的主機侵入到你所在的網路內,當一臺主機A發起ARP廣播,黑客機器進行ARP應答,這樣就導致A主機會將接下來的資料傳送到黑客機器。
這就是ARP欺騙。
由上可知ARP欺騙的主要原因在於發起廣播的主機無法驗證應答主機的真偽。
看到了上述的原因,如何解決呢?
ARP欺騙的防範方法:
- 閘道器定時傳送IP/MAC對映
- 靜態ARP
- DHCP snooping
4.2、RARP協議
RARP協議是通過MAC地址獲取IP的協議,和ARP協議剛好相反。
五、路由表
如上圖所示,路由表最主要的作用就是決定下一跳的目標地址是哪裡。這也就解釋了第三章中藍色部分的問題,主機A怎麼知道下一跳的目標是交換機1。
路由轉發過程:先確定最短路徑,然後再通過所選路徑上的網路傳輸資料。
一個分組到達路由器之後,先於本地路由表中的對應的子網掩碼做按位與運算,然後再在本地的路由表中查詢,如果與本地IP相同,則已經到達目的端,由當前路由解析資料;如果計算出不是本地IP地址,則此IP為下一跳的路由IP,繼續進行路由轉發;若在當前路由器中查詢不到下一跳地址,即轉向預設的下一跳IP。轉發分組不可能在一個路由停下,這樣會給當前路由的效能造成負擔,且每個轉發分組的IP資料包的報頭中都有一個8位的生存時間TTL,這個生存時間並不是以時間單位計數,而是計算當前已經轉發過的路由次數,在源端,設定好最大轉發次數值,即生存時間(time to live),每經過一個路由,數值減一,直到最終路由器檢查到生存時間為0。則丟棄該分組。[推薦閱讀]
六、NAT技術
NAT(Network Address Translation)即:網路地址轉換。NAT技術致力於將一個區域網路通過一個外網IP接入外網中。
如圖所示,在一個區域網中,雖然兩臺主機使用的是內網IP,但是可以通過交換機1處的閘道器統一提供的外網IP來接入網際網路。
如果一臺主機B要訪問內網中的主機A,主機B如何找到主機A呢?主機B在互諒網中只能找到124.65.126.45的交換機1,NAT技術就作用在這裡,NAT技術可以將到達交換機1的請求,對映到主機A上。
為什麼需要NAT技術呢?你想想IP地址一共42億+個,在物聯網飛速發展的今天早已經不夠用。所以要想辦法找到一種方式來節省IP。
另外NAT並不是真的作用在交換機1上,而是其接入網方式決定的。但是可以肯定的是作用在區域網對外的閘道器上。閘道器,不陌生吧。
NAT如何進行內外網IP的轉換的呢?如果讓你設計NAT實現,怎麼設計?是不是要有一個方法要給主機A做一個標記,讓NAT知道訪問主機A的請求是訪問主機A的,而不是主機B。繞嗎?這個作為不同伺服器的標記就是傳輸層的埠。
如果是傳輸層的埠的話,是不是就意味著,一個區域網內對外提供8080埠的主機只有一臺?是的,也不是,因為可以有平衡負載。
如果一個區域網內多臺機器都提供8080埠的服務,NAT會對其進行平衡負載。
PS:不要驚訝於這種設計方式,思考下,在你公司或者學校裡面,你的電腦會對外網提供服務嗎?不會的,因為我
們作為網際網路的使用者,我們的需求只是訪問網際網路,獲取我們需要的呃資訊即可。什麼樣的區域網需要對外提供服務?
嗯,如果你是一個程式設計師,你可能已經明白了就是服務端。各大網站、APP的服務端。所以說,這種用埠來區分內部
主機的方式是沒問題的。
如上如圖表所示,區域網內 出 & 入 的IP轉換。