五分鐘技術趣談| 一文讀懂計算機間如何收發信息

2023.07.05

五分鐘技術趣談| 一文讀懂計算機間如何收發信息


兩台計算機之間是如何通信的呢?在含有成千上萬的計算機網絡中,一台計算機是如何找到另外一台計算機,並將數據準確無誤地發送給它呢?今天這篇文章,將通過七層的OSI參考模型來講解一台計算機是怎樣在網絡中找到另外一台計算機,並且把數據傳送給它的。

Part 01 物理層 

一台計算機若要與網絡中的另外一台計算機進行信息的傳遞,首要做的便是在計算機間進行連接,即把這台計算機與其他的計算機通過光纖、電纜、雙絞線等介質將它們連接起來,這樣才能傳輸信息。所以說,物理層的作用其實就是將兩台計算機連接起來,而後在計算機間以高低電頻去傳輸0、1形式的電信號。

Part 02 數據鏈路層 

但如果計算機間的0、1信號沒有一個統一公認的規則的話,計算機是無法解讀的。因此,便出現了以太網協議。


圖片圖片

圖1 比特流

2.1 以太網協議

以太網協議中,一組電信號組成的數據包被稱作幀。此外,幀含有其標頭和數據兩部分,它的大小一般為64-1518個字節,而標頭部分的字節固定為18個。因此若需要傳送的數據很大的話,就分成多個幀來進行傳送。幀的標頭一般存放一些說明數據,如發送者、接受者等,而數據部分則存放即將發送給接受者的具體內容。

2.2 MAC地址


圖片圖片

圖2 網卡

在將一台計算機中的數據通過物理層和鏈路層發送給另一台計算機的過程中,為區分不同的計算機,便產生了每台計算機的唯一標識--MAC地址。其中,每一台連入網絡的計算機都會有自身的網卡,每個網卡都會有一個自身唯一的地址,即MAC地址。

2.3 廣播

在網絡中,計算機A不僅僅連接著計算機B,還連接著其他的多個計算機。若計算機A已知計算機B的MAC地址,並想要向計算機B發送信息,但計算機A並不知道計算機B在哪一條路線上。於是,便出現了廣播。

在同一子網中,計算機A向計算機B發送信息,由於數據包中包含了計算機B的MAC地址(假設此處計算機A已得知計算機B的MAC地址,原因將在下一小節的ARP協議中講解)。當發送信息時,計算機A通過廣播的方式發送,此時在同一子網中的計算機C或D受到收到這一數據包後,會把數據包中的MAC地址取出並進行比較,如果與其自身的MAC地址相同,則接收數據包,否則就丟棄這一數據包。

Part 03 網絡層 


圖片圖片

圖3 OSI參考模型

上一節提到子網,其實我們所處的網絡是由無數個子網所構成的,而廣播的時候也只有同一個子網中的計算機才能夠收到。

如若沒有子網劃分,計算機A使用廣播方式發送數據包給計算機B,此時所有計算機都可以收到這個數據包,然後開始對比並捨棄。但網絡中如此多的計算機,每一台都收到其他計算機所發送的數據包,是會造成網絡崩潰的,因此產生了子網。

此刻問題來了,計算機如何區分哪些MAC地址屬於同一子網,而選擇進行廣播將數據傳送給對方,哪些不屬於同一子網,而選擇將數據傳給網關,再讓網關進行轉發。為解決這一問題,出現了IP協議。

3.1 IP協議

IP協議所定義的地址被稱之為IP地址,它有兩種版本,IPv4與IPv6,本文僅就IPv4進行討論。IP地址一般由32位的二進制數組成,將其分成4段的十進製表示地址範圍為0.0.0.0-255.255.255.255。而互聯網中,每一個計算機都有一個IP地址,這一IP地址被分為前一部分的網絡部分與後一部分的主機部分。且網絡部分與主機部分各自所佔的二進制位數是不定的。

如果兩台計算機的網絡部分是一樣的,便稱這兩台計算機是在同一子網內的,如192.188.88.1與192.188.88.2;如果它們的網絡部分都是192.188.88(共32位),而主機部分都是剩餘8位的話,則它們是在一個子網內的。但如何知曉網絡部分佔幾位,主機部分又佔幾位呢?於是便產生了子網掩碼。子網掩碼與IP地址同樣都是32位二進制數,但子網掩碼的網絡部分全為1,主機部分全為0。例如上一段例子中,IP地址網絡部分為24位,主機部分為8位的話,那其子網掩碼為11111111.11111111.11111111.00000000,即255.255.255.0。因此,在得知兩個IP地址的子網掩碼後,我們便可以判斷他們是否都在同一子網中。

3.2 ARP協議

通過兩台計算機的IP地址與子網掩碼,我們便可以判斷他們是否在同一子網內。但計算機A如何知道計算機B的MAC地址呢?這時就出現了ARP協議。

ARP協議是指以廣播的方式向同一子網中的所有計算機發送包含接收方IP地址的數據包。子網內的所有電腦接收到數據包後會取出IP地址將其與自身IP進行對比,如若相同,就回復自己的MAC地址,如若不同,就丟棄這一數據包。如此一來,計算機A便知悉計算機B的MAC地址了。

同時,兩台計算機的IP如不在同一子網內,此時計算機就會把數據包傳送給網關,之後由網關來進行轉發與傳送。

3.3 DNS服務器

此時還有一個問題便是,我們如何知道想要訪問的計算機IP地址呢?因為我們絕大多數人訪問網絡時,是通過網絡域名進行訪問的,例如訪問中國移動連楹家庭智慧平台時,輸入的是https://open.home.10086.cn/這個域名。其實,當我們輸入這個域名時,DNS服務器的作用就是解析這一域名,而後返回其對應的IP給計算機。

Part 04 傳輸層 

通過以上介紹的物理層、數據鏈路層以及網絡層之後,我們已經成功地將數據由計算機A傳送到計算機B了。但計算機B如何知道這些數據該傳給它所安裝的哪一個應用程序呢?

這時,端口就出現了。其實就是,我們在從計算機A向計算機B傳送數據時,還需指定一個端口,來供特定的應用程序去處理。即,傳輸層的功能就是去建立端口到端口的通信。

可有時,我們輸入IP地址時並沒有指定端口,其實,對於一些特定傳輸協議,大多有對應的默認端口。例如http的傳輸默認端口是80,而這些數據都會被包含在數據包裡。

此外,傳輸層最常見的兩大協議分別為TCP與UCP。其中TCP提供可靠的傳輸,而UDP提供的是不可靠傳輸。

Part 05 會話層 

負責在網絡中的兩節點之間建立和維持通信,以及提供交互會話的管理功能,常見的協議有RPC、SQL、NFS。會話層允許兩個系統以半雙工或全雙工的方式互相通信,還允許進程向數據中添加同步點,用於定位錯誤,避免數據丟失。

Part 06 表示層 

如同應用程序和網絡之間的“翻譯官”。在表示層,數據將按照網絡能理解的方案進行格式化,這種格式化也因所使用網絡的類型不同而不同。常見的協議有JPEG、ASCII、GIF、DES、MPEG。同時,表示層還可進行壓縮以減少需傳送的數據量。

Part 07 應用層 

應用層位於OSI模型的第七層,作用是為計算機用戶提供應用接口,也為用戶直接提供各種網絡服務。該層協議定義了應用進程之間的交互規則,通過不同的應用層協議為不同的網絡應用提供服務。例如支持萬維網的HTTP協議,電子郵件系統採用的SMTP協議。

Part 08 結語 

綜上所述,OSI參考模型由上到下分成7層,分別是應用層、表示層、會話層,傳輸層、網絡層、數據鏈路層和物理層。此外,還有一種更精簡的TCP/IP參考模型,其結構由上到下分成4層,分別是應用層,傳輸層,網絡層和網絡接口層。但TCP/IP參考模型沒有對網絡接口層進行細分,也未對服務和協議做明確的區分。因此本文基於OSI參考模型對網絡間的計算機通信原理進行講解。