兩台計算機之間是如何通信的


1. 五層協議參考模型

所謂通信協議就是通信雙方都必須要遵守的通信規則。如果沒有網絡通信協議,計算機的數據將無法發送到網絡上,更無法到達對方計算機,即使能夠到達,對方也未必能讀懂。有了通信協議,網絡通信才能夠發生

一般我們用五層協議參考模型來進行計算機網絡的學習:

  • 應用層
  • 運輸層
  • 網絡層
  • 數據鏈路層
  • 物理層

上述各層的作用會在下文詳細講解,我們首先要明白為什么要分層

協議的實現是很復雜的。因為協議要把人讀得懂的數據,如網頁、電子郵件等加工轉化成可以在網絡上傳輸的信號,需要進行的處理工作非常多。

兩個系統中實體間的通信是一個十分復雜的過程。為了減少協議設計和調試過程的復雜性,網絡協議通常都按結構化的層次方式來進行組織,每一層完成一定功能,每一層又都建立在它的下層之上。不同的網絡協議,其層的數量、各層的名字、和功能不盡相同。

也就是說,每一層都是在下一層的基礎上,通過層間接口向上一層提供一定的服務,而把 “這種服務是如何實現的” 細節對上層加以屏蔽

那么,我們將一個大型網絡體系分成了若干個層,各個層之間是如何進行通信的呢

  • 1)對等層之間通信(不同開放系統中的相同層次之間的通信,對等層實體之間的信息交換):OSI 標准為每一層的通信都嚴格定義了 協議數據單元 PDU的格式。對等層之間的通信是目的,對等層實體的協作保證該層功能和服務的實現
  • 2)相鄰層之間通信(相鄰的上下層之間的通信,屬於局部問題):相鄰層之間的通信是手段,保證對等層實體之間的通信得以實施

假設網絡協議分為若干層,那么 A、B 兩節點通信,實際是節點 A 的第 n 層與節點 B 的第 n 層進行通信,故協議總是指某一層的協議,例如物理層協議、傳輸層協議、應用層協議。每一相鄰層協議間有一接口,下層通過該接口向上一層提供服務。

2. 物理層

兩台計算機之間要進行通信,必然需要傳輸介質/物理媒介來連接兩台計算機,這樣,我們才能把數據傳輸過去。傳輸介質分為:

  • 導向型傳輸介質
    • 雙絞線:適用於近距離
    • 同軸電纜(抗干擾性強):適用於遠距離
    • 光纖:帶寬遠遠大於其他傳輸媒體
  • 非導向型傳輸介質
    • 無線電波
    • 微波
    • 紅外線、激光

也就是說,物理層的作用就是實現計算機之間的數據傳送,這個數據其實是比特流,物理層需要盡可能屏蔽掉具體傳輸介質和物理設備的差異, 使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什么,即實現比特流的透明傳輸

3. 數據鏈路層

物理層只是簡單的把計算機連接起來並在上面傳輸比特流,它還是存在着很多問題的:

  • 1)物理連接是有差錯和不可靠的
  • 2)物理設備之間可能存在傳輸速度不匹配問題

也就是說僅僅靠物理層是無法保證數據傳輸的正確性的

這樣,數據鏈路層的主要作用就是加強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網絡層表現為一條無差錯的鏈路。在物理層提供服務的基礎上,數據鏈路層還肩負着為網絡層提供服務的責任,其最基本的服務是將來自網絡層的 IP 數據報封裝成幀,可靠的傳輸到相鄰結點的目標網絡層。

① 封裝成幀

首先了解一下為什么需要封裝成幀:前面說了,物理層它只是簡單的把計算機連接起來並在上面傳輸比特流(0、1 序列),如果這些 0,1 組合的傳送毫無規則的話,計算機是解讀不了的。因此,我們需要制定一套規則來進行 0、1 的傳送,讓計算能夠讀懂這些序列。

把一台計算的的數據通過物理層和鏈路層發送給另一台計算機,究竟是誰發給誰的,計算機與計算機之間如何區分,你總得給他們一個唯一的標識吧?

於是,MAC 地址出現了 

② MAC 地址

MAC 地址就是鏈路層地址,長度為 6 字節(48 位),**用於唯一標識網絡適配器(網卡)。**計算機之間的數據傳送,就是通過 MAC 地址來唯一尋找、傳送的。

一台主機擁有多少個網絡適配器就有多少個 MAC 地址。例如筆記本電腦普遍存在無線網絡適配器和有線網絡適配器,因此就有兩個 MAC 地址

4. 網絡層

在 計算機網絡中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。

網絡層的任務就是選擇合適的網間路由和交換結點, 確保數據及時傳送。在發送數據時,網絡層把運輸層產生的報文段或用戶數據報封裝成分組和包進行傳送。

在 TCP/IP 體系結構中,由於網絡層使用 IP 協議,因此分組也叫 IP 數據報 ,簡稱數據報

① IP 協議

IP 協議用於屏蔽下層物理網絡的差異,為上層提供統一的 IP 數據報

 

 

IP 協議定義的地址,我們稱之為 IP 地址IP 數據報中含有發/收方的 IP 地址

IP 協議提供無連接的、不可靠的、盡力的數據報投遞服務

  • 1)無連接的投遞服務

    發送端可於任何時候自由發送數據,而接收端永遠不知道自己會在何時從哪里接收到數據。每個數據報獨立處理和傳輸, 一台主機發出的數據報序列,可能取不同的路徑, 甚至其中的一部分數據報會在傳輸過程中丟失;

  • 2)不可靠的投遞服務

    IP 協議本身不保證數據報投遞的結果。在傳輸的過程中,數據報可能會丟失、重復、延遲和亂序等, IP協議不對內容作任何檢測,也不將這些結果通知收發雙方;I 數據報的丟失,通過路由器發 ICMP報文 告知;必要時,由高層實體(如TCP)負責差錯恢復動作。

  • 3)盡力投遞服務

    執行數據報的分段和封裝,以適應具體的傳輸網絡, 由最終結點的IP模塊進行合段處理

    不同物理網絡對傳輸的幀 /分組的體積有不同的規定;當數據報長度 > MTU(最大傳輸單元 MTU—Maximun Transfer Unit  )時,需對數據報分段 。

② ARP 地址解析協議

OK,有了上面 IP 協議的知識,我們來講解一台計算機它是如何知道另一台計算機的 MAC 地址的,這就是網絡層的 ARP 地址解析協議做的事情。

網絡層實現主機之間的通信,而鏈路層實現具體每段鏈路之間的通信。因此在通信過程中,IP 數據報的源地址和目的地址始終不變,而 MAC 地址隨着鏈路的改變而改變

ARP(Address Resolution Protocol )協議就可以實現由 IP 地址得到 MAC 地址。

 

 

 

每個主機都有一個 ARP 高速緩存,里面有本局域網上的各主機和路由器的 IP 地址到 MAC 地址的映射表

如果主機 A 知道主機 B 的 IP 地址,但是 ARP 高速緩存中沒有該 IP 地址到 MAC 地址的映射,此時主機 A 通過廣播的方式發送 ARP 請求分組(該分組攜帶自己的 IP 地址 和 MAC 地址 以及 目標主機的 IP 地址),主機 B 收到該請求后會發送 ARP 響應分組 給主機 A 告知其 MAC 地址,隨后主機 A 向其高速緩存中寫入主機 B 的 IP 地址到 MAC 地址的映射。

 

 對應的,RARP 協議可以實現由 MAC地址轉化為 IP 地址

5. 傳輸層

通過物理層、數據鏈路層以及網絡層的互相作用,我們已經把數據成功從計算機 A 傳送到計算機 B 了,可是,計算機 B 里面有各種各樣的應用程序,計算機 B 該如何知道這些數據是給哪個應用程序的呢

所以,我們在從計算機 A 傳數據給計算表 B 的時候,還得指定一個端口(Port),以供特定的應用程序來接受處理。即 IP 地址 + 端口號就可以唯一確定某個主機上的某個應用進程

也就是說,網絡層的功能是建立主機到主機的通信,而傳輸層的功能就是建立端口到端口的通信(也可以說是進程到進程之間的通信)

傳輸層最常見的兩大協議是 TCP 協議和 UDP 協議,其中 TCP 協議與 UDP 最大的不同就是 TCP 提供可靠的傳輸,而 UDP 提供的是不可靠傳輸。

1)用戶數據報協議 UDP(User Datagram Protocol)

UDP 在傳送數據之前不需要先建立連接,遠程主機在收到 UDP 報文后,不需要給出任何確認。雖然

UDP 不提供可靠交付,但在某些情況下 UDP 確是一種最有效的工作方式(一般用於即時通信),比

如:QQ 語音、 QQ 視頻 、直播等等

2)傳輸控制協議 TCP(Transmission Control Protocol)

TCP 提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束后要釋放連接。

TCP 不提供廣播或多播服務。由於 TCP 要提供可靠的,面向連接的傳輸服務(TCP 的可靠體現在 TCP 在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、流量控制、擁塞控制機制,在數據傳完后,還會斷開連接用來節約系統資源。這不僅使協議數據單元的首部增大很多,還要占用許多處理機資源。TCP 一般用於文件傳輸、發送和接收郵件、遠程登錄等場景

6. 應用層

應用層最接近於用於,它的任務就是通過應用進程間的交互來完成特定網絡應用。

應用層協議定義的是應用進程間的通信和交互的規則。由於傳輸層傳來的數據五花八門,有 html 格式的,有 mp4 格式等等,所以對於不同的網絡應用需要不同的應用層協議。在互聯網中應用層協議很多,如域名系統 DNS,支持萬維網應用的 HTTP 協議,支持電子郵件的 SMTP 協議等等。我們把應用層交互的數據單元稱為報文

由於本文的關鍵就是講解計算機之間的通信,所以其他協議我們就不講了,只講解一下 DNS 協議是如何將域名轉化為 IP 地址的

DNS 域名解析協議

域名系統 Domain Name System 縮寫 DNS,是因特網的一項核心服務,它作為可以將域名和 IP 地址相互映射的一個分布式數據庫 (這里的分布式數據庫是指,每個站點只保留它自己的那部分數據),能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的 IP 地址

域名具有層次結構,從上到下依次為:根域名、頂級域名、二級域名。

 

 

DNS 可以使用 UDP 或者 TCP 進行傳輸,使用的端口號都為 53。

大多數情況下 DNS 使用 UDP 進行傳輸,這就要求域名解析器和域名服務器都必須自己處理超時和重傳從而保證可靠性。

域名解析方式:

  • 遞歸查詢
  • 迭代查詢

 

基本原理

1)瀏覽器搜索自己的 DNS 緩存,緩存中維護一張域名與 IP 地址的對應表;

2)若沒有,則搜索操作系統的 DNS 緩存

3)若沒有,則操作系統將域名發送至本地域名服務器(遞歸查詢方式),本地域名服務器查詢自己的 DNS 緩存,查找成功則返回結果,否則,通過以下方式迭代查找:

  • 本地域名服務器向根域名服務器發起請求,根域名服務器返回 com 域的頂級域名服務器的地址;
  • 本地域名服務器向 com 域的頂級域名服務器發起請求,返回權限域名服務器地址
  • 本地域名服務器向權限域名服務器發起請求,得到 IP 地址

4)本地域名服務器將得到的 IP 地址返回給操作系統,同時自己將 IP 地址緩存起來

5)操作系統將 IP 地址返回給瀏覽器,同時自己也將 IP 地址緩存起來

至此,瀏覽器已經得到了域名對應的 IP 地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM