TCP/IP基礎(chǔ)之?dāng)?shù)據(jù)封裝
日常生活中,大家在網(wǎng)購或郵寄某件物品時(shí),除了要填寫雙方的地址,還要填寫聯(lián)系方式、是否需要保價(jià)等信息。另外負(fù)責(zé)郵寄的快遞公司可能還會有一些其它規(guī)定也要附加在購買和郵寄的物品詳單上。這樣做的目的都是為了保證郵寄過程的可靠、準(zhǔn)確。
類似的在通信網(wǎng)絡(luò)中,數(shù)據(jù)包利用網(wǎng)絡(luò)在不同設(shè)備之間傳輸時(shí),為了可靠和準(zhǔn)確地發(fā)送到目的地,并且高效地利用傳輸資源(傳輸設(shè)備和傳輸線路),事先要對數(shù)據(jù)包進(jìn)行拆分和打包。
在所發(fā)送的數(shù)據(jù)包上附加上目標(biāo)地址、本地地址以及一些用于糾錯(cuò)的字節(jié),當(dāng)安全性和可靠性要求較高時(shí),還要進(jìn)行加密處理等。
上述的操作就叫做數(shù)據(jù)封裝,而對數(shù)據(jù)包進(jìn)行處理時(shí)通信雙方所遵循和協(xié)商好的規(guī)則稱為協(xié)議。與郵寄過程相比,數(shù)據(jù)包類似于物品,而封裝就如同填寫各種郵寄信息,協(xié)議就是如何填寫信息的規(guī)定。
從上面的分析可以看出,對數(shù)據(jù)包封裝實(shí)際上很復(fù)雜:要達(dá)到可靠、準(zhǔn)確及高效的目的,必須考慮很多影響因素,并有針對性地采取防范措施。
在實(shí)際應(yīng)用中,組網(wǎng)的數(shù)據(jù)封裝按功能分層進(jìn)行,目的就是為了能將復(fù)雜系統(tǒng)分解為很多模塊,各模塊獨(dú)立、互不影響。每個(gè)模塊(每層)之間用接口進(jìn)行連接和交互,并互相提供服務(wù)。這樣不僅更容易實(shí)現(xiàn)功能,而且使整個(gè)系統(tǒng)具有良好的兼容性和可擴(kuò)展性。
以常見的OSI模型為例,它共分為七層,從下到上依次為:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層,每層都對應(yīng)不同的功能。為了實(shí)現(xiàn)對應(yīng)功能,都會對數(shù)據(jù)按本層協(xié)議進(jìn)行協(xié)議頭和協(xié)議尾的數(shù)據(jù)封裝,然后將封裝好的數(shù)據(jù)傳送給下層,各層的數(shù)據(jù)封裝過程如下圖所示。
其中:
- 在傳輸層用TCP頭已標(biāo)示了與一個(gè)特定應(yīng)用的連接,并將數(shù)據(jù)封裝成了數(shù)據(jù)段。
- 到了網(wǎng)絡(luò)層則用IP頭標(biāo)示了已連接的設(shè)備網(wǎng)絡(luò)地址,并可基于此信息進(jìn)行網(wǎng)絡(luò)路徑選擇,此時(shí)將數(shù)據(jù)封裝為數(shù)據(jù)包。
- 到了數(shù)據(jù)鏈路層,數(shù)據(jù)已封裝成了數(shù)據(jù)幀,并用MAC頭給出了設(shè)備的物理地址,當(dāng)然還有數(shù)據(jù)校驗(yàn)等功能字段等。
- 到了物理層,則將數(shù)據(jù)幀轉(zhuǎn)換為比特流,在物理鏈路上進(jìn)行傳輸。
數(shù)據(jù)的接收端從物理層開始,進(jìn)行與發(fā)送端相反的操作,稱為“解封裝”,如下圖所示,最終使應(yīng)用層程序獲取數(shù)據(jù)信息,使得兩點(diǎn)之間的一次單向通信完成。
需要說明的是,目前應(yīng)用最為廣泛的TCP/IP協(xié)議可以看作是OSI協(xié)議層的簡化,它分為四層:網(wǎng)絡(luò)接入層、網(wǎng)際互聯(lián)層、傳輸層、應(yīng)用層,其各層對應(yīng)的數(shù)據(jù)封裝與OSI大同小異。