我們每天使用互聯網,你是否想過,它是如何實現的?
全世界幾十億臺電腦,連接在一起,兩兩通信。上海的某一塊網卡送出信號,洛杉磯的另一塊網卡居然就收到了,兩者實際上根本不知道對方的物理位置,你不覺得這是很神奇的事情嗎?
互聯網的核心是一系列協議,總稱為"互聯網協議"(Internet Protocol Suite)。它們對電腦如何連接和組網,做出了詳盡的規定。理解了這些協議,就理解了互聯網的原理。
下面就是我的學習筆記。因為這些協議實在太復雜、太龐大,我想整理一個簡潔的框架,幫助自己從總體上把握它們。為了保證簡單易懂,我做了大量的簡化,有些地方并不全面和精確,但是應該能夠說清楚互聯網的原理。
=================================================
互聯網協議入門
作者:阮一峰
一、概述
1.1 五層模型
互聯網的實現,分成好幾層。每一層都有自己的功能,就像建筑物一樣,每一層都靠下一層支持。
用戶接觸到的,只是最上面的一層,根本沒有感覺到下面的層。要理解互聯網,必須從最下層開始,自下而上理解每一層的功能。
如何分層有不同的模型,有的模型分七層,有的分四層。我覺得,把互聯網分成五層,比較容易解釋。
如上圖所示,最底下的一層叫做"實體層"(Physical Layer),最上面的一層叫做"應用層"(Application Layer),中間的三層(自下而上)分別是"鏈接層"(Link Layer)、"網絡層"(Network Layer)和"傳輸層"(Transport Layer)。越下面的層,越靠近硬件;越上面的層,越靠近用戶。
它們叫什么名字,其實并不重要。只需要知道,互聯網分成若干層就可以了。
1.2 層與協議
每一層都是為了完成一種功能。為了實現這些功能,就需要大家都遵守共同的規則。
大家都遵守的規則,就叫做"協議"(protocol)。
互聯網的每一層,都定義了很多協議。這些協議的總稱,就叫做"互聯網協議"(Internet Protocol Suite)。它們是互聯網的核心,下面介紹每一層的功能,主要就是介紹每一層的主要協議。
二、實體層
我們從最底下的一層開始。
電腦要組網,第一件事要干什么?當然是先把電腦連起來,可以用光纜、電纜、雙絞線、無線電波等方式。
這就叫做"實體層",它就是把電腦連接起來的物理手段。它主要規定了網絡的一些電氣特性,作用是負責傳送0和1的電信號。
三、鏈接層
3.1 定義
單純的0和1沒有任何意義,必須規定解讀方式:多少個電信號算一組?每個信號位有何意義?
這就是"鏈接層"的功能,它在"實體層"的上方,確定了0和1的分組方式。
3.2 以太網協議
早期的時候,每家公司都有自己的電信號分組方式。逐漸地,一種叫做"以太網"(Ethernet)的協議,占據了主導地位。
以太網規定,一組電信號構成一個數據包,叫做"幀"(Frame)。每一幀分成兩個部分:標頭(Head)和數據(Data)。
"標頭"包含數據包的一些說明項,比如發送者、接受者、數據類型等等;"數據"則是數據包的具體內容。
"標頭"的長度,固定為18字節。"數據"的長度,最短為46字節,最長為1500字節。因此,整個"幀"最短為64字節,最長為1518字節。如果數據很長,就必須分割成多個幀進行發送。
3.3 MAC地址
上面提到,以太網數據包的"標頭",包含了發送者和接受者的信息。那么,發送者和接受者是如何標識呢?
以太網規定,連入網絡的所有設備,都必須具有"網卡"接口。數據包必須是從一塊網卡,傳送到另一塊網卡。網卡的地址,就是數據包的發送地址和接收地址,這叫做MAC地址。
每塊網卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數表示。
前6個十六進制數是廠商編號,后6個是該廠商的網卡流水號。有了MAC地址,就可以定位網卡和數據包的路徑了。
3.4 廣播
定義地址只是第一步,后面還有更多的步驟。
首先,一塊網卡怎么會知道另一塊網卡的MAC地址?
回答是有一種ARP協議,可以解決這個問題。這個留到后面介紹,這里只需要知道,以太網數據包必須知道接收方的MAC地址,然后才能發送。
其次,就算有了MAC地址,系統怎樣才能把數據包準確送到接收方?
回答是以太網采用了一種很"原始"的方式,它不是把數據包準確送到接收方,而是向本網絡內所有計算機發送,讓每臺計算機自己判斷,是否為接收方。
上圖中,1號計算機向2號計算機發送一個數據包,同一個子網絡的3號、4號、5號計算機都會收到這個包。它們讀取這個包的"標頭",找到接收方的MAC地址,然后與自身的MAC地址相比較,如果兩者相同,就接受這個包,做進一步處理,否則就丟棄這個包。這種發送方式就叫做"廣播"(broadcasting)。
原文轉自:http://www.anti-gravitydesign.com