七層協(xié)議和四層協(xié)議概述

相信去過大廠面試的時(shí)候大都會(huì)問及七層協(xié)議缰冤、四層協(xié)議盛撑、瀏覽器瀏覽一個(gè)網(wǎng)頁是怎么實(shí)現(xiàn)的or發(fā)生了什么之類的話題,其實(shí)都是問OSI七層協(xié)議參考模型或者TCP/IP四層協(xié)議的相關(guān)知識(shí),本文只是對(duì)其協(xié)議概念進(jìn)行概述脐湾,讓大家有個(gè)基本的了解乳乌,希望大家通過本文能對(duì)網(wǎng)絡(luò)節(jié)點(diǎn)間什么怎么實(shí)現(xiàn)的有個(gè)基本的認(rèn)知捧韵。
下圖是OSI七層協(xié)議、TCP/IP五層協(xié)議汉操、TCP/IP四層協(xié)議圖:

image

OSI七層模型通過七個(gè)層次化的結(jié)構(gòu)模型使不同的系統(tǒng)不同的網(wǎng)絡(luò)之間實(shí)現(xiàn)可靠的通信再来,其主要作用是幫助不同類型的主機(jī)實(shí)現(xiàn)數(shù)據(jù)傳輸。
物理層
物理層是OSI參考模型的最底層磷瘤,它的作用是實(shí)現(xiàn)相鄰計(jì)算機(jī)節(jié)點(diǎn)之間比特流的透明傳送芒篷,屏蔽了具體傳輸介質(zhì)和物理設(shè)備的差異。透明傳送表示經(jīng)實(shí)際實(shí)際電路傳送后的比特流沒有發(fā)生變化采缚,對(duì)傳送的比特流來說针炉,這個(gè)電路好像看不見一樣。
我們都知道機(jī)器只能識(shí)別二進(jìn)制扳抽,即0和1篡帕,它使用高低電平表示殖侵,而物理層傳送的是比特流(即二進(jìn)制流,比特是是二進(jìn)制中的位)镰烧,所以能承載比特流的常見設(shè)備有:網(wǎng)卡拢军、網(wǎng)線、集線器拌滋、中繼器朴沿、調(diào)制調(diào)解器等。
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層是OSI參考模型的第二層败砂,它負(fù)責(zé)建立和管理節(jié)點(diǎn)的鏈路赌渣。該層的主要功能是:通過各種控制協(xié)議,將有差錯(cuò)的物理信道變?yōu)闊o差錯(cuò)的昌犹、能可靠傳輸數(shù)據(jù)幀的數(shù)據(jù)鏈路坚芜。在計(jì)算機(jī)網(wǎng)絡(luò)中由于各種干擾(如磁場、溫度等)的存在斜姥,物理鏈路是不可靠的鸿竖,因此這一層的主要功能是在物理層提供的比特流的基礎(chǔ)上,通過差錯(cuò)控制铸敏、流量控制缚忧,使有差錯(cuò)的物理線路變?yōu)闊o差錯(cuò)的數(shù)據(jù)鏈路(即提供可靠的物理介質(zhì)的數(shù)據(jù)的方法)。數(shù)據(jù)鏈路層的具體工作是接收來自物理層的位流形式的數(shù)據(jù)杈笔,并封裝層幀闪水,傳送到上一層;同樣蒙具,也將來自上一層的數(shù)據(jù)幀球榆,拆裝為位流形式的數(shù)據(jù)轉(zhuǎn)發(fā)到物理層;并且禁筏,還負(fù)責(zé)處理接收端發(fā)回的確認(rèn)幀的信息持钉,以便提供可靠的數(shù)據(jù)傳輸。
常見的網(wǎng)橋篱昔、交換機(jī)等屬于數(shù)據(jù)鏈路層每强。
網(wǎng)絡(luò)層
網(wǎng)絡(luò)層是OSI參考模型的第三層,也是最復(fù)雜的一層州刽。他在下兩層的基礎(chǔ)上向資源子網(wǎng)絡(luò)提供服務(wù)舀射。其主要任務(wù)是:通過路由選擇算法,為報(bào)文或分組通過通信子網(wǎng)選擇最佳路徑怀伦。具體的說脆烟,數(shù)據(jù)鏈路層的數(shù)據(jù)在這一層被轉(zhuǎn)換為數(shù)據(jù)包,然后通過路由選擇房待、分組組合邢羔、順序驼抹、進(jìn)/出路由等控制,將信息從一個(gè)網(wǎng)絡(luò)設(shè)備傳送到另一個(gè)網(wǎng)絡(luò)設(shè)備拜鹤。一般的框冀,數(shù)據(jù)鏈路層解決同一網(wǎng)絡(luò)節(jié)點(diǎn)之間的通信,而網(wǎng)絡(luò)層主要解決不同網(wǎng)絡(luò)間的通信敏簿。
常見的路由器屬于網(wǎng)絡(luò)層
傳輸層
傳輸層是OSI參考模型的第四層明也,該層是通信子網(wǎng)絡(luò)和資源子網(wǎng)的接口和橋梁,起到承上啟下的作用惯裕。該層的主要任務(wù)是:向用戶提供可靠的端到端的差錯(cuò)和流量控制温数,保證報(bào)文的正確傳輸。傳輸層的作用是向高層屏蔽下層數(shù)據(jù)通信細(xì)節(jié)蜻势,即向用戶透明地傳輸報(bào)文撑刺。該層常見的的協(xié)議有TCP和UDP協(xié)議。傳輸層提供會(huì)話層和網(wǎng)絡(luò)層之間的傳輸服務(wù)握玛,它從會(huì)話層獲取數(shù)據(jù)够傍,在必要時(shí)將數(shù)據(jù)進(jìn)行分割,然后傳輸層將數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)層挠铲,并確保數(shù)據(jù)能正確無誤的傳送到網(wǎng)絡(luò)層冕屯,因此傳輸層負(fù)責(zé)提供兩節(jié)點(diǎn)之間數(shù)據(jù)的可靠傳送。
會(huì)話層
會(huì)話層是OSI參考模型的第五層拂苹,它是用戶應(yīng)用程序和網(wǎng)絡(luò)之間的接口愕撰,主要任務(wù)是:向兩個(gè)實(shí)體的表示層提供建立和使用連接的方法。將不同實(shí)體之間的表示層的連接稱為會(huì)話醋寝。因此會(huì)話層的任務(wù)就是組織和協(xié)調(diào)兩個(gè)會(huì)話進(jìn)程之間的通信,并對(duì)數(shù)據(jù)交換進(jìn)行管理带迟。用戶可以按照半雙工音羞、單工、和全雙工的方式建立會(huì)話仓犬。當(dāng)建立會(huì)話時(shí)嗅绰,用戶必須提供他們想要連接的遠(yuǎn)程地址,而這些地址與MAC地址或網(wǎng)絡(luò)層的邏輯地址不通過搀继,它們是為用戶專門設(shè)計(jì)的窘面,更便于用戶記憶。會(huì)話層可以理解為定義如何開始叽躯、控制财边、結(jié)束一個(gè)會(huì)話。
表示層
表示層是OSI參考模型的第六層点骑,它對(duì)來自應(yīng)用層的命令和數(shù)據(jù)進(jìn)行解釋酣难,對(duì)各種語法賦予相應(yīng)的含義谍夭,并按照一定的格式傳送給會(huì)話層。其主要功能是處理用戶信息的表示問題(如編碼憨募、數(shù)據(jù)格式轉(zhuǎn)換紧索、加密解密等)。表示層可以理解為定義數(shù)據(jù)的格式和加密方式菜谣。
應(yīng)用層
應(yīng)用層是OSI參考模型的第七層珠漂,它是計(jì)算機(jī)用戶以及各種應(yīng)用程序和網(wǎng)絡(luò)之間的接口,其功能是直接向用戶提供服務(wù)尾膊,完成用戶希望在網(wǎng)絡(luò)上完成的各種工作媳危。它在其他六層工作的基礎(chǔ)上,負(fù)責(zé)完成網(wǎng)絡(luò)中應(yīng)用程序與網(wǎng)絡(luò)操作系統(tǒng)之間的聯(lián)系眯停,建立與結(jié)束使用者之間的聯(lián)系济舆,并完成網(wǎng)絡(luò)用戶提出的各種網(wǎng)絡(luò)服務(wù)及應(yīng)用所需的監(jiān)督、管理和服務(wù)等各種協(xié)議莺债,此外該層還負(fù)責(zé)協(xié)調(diào)各個(gè)應(yīng)用程序之間的工作滋觉。應(yīng)用層可以理解為需要進(jìn)行網(wǎng)絡(luò)通信的應(yīng)用程序。

TCP/IP 五層協(xié)議將OSI參考模型中的應(yīng)用層齐邦、表示層椎侠、會(huì)話層歸為應(yīng)用層;TCP/IP 四層協(xié)議將OSI參考模型中的應(yīng)用層措拇、表示層我纪、會(huì)話層歸為應(yīng)用層,將物理層和數(shù)據(jù)鏈路層歸為網(wǎng)絡(luò)接口層

從TCP/IP四層協(xié)議來分析下瀏覽器瀏覽一個(gè)網(wǎng)頁時(shí)發(fā)生了什么:


image

上圖展示了基于TCP/IP四層協(xié)議的數(shù)據(jù)傳輸?shù)牧鞒蹋?br> 請求流程:應(yīng)用層(即瀏覽器將請求封裝為HTTP網(wǎng)絡(luò)請求數(shù)據(jù))——》傳送到傳輸層(按TCP協(xié)議加上TCP頭部并封裝為TCP數(shù)據(jù)報(bào)文)——》傳送到網(wǎng)絡(luò)層(按IP協(xié)議添加IP頭部并封裝為IP數(shù)據(jù)報(bào)文)——》傳送到鏈路層(將數(shù)據(jù)轉(zhuǎn)為鏈路層的數(shù)據(jù)幀丐吓,再轉(zhuǎn)為比特流浅悉,通過物理介質(zhì)進(jìn)行傳輸)——》經(jīng)過N層次的路由轉(zhuǎn)發(fā)——》傳輸?shù)竭_(dá)服務(wù)端(即接收到)的鏈路層(將比特流轉(zhuǎn)為鏈路層的數(shù)據(jù)幀)——》傳輸?shù)椒?wù)器的網(wǎng)絡(luò)層(將鏈路層的數(shù)據(jù)解析為IP層數(shù)據(jù)報(bào)文)——》傳輸?shù)椒?wù)器的傳輸層(將網(wǎng)絡(luò)層的數(shù)據(jù)解析為TCP數(shù)據(jù)報(bào)文)——》傳輸?shù)椒?wù)器的應(yīng)用層(處理HTTP數(shù)據(jù))
響應(yīng)流程與請求流程相似,只是服務(wù)器變成了發(fā)送端券犁,而瀏覽器變成接收端而已术健。
這是基于模型的數(shù)據(jù)層傳輸流程,其實(shí)現(xiàn)需要以下6大步驟:
1粘衬、域名解析
瀏覽器請求一個(gè)網(wǎng)頁是荞估,會(huì)發(fā)起HTTP請求,首先需要知道像哪天服務(wù)器發(fā)起請求稚新,我們知道HTTP協(xié)議中有域名的信息勘伺,而網(wǎng)絡(luò)通信并不能通過域名直接建立連接,所以首先進(jìn)行域名解析(DNS:提供域名和IP地址的解析服務(wù))將域名解析成IP地址褂删,以便實(shí)現(xiàn)下一步的建立TCP連接
2飞醉、建立TCP連接
使用1中解析出的IP地址,建立TCP連接屯阀,建立TCP連接時(shí)冒掌,首先需要進(jìn)行3次握手確保傳輸?shù)目煽啃栽朐#聢D是TCP3次握手的流程圖:


image

第一次握手:客戶端向服務(wù)端發(fā)送含有SYN標(biāo)識(shí)的數(shù)據(jù)包,表示含SYN數(shù)據(jù)包發(fā)給服務(wù)端了
第二次握手:服務(wù)端收到客戶端發(fā)來的SYN之后股毫,向客戶端發(fā)送含SYN和ACK標(biāo)識(shí)的數(shù)據(jù)包膳音,表示服務(wù)端確認(rèn)收到了客戶端的數(shù)據(jù)

第三次握手:客戶端收到服務(wù)端發(fā)過來的ACK確認(rèn)數(shù)據(jù)包之后,向服務(wù)端發(fā)送含ACK的數(shù)據(jù)包铃诬,表示知道服務(wù)端收到數(shù)據(jù)包了祭陷,當(dāng)前的連接是可靠的,可以開始傳輸數(shù)據(jù)了
3趣席、發(fā)送HTTP請求
步驟2建立TCP連接之后兵志,就可以開始將用戶請求的HTTP數(shù)據(jù)包按傳輸層-》網(wǎng)絡(luò)層-》鏈路層的數(shù)據(jù)包裝將數(shù)據(jù)傳輸給服務(wù)端了
HTTP請求報(bào)文格式大概如下:
GET PATH HTTP/1.1\r\n -》請求方法 路徑 HTTP版本
USER-AGENT: xxx\r\n -》HTTP請求頭
CONTENT-LENGTH: xxx\r\n -》HTTP請求頭
....\r\n-》HTTP請求頭
\r\n
\r\n
....\r\n-》HTTP請求內(nèi)容
4、服務(wù)器響應(yīng)HTTP請求
服務(wù)器的Nginx/Apache等服務(wù)器軟件接收客戶端發(fā)來HTTP請求宣肚,經(jīng)過解析之后進(jìn)入響應(yīng)站點(diǎn)入口想罕,解析到相應(yīng)的處理器進(jìn)行請求處理,再將響應(yīng)內(nèi)容以HTTP發(fā)送給客戶端霉涨。
HTTP響應(yīng)報(bào)文格式大概如下:
HTTP/1.1 200 ok -》HTTP版本 狀態(tài)碼 狀態(tài)描述信息
CONTENT-LENGTH: xxx\r\n -》HTTP請求頭
....\r\n-》HTTP請求頭
\r\n
\r\n
....\r\n-》HTTP請求內(nèi)容

下列是狀態(tài)的大概描述信息:
100-199: 信息性狀態(tài)碼按价;接收的請求正在處理
200-299:成功狀態(tài)碼;請求正常處理完畢
300-399:重定向狀態(tài)碼笙瑟;需要進(jìn)行附加操作以完成請求
400-499:客戶端錯(cuò)誤狀態(tài)碼楼镐;服務(wù)端無法處理的請求
500-599:服務(wù)端錯(cuò)誤狀態(tài)碼;服務(wù)端處理請求出錯(cuò)
5往枷、瀏覽器渲染
接收到服務(wù)端返回的響應(yīng)內(nèi)容框产,解析HTTP內(nèi)容,按DOM進(jìn)行渲染:構(gòu)建DOM樹-》構(gòu)建Render(渲染)樹-》布局Render(渲染)樹-》繪制Render(渲染)樹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末错洁,一起剝皮案震驚了整個(gè)濱河市秉宿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屯碴,老刑警劉巖描睦,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窿锉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)膝舅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門嗡载,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仍稀,你說我怎么就攤上這事洼滚。” “怎么了技潘?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵遥巴,是天一觀的道長千康。 經(jīng)常有香客問我,道長铲掐,這世上最難降的妖魔是什么拾弃? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮摆霉,結(jié)果婚禮上豪椿,老公的妹妹穿的比我還像新娘。我一直安慰自己携栋,他們只是感情好搭盾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著婉支,像睡著了一般鸯隅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上向挖,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天蝌以,我揣著相機(jī)與錄音,去河邊找鬼户誓。 笑死饼灿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帝美。 我是一名探鬼主播碍彭,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悼潭!你這毒婦竟也來了庇忌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舰褪,失蹤者是張志新(化名)和其女友劉穎皆疹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體占拍,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡略就,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晃酒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片表牢。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贝次,靈堂內(nèi)的尸體忽然破棺而出崔兴,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布敲茄,位于F島的核電站位谋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏堰燎。R本人自食惡果不足惜掏父,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爽待。 院中可真熱鬧损同,春花似錦、人聲如沸鸟款。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽何什。三九已至组哩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間处渣,已是汗流浹背伶贰。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罐栈,地道東北人黍衙。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像荠诬,于是被迫代替她去往敵國和親琅翻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容