互聯網協議入門(一)

發表于:2012-06-07來源:不祥作者:阮一峰點擊數: 標簽:互聯網協議
我們每天使用互聯網,你是否想過,它是如何實現的? 全世界幾十億臺電腦,連接在一起,兩兩通信。上海的某一塊網卡送出信號,洛杉磯的另一塊網卡居然就收到了,兩者實際上根本不知道對方的物理位置,你不覺得這是很神奇的事情嗎?

  我們每天使用互聯網,你是否想過,它是如何實現的?

  全世界幾十億臺電腦,連接在一起,兩兩通信。上海的某一塊網卡送出信號,洛杉磯的另一塊網卡居然就收到了,兩者實際上根本不知道對方的物理位置,你不覺得這是很神奇的事情嗎?

  互聯網的核心是一系列協議,總稱為"互聯網協議"(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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97