初識網絡協議和網絡分層

初識協議概念

語言是一種工具,只有具有相同語言的人,才能在彼此之間進行交流。同理,協議就像一種規則,只有基於相同規則的事物,才能進行彼此之間的通信。今天所說的網絡協議,亦不過如此。

協議有三要素:

  • 語法:內容要符合規則和形式
  • 語義:內容能夠代表某種意義
  • 順序:先做什麼,再做什麼,這個順序要有規範

下面就是一個符合三要素的例子

HTTP/1.1 200 OK
Date: Tue, 27 Mar 2010 17:50:26 GMT
Content-Type: text/html;charset=UTF-8
Content-Language: zh-CN
<!DOCTYPE html>
<html/>
<head/>
<base href="" />
<meta charset="utf-8"/> 
<title></title>

初識請求流程

首先我們先來看通過瀏覽器發送一次請求,需要經過的流程。在這個流程之中,我們就能大概瞭解一次請求所涉及的網絡協議。
請求流程:

  1. 當我們在瀏覽器輸入一個URL,併發起請求時候,瀏覽器首先會去DNS(地址協議本)或者HTTPDNS中去尋找其真正的IP地址。拿到真正的IP地址,就會開始去打包它的請求。這個請求會涉及到HTTP和HTTPS(加密)協議。DNS和HTTP協議所在的層就稱爲應用層
  2. 經過了應用層之後,接下來來到傳輸層,傳輸層主要有兩種協議:TCP/UDP。TCP是面向連接的,會保證這個包發送到目的地,這個是比較穩定的。UDP是無連接的,效率快,但是不穩定。TCP協議會監聽兩個端口,一個是瀏覽器端口,一個是服務端端口。知道IP地址你只能知道是哪臺機器,但是你的請求需要發送給對應的進程。這個就是端口號的作用了。
  3. 經過傳輸層封裝後,瀏覽器就會把包交給操作系統的網絡層,網絡層的協議是IP協議,這個協議裏面會包含機器的IP地址和目標的IP地址。
  4. 操作系統知道了目標的IP地址,這個時候就要去尋找對應這個IP的機器了,操作系統會判斷這個IP是本地的還是外地的,如果是外地的那就需要走網關。操作系統在啓動時候就會被DHCP協議配置IP地址,默認的網關IP地址是192.168.1.1。操作系統會把目標IP發送給網關,如何發呢?就需要ARP協議,通過APR協議,網關會把自己的本地地址告訴操作系統,這個本地地址就是MAC地址。
  5. 經過第4步之後,操作系統就將IP包給到下一層,也就是MAC層。網卡會將包發出去,這個包裏面包含IP和MAC地址,所以能夠到達網關。
  6. 網關收到這個IP包後,就會找到對應的目標IP,其實網關就是相當於一個路由器,路由表上就記錄着這個IP地址該怎麼走,這裏又會涉及到路由協議,常用的OSPF和BGP。至於這裏這個網關怎麼找到對應的IP呢?網關會把IP拆分,判斷下一跳渠道哪個路由器,最後一個路由器知道這個網絡包要去到哪個地方,會叫一聲,誰是目標IP,這個時候對應的目標IP就會回覆一個MAC地址。網絡包發送到這個MAC地址,然後就會發送給這個目標機器了。
  7. 目標機器發現MAC地址對上了,會把MAC頭取下來,發送給操作系統的網絡層,網絡層發現IP對上了,就會把IP頭取下來,假設這次請求是TCP協議,那麼網絡層就會在IP頭寫上封裝的是TCP協議,併發送到傳輸層。在傳輸層,對於收到的每個包,都會回覆這個包收到了,這個回覆會沿着來的方向,發生給瀏覽器。網絡包平安到達TCP層,TCP頭中就有目標的端口號,通過這個端口號就能夠找到對應的進程。
  8. 網絡包如果在傳送的過程中丟失了,這個發送端的TCP層會不斷重新發送請求,直到收到回覆爲止。

上述就是一個大概的請求過程,這其中涉及到多種網絡協議,還有應用層、傳輸層、網絡層、MAC層。
這裏可能有人分不清MAC地址和IP地址,形象的比喻下MAC地址就好比一個人的身份證,是獨一無二的。但是通過身份證你是找不到這個人的,所以你需要知道這個人的現居地址,也就是IP地址。

網絡分層的意義

複雜的程序都要分層處理,不僅是爲了解耦,還是爲了讓每個模塊更好的專注於它該完成的任務,也利於維護。著名的MVC模式,就是把程序拆分controller、service和dao三層,這樣維護起來就很容易。
網絡分層也是如此,不同層各司其職,但是彼此之間又相互協助。借用一個形象的比喻,網絡分層之間的協助就好比:總經理說話,經理補充幾句,主管補充幾句,員工再補充幾句。
傳輸層在工作的時候,比如TCP的三次握手,都需要IP層和MAC層協助,來把消息發送出去。因此對於網絡分層來說,可以沒有上層,但是不能沒有下層,沒有下層就運行不起來了。就好比員工都走了,那這個總經理又有何作用呢?

處理網絡包的程序中會涉及二層設備和三層設備,這裏補充下這兩個設備的概念

  • 二層設備收進去整一個網絡包,然後把MAC頭摘取下來,看看是要丟棄轉發還是自己處理
  • 三層設備把MAC頭摘下來,再把IP頭摘下來,看看使用丟棄轉發還是自己處理

記錄一個問題 爲啥有了ip還需要mac地址,這裏找到一些看起來比較合理的解釋:
首先:交換機本身是一個二層設備,它裏面只有處理mac地址的邏輯,而沒有處理ip的邏輯。所以需要mac地址。
其次:ip的作用是保證發送的包在網絡中傳輸,到達目標服務器所在局域網的網關。但是目標的主機ip有時候是會變化的,所以這個時候就會出現找不到目標主機的情況,所以需要一個mac地址來唯一對應一臺機器。
最後:mac地址是局域網尋址,ip地址是網絡尋址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章