天天看點

看透這個世界--資料封裝與解封裝過程

首先,說明一下為什麼要寫這麼一篇文章。

很多朋友電話問,老師我對網絡很感冒,但是不知道怎麼樣去學習?如果你也有這樣的疑問,那麼就很有必要看看下文了:

三國的時候,魏、蜀、吳三家最後都同歸于晉了,沒有一個嚣張起來的,為什麼?就是因為諸葛亮、曹操、孫權都無法看透世人内心的本質,更無法參透當時那個曆史潮流趨勢的本質。是以隻能當當英雄豪傑,在曆史長河裡面不得長存。

我們的網絡世界,相對人類社會關系的世界就稍微簡單些了,因為無論是正常的網絡通路,還是非和平手段的網絡攻擊,在我們網工眼裡看到的就是事情的本質,那都是一個個的資料包,而資料包在網絡中傳輸有一個可以依據的過程的,如何看清他們如何分析他們,隻要搞清楚這個過程,我們就有了一雙火眼金睛。這個過程就是資料包傳輸時封裝與解封裝的過程。

而搞清楚這個過程又是為一名即将成為網工的人,即将進入網路世界的人,即将從事網絡行業的人的必經之路。

要說這個過程必須先搞清楚計算機網絡的發展史:

早期的第一代計算機網絡以主機為中心,(比如大學的機房,一台主機 接300個終端,學生上機隻能用終端,一旦主機崩潰了,300個終端也就廢了。還有早期的軍事網絡,一個主機連接配接4、5個雷達站,想把雷達搞定,隻需要把那個主要主機搞定就一損俱損了。)

那時的計算機網絡可謂相當脆弱,比小女人還嬌氣哈。

後來人們為了解決這個問題,研究出了以資源為中心的計算機網絡,(首先從軍事上,以資源為中心的結構徹底解決了一損俱損的局面,多台主機聯網,資源存儲在不同的主機上,一個壞了另一個照樣用,不影響網絡的使用狀況。而我們目前的網絡也正式這樣的結構,某一個網站伺服器癱瘓不能通路了,還可以通路其他網站。)

是以現在的網絡不局限在某一台實體主機裡,而是深入人心了,隻要我們想要上網,想要擷取資訊,就可以擷取。已經上升到了精神層面了。

總結一下兩種結構的網絡:

1、以主機為中心(實體)

2、以資源為中心(邏輯)

有了網絡的結構的概念,我們有一個新的問題誕生了,我們拿網絡做什麼?我們為什麼要用計算機網絡?

這個問題很多人覺得難以回答,其實回想一下我們每天上網所做的事情,問題就解決了。

計算機網絡的功能主要分為下面4部分:

1、資料通信

2、資源共享

3、增加可靠性(以資源為中心)

4、提高系統處理能(以資源為中心)

展現在我們現在使用的:IP電話、IM、E-Mail、VOD、網絡遊戲、網上教學、網上電視、網上證券交易等等。不知不覺中,網絡已經深入我們的生活、學習和工作當中。

既然我們的計算機網絡可以做這麼多的事情,那麼如何實作的?

這個是我們要進一步解決的問題。

既然我們的計算機網絡的功能本質就是通信,那麼計算機之間要實作通信,就必須符合一個大家都遵守的規則--協定(有很多自私的年輕人不明白為什麼,咱們将心比心的想一想,你要買早點要跟早餐店老闆說一下你要吃什麼吧?既然要交流,好嘛,你說國語,接着這個老闆來說一段火星話?你們之間能交流麼?不能!早飯能買到麼?不能!你包包裡的資料也就無法傳輸給這個老闆了。是以計算機之間要交流,也必須大家都遵守一個統一的規則,語言、文法都要相同。)

好,現在協定的概念清楚了,我們再來從一個進步的層面看看協定的重要性。我們來一起看看曆史,打仗的曆史,打仗的曆史有很多咯,大部分都是多數人打少數人的曆史,多數人欺負少數人!比如美國人打這個印第安人、比如美國人打北韓、比如美國人欺負伊拉克,再說個國内的,比如諸葛亮打孟獲等等,我們從中可以看出打仗的本質原因就是不能很好的通信,為什麼呢?沒有達成協定!是以你看看歐盟、你看看聯合國夠先進吧,夠有實力吧。為什麼?有共同體的協定在先!有聯合國的條約在先!

協定的概念有了,協定的重要性明确了,下面我們就來研究研究協定是怎麼工作的,看看聯合國這些組織是怎麼實作利益共同體的。

剛剛也說了,網絡的功能越來越多,可想而知要實作這樣的功能期間流程的複雜程度也是非常之高的。世界為什麼進步了,很大的原因就是大家都本着一個原則做事,那就是把複雜的問題簡單化,而簡單化的手段就是分工。社會是這樣進步的,國家是這樣進步的,企業是這樣競争的,我們的網絡協定也是這樣實作的。

計算機網絡之間遵守共同的協定,但是靠一句話的協定無法實作那樣複雜的網絡功能,那麼就把我們的協定分層,依靠協定的層次配合來實作複雜的功能,每一層解決一種問題,這樣就集合衆家之長解決了網絡協定的複雜性問題。也就是我們所說的協定的分層實作(我們來看一看現在比較先進的公司結構就明白協定分層的意義了,一個公司有總經理吧,總經理下面有部門經理吧, 部門經理下有部門的員工吧。員工在履行自己的崗位職責的時候要不要幫着老闆想一想我今天能盈利多少錢、我今天晚上要請哪個上司吃個飯呢?不用!那麼一件事從上到下這麼一層層的執行下來,就變得簡單了,做完成以後在一層層的彙報上去,事情就完成了。在我們層層執行,層層把關的時候就要牽扯倒一個問題了,這個問題就是服務通路點【接口】 員工給上司送出報告的時候是發到哪個郵箱去?是以什麼樣的模式發過去?上司給員工下達任務的時候以上麼樣的方式下達,是開會呢,還是單獨談話呢?相信大家都不願意被叫去單獨談話的吧?)

協定可以讓計算機網絡之間用統一的語言,統一的方式來進行通信了,層與層之間配合時的接口也在剛剛的例子中說到了,那麼自然就會想倒服務這個詞,諸葛亮輔佐劉禅的時候就為劉禅提供着服務,為劉禅分擔治國的大小事務,并且還把所做的事情以上朝的方式(服務通路點)告訴劉禅結果。而劉禅與諸葛亮之間的關系是一個層與層的關系:君臣關系。

計算機網絡中的服務類型比起公司、國家、社會那可是簡單多了,分為兩種:

1、面向連接配接的服務

有的男生追女生,先約出來吃飯,吃飯的時候就千方百計的套出女孩子喜歡什麼樣的東西,緊接着下一步就開始獻殷勤:送禮物。其實這個過程就是一個面向連接配接的服務。約出來吃飯,已經建立了一個信任的管道,順着這個信任的管道,再把禮物傳輸過去。這樣傳輸資料很可靠,至少送過去的禮物女孩子不排斥。

2、無連接配接的服務

武大郎擺攤賣燒餅就是一個無連接配接的服務。首先他沒跟市民簽約要賣給誰,賣幾個?第二每天這個燒餅賣還是不賣?肯定是賣 能賣多少?心裡有數沒?沒有! 是以不可靠。就是因為不可靠,是以老婆沒有安全感!

那麼咱們來看看具體服務的過程:要搞清楚過程,必須先明白自己是誰,你是發送資料的呢還是接受資料的呢?就像咱們做生意一樣,想把東西賣出去,你就要明确的告訴自己你是賣東西的,要賣夠自己定位的價錢,要不肯定會出問題。

1、作為發送方(客戶),他要買東西,首先要給接收方(商家)發送一個建立連接配接的請求(我要買你東西)。

2、接收方收到建立連接配接的訓示(老闆一看确實想買),對這個請求做出響應(要買多少)。

3、發送方(客戶),得到建立連接配接的确認(買5個)。

這樣一筆生意的信任通路就打通了,打通了這個,剩下的就是雙方傳送資料了。

魯迅先生說:本沒有路,走的人多了那就成了路。革命的道路是這樣走出來的。

網絡中,所使用的協定也是這樣誕生的,從美國軍方的阿帕網開始TCP/IP網絡就開始了普及應用,并且經過了一段強制曆史。在TCP/IP普及前,美國很多地方網絡使用的是NMP協定,這樣要想兩個網絡通訊就很難實作,于是采用了強制措施,不用TCP/IP的網絡會時不時的斷線。接下來,TCP/IP的普及便初具規模。同時,為了更好的普及,有人提出TCP/IP分層模型的概念,在學術上加強TCP/IP。接着有個喜歡做國際級标準的組織【ISO】也發現了這件事,于是提出了一個用于統一國際網絡協定的參考模型OSI七層開放式網絡互聯參考模型。

那麼我們來看看OSI七層模型的層次:

發送方:                                                                              接收方:

7、應用層                           應用層協定                           7、應用層(APDU)

接口

6、表示層                          表示層協定                            6、表示層(PPDU)

5、會話層                          會話層協定                            5、會話層(SPDU)

4、傳輸層                          傳輸層協定                            4、傳輸層(TPDU)

3、網絡層                           網絡層協定                           3、網絡層(封包)

2、資料鍊路層                   資料鍊路層協定                   2、資料鍊路層(幀)

1、實體層                           實體層協定                           1、實體層(比特)

那麼再對比一下TCP/IP(4層)參考模型

4、應用層

3、傳輸層

2、網際網路層

1、網絡接口層

我們把OSI參考模型的上3層合并為一層應用層 來看看資料封裝和解封裝的過程:

I 封裝過程:

   既然是封裝過程,那麼一定是資料的發送方,就像我們人寫信一樣,寫好了信,想要郵寄給朋友,必須要寫信封,并且把資料封裝到信封裡吧?那麼就從我們的應用層把純資料封裝了一次,緊接着這封信放進了郵筒,郵局拿出信以後還要繼續把信分門别類,然後相同城市的打包再封裝,向下交給給了貨運公司。這個就是封裝的過程。

高層資料                                                應用層/表示層/會話層

TCP頭部|高層資料                                傳輸層

IP標頭|資料                                             網絡層

LLC頭部|資料|FCS                                 LLC子層 資料

MAC頭部|資料|FCS                              MAC子層 鍊路層

比特流                                                     實體層

II 解封裝過程:

   回顧上面封裝的過程,是一個有使用者到郵局層層打包的過程,那麼解封裝,我們順勢想一下,收到信後接受城市的郵局第一件工作就是拆包裹,拆完以後,在分類,緊接着給郵差,郵差送到我們收信人手裡,第一件事我們要檢查信件的完整性吧?而我們和郵局校驗的根據就是信封上及包裹上的标示,就像上圖中各層的頭部。

    封裝是給資料加標頭的過程,那麼解封裝就是收到包裹後給資料拆標頭的過程,并且層與層之間互相不能交流,隻能同層的拆掉同層的標頭。

TCP頭部拆|高層資料                                傳輸層

IP標頭拆|資料                                             網絡層

LLC頭部拆|資料|拆FCS                                 LLC子層 資料

MAC頭部拆|資料|FCS                              MAC子層 鍊路層

以上就是資料的封裝及解封裝過程,看似簡單的原理,我們整個網絡的實作以及學習就是圍繞着這個層次向上學習的。是以看到這裡,你要心裡想一想,我現在學到哪一層了,我掌握的怎麼樣?

跟蓋房子一樣,上層建築要想穩固下面的地基一定要打穩。

網絡是一個綜合性質很強很有挑戰性的學問,在這裡必須一層一層練上去,就像少林功夫。不能越級但可以速成,就看你用什麼内功心法了,在宋老師這裡你可以得到少林失傳絕學《易筋經》,成為一代網絡江湖的武林高手!

                                                                                                 2008年4月9日 下午5點52分

                                                                                                  于交大網絡校區

      網絡是中國的網絡,作為一名中國人,我們不做,誰做?

繼續閱讀