1. 網(wǎng)絡(luò)模型概覽
OSI(Open System Interconnection)先有模型,后有協(xié)議,先有標(biāo)準(zhǔn),后進(jìn)行實(shí)踐;而TCP/IP則相反,先有協(xié)議和應(yīng)用再提出了模型,且是參照的 OSI 模型。
OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網(wǎng)絡(luò)互聯(lián)事實(shí)上的標(biāo)準(zhǔn)。
2. HTTP 網(wǎng)絡(luò)通訊過程
示例:簡單的網(wǎng)絡(luò)拓?fù)淠P?/p>
詳解:當(dāng)鍵入網(wǎng)址到網(wǎng)頁顯示的通訊過程
客戶端(發(fā)送方組包)
1)HTTP
瀏覽器解析 URL(協(xié)議、域名、資源路徑)
生成HTTP 請求報(bào)文
2)DNS(真實(shí)地址查詢)
向 DNS 服務(wù)器查詢服務(wù)器域名對應(yīng)的IP 地址
域名中越靠右的位置表示其層級越高
3)協(xié)議棧(指南幫手)
獲取 IP 后,將之后的 HTTP 傳輸工作交給操作系統(tǒng)內(nèi)核中的協(xié)議棧處理
TCP/UDP:負(fù)責(zé)收發(fā)數(shù)據(jù)
IP:負(fù)責(zé)將網(wǎng)絡(luò)包送達(dá)給對方
4)TCP(可靠傳輸)
報(bào)文頭部包含源端口號、目標(biāo)端口號、序號、確認(rèn)號等
TCP傳輸數(shù)據(jù)之前,要先三次握手建立連接(三次握手的目的是保證雙方都有發(fā)送和接收的能力)
TCP 報(bào)文生成:TCP 頭部 + HTTP 報(bào)文
5)IP(遠(yuǎn)程定位)
將數(shù)據(jù)封裝稱網(wǎng)絡(luò)包發(fā)送給通信對象
IP 報(bào)文生成:IP 頭部 + TCP 頭部 + HTTP 報(bào)文
6)MAC(兩點(diǎn)傳輸)
還需要加上 MAC 頭部(發(fā)送方和接收方的 MAC 地址等信息),MAC 頭部是以太網(wǎng)的頭部
MAC 作用:MAC 地址用來唯一標(biāo)識(shí)設(shè)備,再通過 ARP 協(xié)議找到下一站路由器的 MAC 地址,實(shí)現(xiàn)兩點(diǎn)之間的傳輸
至此,網(wǎng)絡(luò)包報(bào)文(MAC 頭部 + IP 頭部 + TCP 頭部 + HTTP 報(bào)文)如下圖所示:
7)網(wǎng)卡(出口)
真正的數(shù)據(jù)發(fā)送過程:將數(shù)字信息(IP 網(wǎng)絡(luò)包)轉(zhuǎn)換為電信號,才能在網(wǎng)線上傳輸
控制網(wǎng)卡需要靠網(wǎng)卡驅(qū)動(dòng)程序
網(wǎng)卡本身具有 MAC 地址,且會(huì)核對數(shù)據(jù)包的接收方 MAC 地址與自身 MAC 地址是否相同,不是則丟棄
8)交換機(jī)(送別)
交換機(jī)的設(shè)計(jì):將網(wǎng)絡(luò)包原樣轉(zhuǎn)發(fā)到目的地
交換機(jī)工作在 MAC 層,也稱為二層(數(shù)據(jù)鏈路層)網(wǎng)絡(luò)設(shè)備
交換機(jī)接收到達(dá)網(wǎng)線接口的電信號,并轉(zhuǎn)換為數(shù)字信息
二層交換機(jī)本身具有一個(gè) MAC 地址(標(biāo)識(shí)自身硬件設(shè)備),但其各端口不具有 MAC 地址(三層交換機(jī)則每個(gè)端口都有 MAC 地址)
交換機(jī)根據(jù)交換機(jī)根據(jù)MAC 地址表查找 MAC 地址,然后將信號發(fā)送到相應(yīng)的網(wǎng)線端口。交換機(jī)的 MAC 地址表包含兩個(gè)信息:
設(shè)備的 MAC 地址
該設(shè)備連接在交換機(jī)的哪個(gè)端口上
9)路由器(出境)
路由器基本原理:
與交換機(jī)類似,通過查表判斷包的(下一個(gè)路由器或目標(biāo)設(shè)備)轉(zhuǎn)發(fā)目標(biāo)
路由器基于 IP 設(shè)計(jì),俗稱三層(網(wǎng)絡(luò)層)網(wǎng)絡(luò)設(shè)備,其各端口具有 MAC 地址和 IP 地址(和計(jì)算機(jī)網(wǎng)卡一樣);而交換機(jī)基于以太網(wǎng)設(shè)計(jì),俗稱二層(數(shù)據(jù)鏈路層)網(wǎng)絡(luò)設(shè)備,其端口不具有 MAC 地址(也有三層交換機(jī),具有部分的路由器功能)
MAC 頭部的作用就是將包送達(dá)路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址
包接收操作:將網(wǎng)線接口的電信號轉(zhuǎn)成數(shù)字信號,并核對 MAC 地址
完成包接收操作之后,路由器就會(huì)去掉包開頭的 MAC 頭部
接下來會(huì)根據(jù) MAC 頭部后方的 IP 頭部中的內(nèi)容進(jìn)行包的轉(zhuǎn)發(fā)操作
包發(fā)送操作:將網(wǎng)絡(luò)包的數(shù)字信號轉(zhuǎn)成電信號并通過端口發(fā)送出去,經(jīng)過層層轉(zhuǎn)發(fā)之后,到達(dá)最終目標(biāo)設(shè)備
首先是查詢路由表判斷轉(zhuǎn)發(fā)目標(biāo)
通過 ARP 協(xié)議根據(jù)對方的 IP 地址查詢 MAC 地址,并將查詢結(jié)果作為接收方 MAC 地址
以太網(wǎng)(傳輸)
在網(wǎng)絡(luò)包(跨網(wǎng)段)傳輸過程中,源 IP 和目標(biāo) IP 始終是不會(huì)變的,一直變化的是 MAC 地址,因?yàn)樾枰?MAC 地址在以太網(wǎng)內(nèi)進(jìn)行兩個(gè)設(shè)備之間的包傳輸。
(對于同網(wǎng)段的二層轉(zhuǎn)發(fā),MAC 地址則不變。)
服務(wù)器端(接收方解包)
1)路由器(入境)
2)交換機(jī)(境內(nèi))
3)服務(wù)器(終點(diǎn))
服務(wù)器層層扒開數(shù)據(jù)包頭部,最后通過 TCP 頭部的端口號確認(rèn)是 HTTP 進(jìn)程想要的這個(gè)包
HTTP 進(jìn)程將資源封裝在HTTP 響應(yīng)報(bào)文中,也依次穿上 TCP、IP、MAC 頭部,從網(wǎng)卡出去,交由交換機(jī)轉(zhuǎn)發(fā)到路由器,經(jīng)過層層轉(zhuǎn)發(fā),最后到達(dá)客戶端
客戶端扒剩 HTTP 響應(yīng)報(bào)文后,交給瀏覽器去渲染頁面并顯示資源
最后客戶端要離開時(shí),向服務(wù)器發(fā)起TCP 四次揮手,至此雙方連接斷開
示例:服務(wù)器和客戶端相互扒皮
鏈接:https://www.cnblogs.com/juno3550/p/14385367.html
-
HTTP
+關(guān)注
關(guān)注
0文章
511瀏覽量
31385 -
OSI
+關(guān)注
關(guān)注
0文章
83瀏覽量
15442 -
網(wǎng)絡(luò)通訊
+關(guān)注
關(guān)注
0文章
75瀏覽量
11283
原文標(biāo)題:2. HTTP 網(wǎng)絡(luò)通訊過程
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論