計算機網路體系小知識

滴水微瀾發表於2017-10-11

網路架構通常分為兩種:OSI七層與TCP/IP五層網路架構
OSI七層模型:


TCP/IP五層網路架構:

 

下面是對TCP/IP五層網路架構的通俗解釋:

應用層: 應用層協議中的內容,是整個網路傳輸的核心,網路五層體系服務的最終目標就是它。
  它類似於一名乘客,需要從百度伺服器乘車到你的電腦中。
  應用層協議的內容,就是我們程式直接面對的,要使用的資料。

常見的應用層協議(乘客)有:
DNS 協議
DNS 協議,Domain Name System,用來把域名轉化為 IP。
DNS 這個協議幫我們完成這個記憶,有了個域名,想知道對應的 IP,
DNS 從本地查。如果本地沒有記錄,又會去本地的域名伺服器查...直到根域名伺服器,
是一個分散式的過程。如果伺服器遷移,IP 地址修改,域名服務商是會幫忙重新整理 DNS 伺服器的快取的。
為什麼有這麼一個協議存在?我知道目標主機的 IP,直接填不就好了?這個當然沒問題,但是全世界這麼多網址,IP 數量龐大,
要真的使用數字記憶的話,那是很困難的。如果又發生了更換了伺服器,那 IP 也要跟著換,客戶端沒有即使更換又會造成大量問題。
還有有的時候用 CDN 加速,如果直接填 IP,就直接繞開了 CDN 去源伺服器取資料了。

HTTP 協議
在格式各樣的計算機網路中,有一個聖地那就是全球資訊網 WWW。
在這個網路中行走的乘客就是 HTTP 協議,帶著文字,影象、視訊等資料,往來於不同的站點。
所以也可以把它們看成攜帶著大量貨物的商隊,來往於各個城市站點。

-----------------------

運輸層: 運輸層是體系結構的排程者,管理著資料的傳輸的一些策略。
  什麼時候可以傳?要傳多少?要不要接收?什麼時候結束?
  運輸層有兩個排程者,兩種不同的風格,分別為 TCP 和 UDP。

TCP 很嚴格,一個包都不能有失,完美主義的處女座,因為紀律嚴明且要求嚴格的 TCP 工作效率並不高,
每次發完一陣子都要確認一下是否順序正確,不正確的話再發個包。UDP 就比較不拘小節,丟包了亂序了都不管,
所以在網路環境好的情況下,UDP 可以做到快速而且正確率高。

TCP 排程者的工作內容主要三大塊,分別為可靠傳輸、流量控制和擁塞避免。簡單理解,可靠傳輸就是希望傳輸過程中有丟包或者錯誤包的現象,
讓傳送端重傳;流量控制就是建了個緩衝池,讓接收方和傳送方用合適的速率傳輸,不會因為傳輸太快導致資料丟失。
比如我們有一個倉庫大小就那麼大,東西都還沒用完,又不停地往裡面存東西,那麼直接結果是倉庫爆了後後面送過來的貨物還要重新送,
還不如直接告訴傳送端,倉庫滿了,等等吧。這就是後面會提到的 TCP 首部的視窗大小;擁塞避免就是在網路環境差的情況下,
有好的機制減低發包節奏,緩解網路環境。比如在某個城市開車,出行的人突然增加,那麼等個時間再出來。

UDP 排程者因為不需要嚴格的建立連線,又不需要各種確認機制保證包不亂,所以整個協議非常輕量。
如果想要保證資料的完整且接收的順序無誤,那麼得應用層協議自己來。

-----------------------

網路層:網路層的是體系結構的嚮導,負責找到要到達接收方的路徑。

經過了傳輸層,包大小確定了,傳輸時間也決定了。然後,手裡只有 IP 和 埠號,就像現在廈門,並且知道了目標地點是北京,可是該怎麼走呢?
需不需要中轉?中轉的地方又在哪裡?
這時候要看 IP 協議族了。這個大家族都吃這碗飯,提供指路服務。

運輸層的包,比如 TCP 或者 UDP,嚮導會填入目的資訊。所以,在這個過程中它做的就是找到下一站,然後到達之後再尋找下一站直到終點

網路層嚮導會去問路,如何能夠找到最短路徑,或者能最快到達的路徑呢?比如從中國到美國,是從太平洋走,還是先去歐洲再走大西洋呢?那條路能夠更快到達目的地。
於是問路就有了兩種不同的策略,有用 RIP 協議去問路,又或者是 OSPF 協議去問路。

但是到達資料到達資料鏈路層的包只認實體地址怎麼辦?所以這裡還有個 ARP 協議,用來找到 IP 對應地址的硬體地址,方式還是用廣播。
像我們平時使用 Wireshark 抓包看到的,經常會有一些嚮導往整個區域網裡問,“who has xxxxx? Tell xxxxx”。目標會給嚮導答覆,
到時候把硬體地址記錄下來即可。

-----------------------

資料鏈路層:資料鏈路層裡的協議就是要使用的交通工具了。

不同網路的差異性主要就體現在這一層。對於資料,並不需要我們路上經過了什麼,怎麼走。但交通工具要明白。不同的網路,交通情況是不一樣,所以有不同的策略來走。
比如去往 ISP 使用 PPP 協議。
在普通區域網內部使用 CSMA/CD 協議。

資料鏈路層的協議,無論選擇什麼樣的行走策略,無論是在天上飛的,地上跑的,海里遊的,都會面臨三個基本問題:封裝成幀、透明傳輸和差錯檢測。
解決了這三個問題,那麼這個交通工具就可以上路了。

-----------------------

物理層:什麼時候出發,去什麼地方,用什麼方式走都已經確定好了,轉化為二進位制訊號後,由物理層真實地傳送到目標地址去。
那這條路物理層傳輸的頻寬怎樣,就像我們的道路是四車道還是六車道,是大道還是羊腸小路。傳輸的速率怎樣,就像這條路的路況如何,是坑坑窪窪的還是一馬平川。
物理層的特性決定的路況。不同地方的貧富差距不一樣,或者環境的限制,修的路也不一樣。有的用雙絞線,有的用同軸電纜,再不錯的就用光纖了。所以,在相同的時間裡,
在不同的物理層裝置環境中,可能你還在廈門島內堵車,我已經搭動車飛馳 200 公里到另一座城市。


-----------------------

小結:

當我們要傳送一個資料,經過這五層協議,為了完成每一層協議的功能,比如可靠傳輸、確定路由等,這些協議都會新增一些必要的首部來完成功能。
這裡我們使用 TCP 協議作為傳輸層協議,所以到達物理層前要傳送出去的包在每層協議新增首部後會有這樣的結構:

 

參考文章:三分鐘快速理解計算機網路體系結構 http://www.jianshu.com/p/e5aa40925429

相關文章