數據的封裝與解封裝

首先,說明一下爲何要寫這麼一篇文章。
 
不少朋友電話問,老師我對網絡很感冒,可是不知道怎麼樣去學習?若是你也有這樣的疑問,那麼就頗有必要看看下文了:
 
三國的時候,魏、蜀、吳三家最後都同歸於晉了,沒有一個囂張起來的,爲何?就是由於諸葛亮、曹操、孫權都沒法看透世人心裏的本質,更沒法參透當時那個歷史潮流趨勢的本質。因此只能噹噹英雄豪傑,在歷史長河裏面不得長存。
 
咱們的網絡世界,相對人類社會關係的世界就稍微簡單些了,由於不管是正常的網絡訪問,仍是非和平手段的網絡***,在咱們網工眼裏看到的就是事情的本質,那都是一個個的數據包,而數據包在網絡中傳輸有一個能夠依據的過程的,如何看清他們如何分析他們,只要搞清楚這個過程,咱們就有了一雙火眼金睛。這個過程就是數據包傳輸時封裝與解封裝的過程。
 
而搞清楚這個過程又是爲一名即將成爲網工的人,即將進入網路世界的人,即將從事網絡行業的人的必經之路。
 
要說這個過程必須先搞清楚計算機網絡的發展史:
 
早期的第一代計算機網絡以主機爲中心,( 好比大學的機房,一臺主機 接300個終端,學生上機只能用終端,一旦主機崩潰了,300個終端也就廢了。還有早期的軍事網絡,一個主機鏈接四、5個雷達站,想把雷達搞定,只須要把那個主控主機搞定就一損俱損了。
 
那時的計算機網絡可謂至關脆弱,比小女人還嬌氣哈。
 
後來人們爲了解決這個問題,研究出了以資源爲中心的計算機網絡,( 首先從軍事上,以資源爲中心的結構完全解決了一損俱損的局面,多臺主機聯網,資源存儲在不一樣的主機上,一個壞了另外一個照樣用,不影響網絡的使用情況。而咱們目前的網絡也正式這樣的結構,某一個網站服務器癱瘓不能訪問了,還能夠訪問其餘網站。)
 
因此如今的網絡不侷限在某一臺物理主機裏,而是深刻人心了,只要咱們想要上網,想要獲取信息,就能夠獲取。已經上升到了精神層面了。
 
 
總結一下兩種結構的網絡:
 
一、以主機爲中心(物理)
二、以資源爲中心(邏輯)
 
有了網絡的結構的概念,咱們有一個新的問題誕生了,咱們拿網絡作什麼?咱們爲何要用計算機網絡?
 
這個問題不少人以爲難以回答,其實回想一下咱們天天上網所作的事情,問題就解決了。
 
計算機網絡的功能主要分爲下面4部分:
 
一、數據通訊
 
二、資源共享
 
三、增長可靠性(以資源爲中心)
 
四、提升系統處理能(以資源爲中心)
 
體如今咱們如今使用的:IP電話、IM、E-Mail、VOD、網絡遊戲、網上教學、網上電視、網上證券交易等等。不知不覺中,網絡已經深刻咱們的生活、學習和工做當中。
 
既然咱們的計算機網絡能夠作這麼多的事情,那麼如何實現的?
這個是咱們要進一步解決的問題。
 
既然咱們的計算機網絡的功能本質就是通訊,那麼計算機之間要實現通訊,就必須符合一個你們都遵照的規則--協議( 有不少自私的年輕人不明白爲何,我們將心比心的想想,你要買早點要跟早餐店老闆說一下你要吃什麼吧?既然要交流,好嘛,你說普通話,接着這個老闆來講一段火星話?大家之間能交流麼?不能!早飯能買到麼?不能!你包包裏的數據也就沒法傳輸給這個老闆了。因此計算機之間要交流,也必須你們都遵照一個統一的規則,語言、語法都要相同。
 
好,如今協議的概念清楚了,咱們再來從一個進步的層面看看協議的重要性。咱們來一塊兒看看歷史,打仗的歷史,打仗的歷史有不少咯,大部分都是多數人打少數人的歷史,多數人欺負少數人!好比美國人打這個印第安人、好比美國人打朝鮮、好比美國人欺負伊拉克,再說個國內的,好比諸葛亮打孟獲等等,咱們從中能夠看出打仗的本質緣由就是不能很好的通訊,爲何呢?沒有達成協議!因此你看看歐盟、你看看聯合國夠先進吧,夠有實力吧。爲何?有共同體的協議在先!有聯合國的條約在先!
 
協議的概念有了,協議的重要性明確了,下面咱們就來研究研究協議是怎麼工做的,看看聯合國這些組織是怎麼實現利益共同體的。
剛剛也說了,網絡的功能愈來愈多,可想而知要實現這樣的功能期間流程的複雜程度也是很是之高的。世界爲何進步了,很大的緣由就是你們都本着一個原則作事,那就是把複雜的問題簡單化,而簡單化的手段就是分工。社會是這樣進步的,國家是這樣進步的,企業是這樣競爭的,咱們的網絡協議也是這樣實現的。
 
計算機網絡之間遵照共同的協議,可是靠一句話的協議沒法實現那樣複雜的網絡功能,那麼就把咱們的協議分層,依靠協議的層次配合來實現複雜的功能,每一層解決一種問題,這樣就集合衆家之長解決了網絡協議的複雜性問題。也就是咱們所說的協議的分層實現( 咱們來看一看如今比較先進的公司結構就明白協議分層的意義了,一個公司有總經理吧,總經理下面有部門經理吧, 部門經理下有部門的員工吧。員工在履行本身的崗位職責的時候要不要幫着老闆想想我今天能盈利多少錢、我今天晚上要請哪一個領導吃個飯呢?不用!那麼一件事從上到下這麼一層層的執行下來,就變得簡單了,作完成之後在一層層的彙報上去,事情就完成了。在咱們層層執行,層層把關的時候就要牽扯倒一個問題了,這個問題就是服務訪問點【接口】 員工給領導提交報告的時候是發到哪一個郵箱去?是以什麼樣的模式發過去?領導給員工下達任務的時候以上麼樣的方式下達,是開會呢,仍是單獨談話呢?相信你們都不肯意被叫去單獨談話的吧?
 
協議可讓計算機網絡之間用統一的語言,統一的方式來進行通訊了,層與層之間配合時的接口也在剛剛的例子中說到了,那麼天然就會想倒服務這個詞,諸葛亮輔佐劉禪的時候就爲劉禪提供着服務,爲劉禪分擔治國的大小事務,而且還把所作的事情以上朝的方式(服務訪問點)告訴劉禪結果。而劉禪與諸葛亮之間的關係是一個層與層的關係:君臣關係。
 
計算機網絡中的服務類型比起公司、國家、社會那但是簡單多了,分爲兩種:
 
一、面向鏈接的服務
有的男生追女生,先約出來吃飯,吃飯的時候就想方設法的套出女孩子喜歡什麼樣的東西,緊接着下一步就開始獻殷勤:送禮物。其實這個過程就是一個面向鏈接的服務。約出來吃飯,已經創建了一個信任的管道,順着這個信任的管道,再把禮物傳輸過去。這樣傳輸數據很可靠,至少送過去的禮物女孩子不排斥。
二、無鏈接的服務
武大郎擺攤賣燒餅就是一個無鏈接的服務。首先他沒跟市民簽約要賣給誰,賣幾個?第二天天這個燒餅賣仍是不賣?確定是賣 能賣多少?內心有數沒?沒有! 因此不可靠。就是由於不可靠,因此老婆沒有安全感!
 
那麼我們來看看具體服務的過程:要搞清楚過程,必須先明白本身是誰,你是發送數據的呢仍是接受數據的呢?就像我們作生意同樣,想把東西賣出去,你就要明確的告訴本身你是賣東西的,要賣夠本身定位的價錢,要不願定會出問題。
 
一、做爲發送方(客戶),他要買東西,首先要給接收方(商家)發送一個創建鏈接的請求(我要買你東西)。
二、接收方收到創建鏈接的指示(老闆一看確實想買),對這個請求作出響應(要買多少)。
三、發送方(客戶),獲得創建鏈接的確認(買5個)。
 
這樣一筆生意的信任通路就打通了,打通了這個,剩下的就是雙方傳送數據了。
 
魯迅先生說:本沒有路,走的人多了那就成了路。革命的道路是這樣走出來的。
 
網絡中,所使用的協議也是這樣誕生的,從美國軍方的阿帕網開始TCP/IP網絡就開始了普及應用,而且通過了一段強制歷史。在TCP/IP普及前,美國不少地方網絡使用的是NMP協議,這樣要想兩個網絡通信就很難實現,因而採用了強制措施,不用TCP/IP的網絡會時不時的斷線。接下來,TCP/IP的普及便初具規模。同時,爲了更好的普及,有人提出TCP/IP分層模型的概念,在學術上增強TCP/IP。接着有個喜歡作國際級標準的組織【ISO】也發現了這件事,因而提出了一個用於統一國際網絡協議的參考模型OSI七層開放式網絡互聯參考模型。
 
那麼咱們來看看OSI七層模型的層次:
 
發送方:                                                                              接收方:
 
七、應用層                           應用層協議                           七、應用層(APDU)
接口
六、表示層                          表示層協議                            六、表示層(PPDU)
接口
五、會話層                          會話層協議                            五、會話層(SPDU)
接口
四、傳輸層                          傳輸層協議                            四、傳輸層(TPDU)
接口
三、網絡層                           網絡層協議                           三、網絡層(報文)
接口
二、數據鏈路層                   數據鏈路層協議                   二、數據鏈路層(幀)
接口
一、物理層                           物理層協議                           一、物理層(比特)
 
那麼再對比一下TCP/IP(4層)參考模型
四、應用層
三、傳輸層
二、互聯網層
一、網絡接口層
 
咱們把OSI參考模型的上3層合併爲一層應用層 來看看數據封裝和解封裝的過程:
 
I 封裝過程:
 
   既然是封裝過程,那麼必定是數據的發送方,就像咱們人寫信同樣,寫好了信,想要郵寄給朋友,必需要寫信封,而且把數據封裝到信封裏吧?那麼就從咱們的應用層把純數據封裝了一次,緊接着這封信放進了郵筒,郵局拿出信之後還要繼續把信分門別類,而後相同城市的打包再封裝,向下交給給了貨運公司。這個就是封裝的過程。
 
高層數據                                                應用層/表示層/會話層
 
TCP頭部|高層數據                                傳輸層
 
IP包頭|數據                                             網絡層
 
LLC頭部|數據|FCS                                 LLC子層 數據
MAC頭部|數據|FCS                              MAC子層 鏈路層
 
比特流                                                     物理層
 
II 解封裝過程:
   回顧上面封裝的過程,是一個有用戶到郵局層層打包的過程,那麼解封裝,咱們順勢想一下,收到信後接受城市的郵局第一件工做就是拆包裹,拆完之後,在分類,緊接着給郵遞員,郵遞員送到咱們收信人手裏,第一件事咱們要檢查信件的完整性吧?而咱們和郵局校驗的根據就是信封上及包裹上的標示,就像上圖中各層的頭部。
    封裝是給數據加包頭的過程,那麼解封裝就是收到包裹後給數據拆包頭的過程,而且層與層之間相互不能交流,只能同層的拆掉同層的包頭。
高層數據                                                應用層/表示層/會話層
 
TCP頭部|高層數據                                傳輸層
 
IP包頭|數據                                             網絡層
 
LLC頭部|數據|FCS                                 LLC子層 數據
MAC頭部|數據|FCS                              MAC子層 鏈路層
 
比特流                                                     物理層
 
以上就是數據的封裝及解封裝過程,看似簡單的原理,咱們整個網絡的實現以及學習就是圍繞着這個層次向上學習的。因此看到這裏,你要內心想想,我如今學到哪一層了,我掌握的怎麼樣?
 
跟蓋房子同樣,上層建築要想穩固下面的地基必定要打穩。
 
網絡是一個綜合性質很強頗有挑戰性的學問,在這裏必須一層一層練上去,就像少林功夫。不能越級但能夠速成,就看你用什麼內功心法了,在宋老師這裏你能夠獲得少林失傳絕學《易筋經》,成爲一代網絡江湖的武林高手!
相關文章
相關標籤/搜索