分層概念
網(wǎng)絡協(xié)議是分層的,分層的概念類似于函數(shù)封裝照藻,不斷提供更高級更抽象的接口,最后提供給客戶使用汗侵。對于分層協(xié)議而言幸缕,整個協(xié)議共同完成一件事情,每個層次基于本層或低層接口完成本層次的功能并對更高級的層次提供接口晰韵,即對于每個層次而言发乔,有以下兩個主要功能:
- 對高級提供接口:將本層次的功能封裝,供高層調用
- 實現(xiàn)本層功能:在本層中實現(xiàn)功能雪猪,一般通過調用低層提供的接口實現(xiàn)(最底層除外)
舉一個例子栏尚,若要實現(xiàn)計算器計算的功能,我們實現(xiàn)一個計算器協(xié)議只恨,其分為以下幾個層次:
- 用戶輸入層:最高層译仗,為用于提供數(shù)據(jù)輸入方式和結果輸出方式抬虽,實現(xiàn)用戶輸入與邏輯語言的相互轉換
- 邏輯編譯層:中間層,將邏輯語言轉換為硬件可以實現(xiàn)的代碼纵菌,實現(xiàn)計算斥赋,將結果轉為邏輯語言
- 硬件層:最底層,實現(xiàn)代碼的計算和結果的輸出
假設廠商基于計算器協(xié)議構建了一個手寫計算器产艾,當用戶需要進行1+1
的運算時疤剑,以手寫的方式輸入計算需求,即一張手寫圖片闷堡,隨后用戶輸入層將這個手寫圖片轉換為邏輯語言R=1+1
隘膘,調用邏輯編譯層進行實現(xiàn);邏輯編譯層將其轉換為匯編代碼ADD R 1 1
杠览,調用硬件層進行實現(xiàn)弯菊;硬件層運行匯編代碼得出結果R為2,并將結果反饋給邏輯編譯層踱阿;邏輯編譯層接收硬件層的結果并將其返回給用戶輸入層管钳;用戶輸入層將結果轉為手寫數(shù)字2反饋給用戶。
這種分層協(xié)議的好處在于分層之間相互獨立软舌,僅有接口上的聯(lián)系才漆,可以進行方便的替換。以上述計算器協(xié)議為例佛点,用戶輸入層可以使用觸屏醇滥,也可以使用鍵盤,只需要將輸入(觸屏輸入或鍵盤輸入)轉為統(tǒng)一格式的邏輯語言即可超营;在邏輯編譯層也可以使用不同的編譯軟件鸳玩,只需要輸入和輸出格式接口相同即可;硬件層亦然演闭,可以使用AMD的cpu也可以使用Intel的cpu不跟,只需要提供給邏輯編譯層相同的接口即可。層與層之間相互獨立米碰,層層抽象窝革。
TCP/IP分層
TCP/IP分層脫胎于OSI分層,以上兩個分層如下圖所示:
OSI分層共分為7層见间,TCP/IP模型共分為5層聊闯,首先考慮OSI分層工猜,并以聯(lián)機對戰(zhàn)中的一個操作為例米诉,即控制某個人物向指定的方向釋放出一個指定的技能(實際游戲會不同):
- 應用層:為應用程序提供服務并規(guī)定應用程序中通信相關的細節(jié)。在例子中篷帅,用戶A按下技能快捷鍵史侣,并點擊鼠標拴泌,向某個方向釋放出一個技能,在應用層惊橱,這一操作被打包為一個json數(shù)據(jù)包蚪腐,組成為技能編號和釋放方位。
- 表示層:主要負責數(shù)據(jù)格式的轉換税朴。將應用處理的信息轉換為適合網(wǎng)絡傳輸?shù)母袷交丶荆驅碜韵乱粚拥臄?shù)據(jù)轉換為上層能夠處理的格式。例子中正林,將應用層產(chǎn)生的json包編碼為一個byte流泡一。
- 會話層:負責確定何事建立和斷開通信連接(數(shù)據(jù)流動的邏輯通路),以及數(shù)據(jù)的分割等數(shù)據(jù)傳輸相關的管理觅廓。例子中鼻忠,會話層接收到表示層產(chǎn)生的byte流,調用低層的接口建立與用戶B會話層的通信連接杈绸,將byte流傳遞給用戶B帖蔓,但是若用戶A的技能處于無法釋放的狀態(tài),則會話層負責等待到技能可以釋放時瞳脓,再建立連接發(fā)送數(shù)據(jù)塑娇。
- 傳輸層:實際進行建立的層次,同時起著可靠傳輸?shù)淖饔媒俨唷.敃拰記Q定建立連接時钝吮,傳輸層負責建立連接的具體事務,其建立連接并確保有效傳輸板辽。例子中奇瘦,若網(wǎng)絡傳輸過程中byte流發(fā)生數(shù)據(jù)缺失,用戶B的傳輸層會通知用戶A的傳輸層再發(fā)送一次數(shù)據(jù)劲弦。
- 網(wǎng)絡層:將數(shù)據(jù)傳輸?shù)侥繕说刂范辍@又校磳yte流從用戶A的主機發(fā)送到用戶B的主機邑跪。
- 數(shù)據(jù)鏈路層:負責物理層面上互連的次坡、節(jié)點之間的通信傳輸。例子中画畅,即將負責將數(shù)據(jù)從一個節(jié)點發(fā)送到另一個節(jié)點砸琅。
- 物理層:負責0、1比特流(0轴踱、1序列)與電壓的高低症脂、光的閃滅之間的互換。例子中,若兩個節(jié)點之間使用光纖通信诱篷,則負責光電信號的轉換壶唤。
對于TCP/IP的分層,將OSI中的應用層棕所、表示層和會話層統(tǒng)一為應用層闸盔,因此5層分組和對應的協(xié)議舉例有:
- 應用層:HTTPS、HTTP琳省、FTP迎吵、SSH等
- 傳輸層:TCP、UDP等
- 網(wǎng)絡層:IPv4针贬、IPv6等
- 數(shù)據(jù)鏈路層和物理層:以太網(wǎng)钓觉、IEEE 802.11等
對于數(shù)據(jù)鏈路層和物理層,其功能為將數(shù)據(jù)從一個節(jié)點發(fā)送到一個相鄰的節(jié)點坚踩;對于網(wǎng)絡層荡灾,其功能為將數(shù)據(jù)從一個主機發(fā)送到另一個主機(可能跨越很多個節(jié)點,不關心是否出錯)瞬铸;對于傳輸層批幌,要保證數(shù)據(jù)無錯誤的從一個主機發(fā)送到另一個主機,傳輸層協(xié)議一次傳輸可能調用網(wǎng)絡層傳輸多次嗓节;應用層位用戶最終接觸到的協(xié)議荧缘,實現(xiàn)具體功能,例如HTTPS實現(xiàn)網(wǎng)頁訪問拦宣,F(xiàn)TP實現(xiàn)數(shù)據(jù)傳輸截粗,如下圖所示: