計(jì)算機(jī)網(wǎng)絡(luò) 模型 復(fù)習(xí)

計(jì)算機(jī)網(wǎng)絡(luò)

最近在整websocket健權(quán)和代理的過程中復(fù)習(xí)了一把計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)的知識(shí),理了一遍各個(gè)協(xié)議的層級(jí)關(guān)系

網(wǎng)絡(luò)協(xié)議模型

網(wǎng)絡(luò)協(xié)議模型通常是指OSI體系結(jié)構(gòu)的七層協(xié)議模型,這是一個(gè)標(biāo)準(zhǔn),可以理解為這是一個(gè)抽象基類
而實(shí)際應(yīng)用中主流的TCP/IP四層模型則是OSI標(biāo)準(zhǔn)的一個(gè)實(shí)現(xiàn),他是OSI七層協(xié)議的子類
而五層協(xié)議也是一個(gè)標(biāo)準(zhǔn),但他是非官方的,是業(yè)界根據(jù)TCP/IP四層模型對(duì)OSI七層模型提出的一個(gè)改進(jìn)方案

網(wǎng)絡(luò)協(xié)議模型.png

OSI七層協(xié)議模型

OSI,Open System Interconnect,開放式系統(tǒng)互聯(lián)
這個(gè)標(biāo)準(zhǔn)的各個(gè)層次的劃分遵循幾個(gè)原則:

  • 同一層中的各網(wǎng)絡(luò)節(jié)點(diǎn)都有相同的層次結(jié)構(gòu),具有同樣的功能
  • 同一節(jié)點(diǎn)內(nèi)相鄰層次之間通過接口進(jìn)行通信
  • 每一層使用下層提供的服務(wù),并且向上層提供服務(wù)
  • 不同節(jié)點(diǎn)的同層按照協(xié)議實(shí)現(xiàn)對(duì)等層之間的通信
網(wǎng)絡(luò)協(xié)議關(guān)系圖.gif
應(yīng)用層

最上層協(xié)議,終端應(yīng)用所在的層次,這里的數(shù)據(jù)是真實(shí)原始數(shù)據(jù),比如對(duì)于瀏覽器來(lái)說就是html格式的文檔

表示層

對(duì)數(shù)據(jù)格式進(jìn)行序列化和反序列化,也就是轉(zhuǎn)碼、加密

會(huì)話層

控制會(huì)話的開始和結(jié)束,將多個(gè)數(shù)據(jù)包進(jìn)行整合,保證表示層看到的數(shù)據(jù)是連續(xù)、完整的
在會(huì)話層及以上的高層次中,數(shù)據(jù)傳送的單位不再另外命名,而是統(tǒng)稱為報(bào)文

傳輸層

這一層保證網(wǎng)絡(luò)傳輸過程中數(shù)據(jù)的準(zhǔn)確性、完整性、高效性,保證收到的數(shù)據(jù)包是順序的、是否進(jìn)行差錯(cuò)校驗(yàn),對(duì)同一主機(jī)上不同應(yīng)用的數(shù)據(jù)流的輸入進(jìn)行復(fù)用等。比如常用的TCP、UDP都在這一層
這一層的數(shù)據(jù)單元也是數(shù)據(jù)包(packets),但根據(jù)協(xié)議的不同,TCP的數(shù)據(jù)包稱為段 (segments),而UDP的數(shù)據(jù)報(bào)稱為數(shù)據(jù)報(bào)(datagrams)

網(wǎng)絡(luò)層

這層對(duì)網(wǎng)絡(luò)拓補(bǔ)中端到端的傳輸進(jìn)行定義,為每個(gè)節(jié)點(diǎn)進(jìn)行標(biāo)識(shí),保證數(shù)據(jù)包的路由準(zhǔn)確。IP、IPv6等網(wǎng)絡(luò)地址協(xié)議就在這一層
這一層的數(shù)據(jù)單位是數(shù)據(jù)包(packet)

數(shù)據(jù)鏈路層

定義了數(shù)據(jù)在單個(gè)鏈路上如何進(jìn)行傳輸,比如從網(wǎng)卡到路由器數(shù)據(jù)幀應(yīng)該如何傳輸。ARP、RARP等地址解析協(xié)議就在這一層
這一層的數(shù)據(jù)單位是幀(frame)

物理層

實(shí)際的物理傳輸,比如Rj45,802.3等
這一層的數(shù)據(jù)單位是比特(bit)

TCP/IP四層協(xié)議模型

在實(shí)際應(yīng)用中TCP/IP對(duì)OSI完整且嚴(yán)謹(jǐn)?shù)哪P瓦M(jìn)行了集成和簡(jiǎn)化

TCP模型對(duì)比圖.png

將OSI的應(yīng)用層、表示層、會(huì)話層集成成一層
傳輸層定義了TCP、UDP兩種協(xié)議
網(wǎng)絡(luò)層使用IP、IPv6協(xié)議標(biāo)識(shí)網(wǎng)絡(luò)中各個(gè)結(jié)點(diǎn)

我們?cè)谶M(jìn)行socket編程的時(shí)候?qū)嶋H上就是使用TCP/IP協(xié)議,并在其應(yīng)用層上進(jìn)行開發(fā)
傳輸層TCP協(xié)議送過來(lái)的數(shù)據(jù)是一段一段的順序的數(shù)據(jù)包,我們不斷從socket中read直到遇到eof,這個(gè)過程就是OSI中會(huì)話層的工作,保證數(shù)據(jù)報(bào)是完整的
數(shù)據(jù)傳輸過程中為了保證安全可能會(huì)進(jìn)行加密,也有可能傳輸?shù)氖嵌M(jìn)制文件(圖片,壓縮包等),所以我們得到的數(shù)據(jù)可能是無(wú)意義不可讀的串,需要對(duì)這些數(shù)據(jù)進(jìn)行decode或者使用特定的程序打開,decode就是OSI中表示層的工作,而使用特定程序展示數(shù)據(jù)就是應(yīng)用層的工作

數(shù)據(jù)傳輸過程

對(duì)于協(xié)議中的每一層來(lái)說,上層丟下來(lái)的東西就是他們要處理的data,處理這些數(shù)據(jù)的過程就是按照標(biāo)準(zhǔn)對(duì)這些數(shù)據(jù)進(jìn)行拆分(控制每個(gè)包、幀的大?。┎舷鄳?yīng)的頭,然后丟給下一層(使用下層提供的服務(wù)),而接受端則需要將收到的幀、包還原,并丟給上層處理,還原出真實(shí)原始的data

TCP數(shù)據(jù)傳輸過程.jpg
socket

關(guān)于socket,我們可以理解為他是操作系統(tǒng)中應(yīng)用層和下層協(xié)議之間溝通的一個(gè)緩沖,因?yàn)椴僮飨到y(tǒng)無(wú)法直接為每個(gè)底層網(wǎng)絡(luò)暴露用戶進(jìn)程端口,這也十分危險(xiǎn),所以加一個(gè)中間層來(lái)提供多對(duì)多的通信(軟件設(shè)計(jì)的基本思路就是所有問題都可以通過加中間件解決XD)
所以socket可以理解為就是TCP/IP協(xié)議模型中應(yīng)用層的一個(gè)接口,對(duì)其進(jìn)行讀寫操作就是應(yīng)用層上的發(fā)送和獲取數(shù)據(jù)

socket.jpg

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容