2017-09-03 讀書筆記(互聯(lián)網(wǎng)協(xié)議入門1)

大學(xué)學(xué)的計算機網(wǎng)絡(luò)都忘得差不多了,雖然現(xiàn)在作為一個小前端,這些都用不怎么上,但是該看的還是得看。

想了一下,決定看作為新手引導(dǎo)大神的 阮一峰 的文章。

今天先看這篇 互聯(lián)網(wǎng)協(xié)議入門(一)

互聯(lián)網(wǎng)的核心是一系列協(xié)議,總稱為"互聯(lián)網(wǎng)協(xié)議"(Internet Protocol Suite)。它們對電腦如何連接和組網(wǎng),做出了詳盡的規(guī)定。理解了這些協(xié)議,就理解了互聯(lián)網(wǎng)的原理。

1、概述

如何分層有不同的模型,有的模型分七層,有的分四層。我覺得,把互聯(lián)網(wǎng)分成五層,比較容易解釋。

最底下的一層叫做"實體層"(Physical Layer),最上面的一層叫做"應(yīng)用層"(Application Layer),中間的三層(自下而上)分別是"鏈接層"(Link Layer)、"網(wǎng)絡(luò)層"(Network Layer)和"傳輸層"(Transport Layer)。越下面的層,越靠近硬件;越上面的層,越靠近用戶。

應(yīng)用層 -> 傳輸層 -> 網(wǎng)絡(luò)層 -> 鏈接層 -> 實體層

它們叫什么名字,其實并不重要。只需要知道,互聯(lián)網(wǎng)分成若干層就可以了。

2、實體層

"實體層"就是把電腦連接起來的物理手段,它主要規(guī)定了網(wǎng)絡(luò)的一些電氣特性,作用是負責(zé)傳送0和1的電信號。比如光纜、電纜、雙絞線、無線電波等方式。

3、鏈接層

它在"實體層"的上方,確定了0和1的分組方式。

以太網(wǎng)是一種電信號分組方式的協(xié)議。以太網(wǎng)規(guī)定,一組電信號構(gòu)成一個數(shù)據(jù)包,叫做"幀"(Frame)。每一幀分成兩個部分:標頭(Head)和數(shù)據(jù)(Data)。

MAC地址,也就是網(wǎng)卡的地址,就是數(shù)據(jù)包的發(fā)送地址和接收地址。

每塊網(wǎng)卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數(shù)表示。

ARP協(xié)議可以使一塊網(wǎng)卡知道另一塊網(wǎng)卡的MAC地址。

以太網(wǎng)采用了一種很"原始"的方式傳遞,它不是把數(shù)據(jù)包準確送到接收方,而是向本網(wǎng)絡(luò)內(nèi)所有計算機發(fā)送,讓每臺計算機自己判斷,是否為接收方。這種發(fā)送方式就叫做"廣播"(broadcasting)。

4、網(wǎng)絡(luò)層

互聯(lián)網(wǎng)是無數(shù)子網(wǎng)絡(luò)共同組成的一個巨型網(wǎng)絡(luò),如果兩臺計算機不在同一個子網(wǎng)絡(luò),廣播是傳不過去的。

如果是同一個子網(wǎng)絡(luò),就采用廣播方式發(fā)送,否則就采用"路由"方式發(fā)送。(路由只是一種方式,具體實現(xiàn)是靠網(wǎng)絡(luò)層才做到。)

這就導(dǎo)致了"網(wǎng)絡(luò)層"的誕生。它的作用是引進一套新的地址,使得我們能夠區(qū)分不同的計算機是否屬于同一個子網(wǎng)絡(luò)。這套地址就叫做"網(wǎng)絡(luò)地址",簡稱"網(wǎng)址"。

于是,"網(wǎng)絡(luò)層"出現(xiàn)以后,每臺計算機有了兩種地址,一種是MAC地址,另一種是網(wǎng)絡(luò)地址。

從邏輯上可以推斷,必定是先處理網(wǎng)絡(luò)地址,然后再處理MAC地址。

規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。它所定義的地址,就被稱為IP地址。

目前,廣泛采用的是IP協(xié)議第四版,簡稱IPv4。這個版本規(guī)定,網(wǎng)絡(luò)地址由32個二進制位組成,從0.0.0.0一直到255.255.255.255。

互聯(lián)網(wǎng)上的每一臺計算機,都會分配到一個IP地址。這個地址分成兩個部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機。

"子網(wǎng)掩碼",就是表示子網(wǎng)絡(luò)特征的一個參數(shù)。如果已知網(wǎng)絡(luò)部分是前24位,主機部分是后8位,那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。將兩個IP地址與子網(wǎng)掩碼分別進行AND運算(二進制下,兩個數(shù)位都為1,運算結(jié)果為1,否則為0),然后比較結(jié)果是否相同,如果是的話,就表明它們在同一個子網(wǎng)絡(luò)中,否則就不是。其實也就是是禁止中的前9位相同的意思)

以太網(wǎng)數(shù)據(jù)包是head+body的形式,IP數(shù)據(jù)包是在這邊的body中,又分為head和body。

IP數(shù)據(jù)包的"標頭"部分的長度為20到60字節(jié),整個數(shù)據(jù)包的總長度最大為65,535字節(jié)。因此,理論上,一個IP數(shù)據(jù)包的"數(shù)據(jù)"部分,最長為65,515字節(jié)。前面說過,以太網(wǎng)數(shù)據(jù)包的"數(shù)據(jù)"部分,最長只有1500字節(jié)。因此,如果IP數(shù)據(jù)包超過了1500字節(jié),它就需要分割成幾個以太網(wǎng)數(shù)據(jù)包,分開發(fā)送了。

通常情況下,對方的IP地址是已知的,但是我們不知道它的MAC地址。

ARP協(xié)議可以得到同一個子網(wǎng)絡(luò)內(nèi)的主機MAC地址,可以把數(shù)據(jù)包發(fā)送到任意一臺主機之上了。

5、傳輸層

有了MAC地址和IP地址,我們已經(jīng)可以在互聯(lián)網(wǎng)上任意兩臺主機上建立通信。

"端口"(port),它其實是每一個使用網(wǎng)卡的程序的編號。每個數(shù)據(jù)包都發(fā)到主機的特定端口,所以不同的程序就能取到自己所需要的數(shù)據(jù)。

"傳輸層"的功能,就是建立"端口到端口"的通信。相比之下,"網(wǎng)絡(luò)層"的功能是建立"主機到主機"的通信。只要確定主機和端口,我們就能實現(xiàn)程序之間的交流。

整個UDP數(shù)據(jù)包在IP數(shù)據(jù)包的"數(shù)據(jù)"body部分,也分為head和body。

TCP協(xié)議可以提高網(wǎng)絡(luò)可靠性。可以近似認為,TCP協(xié)議是有確認機制的UDP協(xié)議,每發(fā)出一個數(shù)據(jù)包都要求確認。如果有一個數(shù)據(jù)包遺失,收不到確認,發(fā)出方就知道有必要重發(fā)這個數(shù)據(jù)包了。

TCP協(xié)議能夠確保數(shù)據(jù)不會遺失,提高網(wǎng)絡(luò)可靠性。它的缺點是過程復(fù)雜、實現(xiàn)困難、消耗較多的資源。

TCP數(shù)據(jù)包和UDP數(shù)據(jù)包一樣,都是內(nèi)嵌在IP數(shù)據(jù)包的"數(shù)據(jù)"部分。

6、應(yīng)用層

"應(yīng)用層"的作用,就是規(guī)定應(yīng)用程序的數(shù)據(jù)格式。

TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù),比如Email、WWW、FTP等等。那么,必須有不同協(xié)議規(guī)定電子郵件、網(wǎng)頁、FTP數(shù)據(jù)的格式,這些應(yīng)用程序協(xié)議就構(gòu)成了"應(yīng)用層"。

總結(jié)

大體就是這么5層了。

發(fā)出的數(shù)據(jù)結(jié)構(gòu)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容