五分鐘技術(shù)趣談 | 一文讀懂計算機(jī)間如何收發(fā)信息

Part 01 物理層
一臺計算機(jī)若要與網(wǎng)絡(luò)中的另外一臺計算機(jī)進(jìn)行信息的傳遞,首要做的便是在計算機(jī)間進(jìn)行連接,即把這臺計算機(jī)與其他的計算機(jī)通過光纖、電纜、雙絞線等介質(zhì)將它們連接起來,這樣才能傳輸信息。所以說,物理層的作用其實就是將兩臺計算機(jī)連接起來,而后在計算機(jī)間以高低電頻去傳輸0、1形式的電信號。
Part 02 數(shù)據(jù)鏈路層
但如果計算機(jī)間的0、1信號沒有一個統(tǒng)一公認(rèn)的規(guī)則的話,計算機(jī)是無法解讀的。因此,便出現(xiàn)了以太網(wǎng)協(xié)議。
圖片
圖1 比特流
2.1 以太網(wǎng)協(xié)議
以太網(wǎng)協(xié)議中,一組電信號組成的數(shù)據(jù)包被稱作幀。此外,幀含有其標(biāo)頭和數(shù)據(jù)兩部分,它的大小一般為64-1518個字節(jié),而標(biāo)頭部分的字節(jié)固定為18個。因此若需要傳送的數(shù)據(jù)很大的話,就分成多個幀來進(jìn)行傳送。幀的標(biāo)頭一般存放一些說明數(shù)據(jù),如發(fā)送者、接受者等,而數(shù)據(jù)部分則存放即將發(fā)送給接受者的具體內(nèi)容。
2.2 MAC地址
圖片
圖2 網(wǎng)卡
在將一臺計算機(jī)中的數(shù)據(jù)通過物理層和鏈路層發(fā)送給另一臺計算機(jī)的過程中,為區(qū)分不同的計算機(jī),便產(chǎn)生了每臺計算機(jī)的唯一標(biāo)識--MAC地址。其中,每一臺連入網(wǎng)絡(luò)的計算機(jī)都會有自身的網(wǎng)卡,每個網(wǎng)卡都會有一個自身唯一的地址,即MAC地址。
2.3 廣播
在網(wǎng)絡(luò)中,計算機(jī)A不僅僅連接著計算機(jī)B,還連接著其他的多個計算機(jī)。若計算機(jī)A已知計算機(jī)B的MAC地址,并想要向計算機(jī)B發(fā)送信息,但計算機(jī)A并不知道計算機(jī)B在哪一條路線上。于是,便出現(xiàn)了廣播。
在同一子網(wǎng)中,計算機(jī)A向計算機(jī)B發(fā)送信息,由于數(shù)據(jù)包中包含了計算機(jī)B的MAC地址(假設(shè)此處計算機(jī)A已得知計算機(jī)B的MAC地址,原因?qū)⒃谙乱恍」?jié)的ARP協(xié)議中講解)。當(dāng)發(fā)送信息時,計算機(jī)A通過廣播的方式發(fā)送,此時在同一子網(wǎng)中的計算機(jī)C或D受到收到這一數(shù)據(jù)包后,會把數(shù)據(jù)包中的MAC地址取出并進(jìn)行比較,如果與其自身的MAC地址相同,則接收數(shù)據(jù)包,否則就丟棄這一數(shù)據(jù)包。
Part 03 網(wǎng)絡(luò)層
圖片
圖3 OSI參考模型
上一節(jié)提到子網(wǎng),其實我們所處的網(wǎng)絡(luò)是由無數(shù)個子網(wǎng)所構(gòu)成的,而廣播的時候也只有同一個子網(wǎng)中的計算機(jī)才能夠收到。
如若沒有子網(wǎng)劃分,計算機(jī)A使用廣播方式發(fā)送數(shù)據(jù)包給計算機(jī)B,此時所有計算機(jī)都可以收到這個數(shù)據(jù)包,然后開始對比并舍棄。但網(wǎng)絡(luò)中如此多的計算機(jī),每一臺都收到其他計算機(jī)所發(fā)送的數(shù)據(jù)包,是會造成網(wǎng)絡(luò)崩潰的,因此產(chǎn)生了子網(wǎng)。
此刻問題來了,計算機(jī)如何區(qū)分哪些MAC地址屬于同一子網(wǎng),而選擇進(jìn)行廣播將數(shù)據(jù)傳送給對方,哪些不屬于同一子網(wǎng),而選擇將數(shù)據(jù)傳給網(wǎng)關(guān),再讓網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā)。為解決這一問題,出現(xiàn)了IP協(xié)議。
3.1 IP協(xié)議
IP協(xié)議所定義的地址被稱之為IP地址,它有兩種版本,IPv4與IPv6,本文僅就IPv4進(jìn)行討論。IP地址一般由32位的二進(jìn)制數(shù)組成,將其分成4段的十進(jìn)制表示地址范圍為0.0.0.0-255.255.255.255。而互聯(lián)網(wǎng)中,每一個計算機(jī)都有一個IP地址,這一IP地址被分為前一部分的網(wǎng)絡(luò)部分與后一部分的主機(jī)部分。且網(wǎng)絡(luò)部分與主機(jī)部分各自所占的二進(jìn)制位數(shù)是不定的。
如果兩臺計算機(jī)的網(wǎng)絡(luò)部分是一樣的,便稱這兩臺計算機(jī)是在同一子網(wǎng)內(nèi)的,如192.188.88.1與192.188.88.2;如果它們的網(wǎng)絡(luò)部分都是192.188.88(共32位),而主機(jī)部分都是剩余8位的話,則它們是在一個子網(wǎng)內(nèi)的。但如何知曉網(wǎng)絡(luò)部分占幾位,主機(jī)部分又占幾位呢?于是便產(chǎn)生了子網(wǎng)掩碼。子網(wǎng)掩碼與IP地址同樣都是32位二進(jìn)制數(shù),但子網(wǎng)掩碼的網(wǎng)絡(luò)部分全為1,主機(jī)部分全為0。例如上一段例子中,IP地址網(wǎng)絡(luò)部分為24位,主機(jī)部分為8位的話,那其子網(wǎng)掩碼為11111111.11111111.11111111.00000000,即255.255.255.0。因此,在得知兩個IP地址的子網(wǎng)掩碼后,我們便可以判斷他們是否都在同一子網(wǎng)中。
3.2 ARP協(xié)議
通過兩臺計算機(jī)的IP地址與子網(wǎng)掩碼,我們便可以判斷他們是否在同一子網(wǎng)內(nèi)。但計算機(jī)A如何知道計算機(jī)B的MAC地址呢?這時就出現(xiàn)了ARP協(xié)議。
ARP協(xié)議是指以廣播的方式向同一子網(wǎng)中的所有計算機(jī)發(fā)送包含接收方IP地址的數(shù)據(jù)包。子網(wǎng)內(nèi)的所有電腦接收到數(shù)據(jù)包后會取出IP地址將其與自身IP進(jìn)行對比,如若相同,就回復(fù)自己的MAC地址,如若不同,就丟棄這一數(shù)據(jù)包。如此一來,計算機(jī)A便知悉計算機(jī)B的MAC地址了。
同時,兩臺計算機(jī)的IP如不在同一子網(wǎng)內(nèi),此時計算機(jī)就會把數(shù)據(jù)包傳送給網(wǎng)關(guān),之后由網(wǎng)關(guān)來進(jìn)行轉(zhuǎn)發(fā)與傳送。
3.3 DNS服務(wù)器
此時還有一個問題便是,我們?nèi)绾沃老胍L問的計算機(jī)IP地址呢?因為我們絕大多數(shù)人訪問網(wǎng)絡(luò)時,是通過網(wǎng)絡(luò)域名進(jìn)行訪問的,例如訪問中國移動連楹家庭智慧平臺時,輸入的是https://open.home.10086.cn/這個域名。其實,當(dāng)我們輸入這個域名時,DNS服務(wù)器的作用就是解析這一域名,而后返回其對應(yīng)的IP給計算機(jī)。
Part 04 傳輸層
通過以上介紹的物理層、數(shù)據(jù)鏈路層以及網(wǎng)絡(luò)層之后,我們已經(jīng)成功地將數(shù)據(jù)由計算機(jī)A傳送到計算機(jī)B了。但計算機(jī)B如何知道這些數(shù)據(jù)該傳給它所安裝的哪一個應(yīng)用程序呢?
這時,端口就出現(xiàn)了。其實就是,我們在從計算機(jī)A向計算機(jī)B傳送數(shù)據(jù)時,還需指定一個端口,來供特定的應(yīng)用程序去處理。即,傳輸層的功能就是去建立端口到端口的通信。
可有時,我們輸入IP地址時并沒有指定端口,其實,對于一些特定傳輸協(xié)議,大多有對應(yīng)的默認(rèn)端口。例如http的傳輸默認(rèn)端口是80,而這些數(shù)據(jù)都會被包含在數(shù)據(jù)包里。
此外,傳輸層最常見的兩大協(xié)議分別為TCP與UCP。其中TCP提供可靠的傳輸,而UDP提供的是不可靠傳輸。
Part 05 會話層
負(fù)責(zé)在網(wǎng)絡(luò)中的兩節(jié)點之間建立和維持通信,以及提供交互會話的管理功能,常見的協(xié)議有RPC、SQL、NFS。會話層允許兩個系統(tǒng)以半雙工或全雙工的方式互相通信,還允許進(jìn)程向數(shù)據(jù)中添加同步點,用于定位錯誤,避免數(shù)據(jù)丟失。
Part 06 表示層
如同應(yīng)用程序和網(wǎng)絡(luò)之間的“翻譯官”。在表示層,數(shù)據(jù)將按照網(wǎng)絡(luò)能理解的方案進(jìn)行格式化,這種格式化也因所使用網(wǎng)絡(luò)的類型不同而不同。常見的協(xié)議有JPEG、ASCII、GIF、DES、MPEG。同時,表示層還可進(jìn)行壓縮以減少需傳送的數(shù)據(jù)量。
Part 07 應(yīng)用層
應(yīng)用層位于OSI模型的第七層,作用是為計算機(jī)用戶提供應(yīng)用接口,也為用戶直接提供各種網(wǎng)絡(luò)服務(wù)。該層協(xié)議定義了應(yīng)用進(jìn)程之間的交互規(guī)則,通過不同的應(yīng)用層協(xié)議為不同的網(wǎng)絡(luò)應(yīng)用提供服務(wù)。例如支持萬維網(wǎng)的HTTP協(xié)議,電子郵件系統(tǒng)采用的SMTP協(xié)議。
Part 08 結(jié)語
綜上所述,OSI參考模型由上到下分成 7層,分別是應(yīng)用層、表示層、會話層,傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。此外,還有一種更精簡的TCP/IP參考模型,其結(jié)構(gòu)由上到下分成4層,分別是應(yīng)用層,傳輸層,網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層。但TCP/IP參考模型沒有對網(wǎng)絡(luò)接口層進(jìn)行細(xì)分,也未對服務(wù)和協(xié)議做明確的區(qū)分。因此本文基于OSI參考模型對網(wǎng)絡(luò)間的計算機(jī)通信原理進(jìn)行講解。






































