協(xié)議
什么是協(xié)議?我覺得要理解什么是協(xié)議,首先要知道他是屬于計(jì)算機(jī)中的術(shù)語。另一方面,也要清楚認(rèn)識到,計(jì)算機(jī)是“傻瓜式”的,他不會做什么多余的工作的,它會按照我們給他的命令執(zhí)行工作。對于要實(shí)現(xiàn)在兩臺計(jì)算機(jī)之間實(shí)現(xiàn)數(shù)據(jù)傳輸,我們要給計(jì)算機(jī)設(shè)置好命令,比如,如何建立連接,怎么樣進(jìn)行傳輸,怎樣結(jié)束連接等等。因此,協(xié)議就可以理解為我們給計(jì)算機(jī)設(shè)置的一系列規(guī)則。
TCP/IP協(xié)議族
定義
根據(jù)《圖解HTTP》中的理解,TCP/IP協(xié)議族是指與網(wǎng)絡(luò)通信有關(guān)的所有協(xié)議的集合。
特點(diǎn)
TCP/IP協(xié)議族最大的特點(diǎn)是實(shí)現(xiàn)結(jié)構(gòu)上的分層
為什么要進(jìn)行分層?
假設(shè)我們在整個(gè)數(shù)據(jù)傳輸?shù)倪^程中只使用一個(gè)協(xié)議,那么如果此時(shí)我想對數(shù)據(jù)傳輸?shù)哪骋粋€(gè)過程進(jìn)行優(yōu)化時(shí),比如我想要在數(shù)據(jù)傳輸?shù)倪^程中進(jìn)行數(shù)據(jù)的加密,這時(shí)候使用一個(gè)協(xié)議統(tǒng)籌的話,可能要替換整個(gè)協(xié)議。相反,采用分層結(jié)構(gòu)之后,對于不同的層使用不同的協(xié)議,這樣的話,如果進(jìn)行某一層的優(yōu)化不會影響其他層,且各層分工明確又相互協(xié)作,提交了效率。
層次結(jié)構(gòu):4層
- 應(yīng)用層:向應(yīng)用程序提供系統(tǒng)服務(wù)。主要協(xié)議有:HTTP,F(xiàn)TP,DNS
- 傳輸層:提供處于網(wǎng)絡(luò)連接之中的兩臺計(jì)算機(jī)之間的數(shù)據(jù)傳輸,主要協(xié)議有TCP,UDP
- 網(wǎng)絡(luò)層:處理網(wǎng)絡(luò)中的流動(dòng)的數(shù)據(jù)包。該層規(guī)定了數(shù)據(jù)包通過怎樣的路徑到達(dá)對方計(jì)算機(jī)。如果兩臺計(jì)算機(jī)之間的數(shù)據(jù)傳輸需要通過路由器等中轉(zhuǎn)站時(shí),該層的作用是從多條路線中選擇一條合適的路線。
- 數(shù)據(jù)鏈路層:處理網(wǎng)絡(luò)連接中的硬件部分。主要是通過MAC地址進(jìn)行兩臺主機(jī)之間的數(shù)據(jù)幀的傳輸。
具體傳輸流程
發(fā)送端:
- 在傳輸層構(gòu)造HTTP請求,并將請求報(bào)文發(fā)送給傳輸層
- 在傳輸層,為了傳輸效率考慮,TCP協(xié)議將請求報(bào)文分割成以數(shù)據(jù)報(bào)為單位的數(shù)據(jù)包,并給每個(gè)數(shù)據(jù)包依次加上序號及端口號
- 在網(wǎng)絡(luò)層,IP協(xié)議通過IP尋址和路由選擇傳送至數(shù)據(jù)鏈路層
- 在數(shù)據(jù)鏈路層,通過ARP協(xié)議獲得在網(wǎng)絡(luò)層獲取到的接下來要傳輸?shù)哪繕?biāo)主機(jī)或路由器的MAC地址,通過MAC地址實(shí)現(xiàn)數(shù)據(jù)幀的傳輸。
接收端:
- 數(shù)據(jù)鏈路層
- 網(wǎng)絡(luò)層
- 傳輸層
-
應(yīng)用層
image.png
要注意的是,在發(fā)送的時(shí)候,每經(jīng)過一層就會在請求頭部加上該層專有的首部信息,同樣,接收端在接收時(shí)每經(jīng)過一層就刪除所屬該層的首部信息。
DNS協(xié)議
DNS,全名叫“域名解析系統(tǒng)”,提供IP地址和域名之間的雙向解析服務(wù)。
DNS的解析過程
域名的層級結(jié)構(gòu)如下:
主機(jī)名. 次級域名. 頂級域名. 根域名
以查詢zh.wikipedia.org為例:
- 客戶端首先會將查詢報(bào)文發(fā)送至本地DNS服務(wù)器,DNS服務(wù)器會首先檢查自身緩存,如果存在記錄則直接返回結(jié)果。
- 如果緩存過期或者緩存不存在:
- DNS服務(wù)器會發(fā)送查詢報(bào)文到根域名服務(wù)器,獲取其對應(yīng)的頂級域名.org對應(yīng)的根域名服務(wù)器地址。
- DNS服務(wù)器發(fā)送查詢報(bào)文到頂級域名.org的權(quán)威域名服務(wù)器,獲取其對應(yīng)的次級域名.wikipedia.org的權(quán)威域名服務(wù)器的地址
- DNS服務(wù)器發(fā)送查詢報(bào)文到次級域名wikipedia.org的權(quán)威域名服務(wù)器,獲得主機(jī)zh的A記錄(主機(jī)記錄,用于將主機(jī)名映射為相應(yīng)的IP地址),存入自身緩存并返回給客戶端。
查詢的類型
- 遞歸查詢:主要是客戶端的查詢方式。 客戶端發(fā)送查詢報(bào)文到本地DNS服務(wù)器 ——> 獲得最終結(jié)果
- 迭代查詢:一般是DNS服務(wù)器之間的查詢方式。主要是本地DNS服務(wù)器查詢主機(jī)IP地址的過程。
IP協(xié)議
要注意,IP協(xié)議和IP地址的區(qū)別。IP協(xié)議是指一種協(xié)議,是規(guī)則。IP地址是節(jié)點(diǎn)被分配到的地址。
功能
- IP尋址:對網(wǎng)絡(luò)層而言,通過IP地址進(jìn)行相互之間的通信。
- 路由選擇
- 對于處于同一局域網(wǎng)的計(jì)算機(jī)之間的通信,通過數(shù)據(jù)鏈路層就可以完成相互通信。對于不同的網(wǎng)絡(luò)之間的通信,需要借助路由器等第三方設(shè)備。
- 當(dāng)需要借助第三方設(shè)備即需要路由選擇時(shí),在傳輸轉(zhuǎn)送的過程中,計(jì)算機(jī)和路由器只知道粗略的傳輸路線。就像發(fā)快遞,到達(dá)一個(gè)轉(zhuǎn)運(yùn)點(diǎn)后,由那個(gè)轉(zhuǎn)運(yùn)點(diǎn)決定下一站發(fā)到哪里。
ARP協(xié)議
地址解析協(xié)議,指將目標(biāo)IP地址轉(zhuǎn)換為目標(biāo)MAC地址的過程。主要功能為MAC尋址。
- 同一局域網(wǎng)中,兩臺計(jì)算機(jī)通過MAC地址就可以實(shí)現(xiàn)通信。
- 非同一局域網(wǎng)中,即使知道了目標(biāo)主機(jī)的MAC地址也不能進(jìn)行直接通信,必須經(jīng)過路由轉(zhuǎn)發(fā)才可以。此時(shí),發(fā)送端獲取到的不是真正的目的主機(jī)的MAC地址,而是路由器的MAC地址。然后,將數(shù)據(jù)幀發(fā)送給路由器,由路由器繼續(xù)進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。
參考文檔
- 維基百科
- 阮一峰老師
- 圖解HTTP
