趣談網(wǎng)絡(luò)協(xié)議之通信過(guò)程

劉超《趣談網(wǎng)絡(luò)協(xié)議》第一講|為什么要學(xué)習(xí)網(wǎng)絡(luò)協(xié)議的學(xué)習(xí)筆記

編譯過(guò)程

計(jì)算機(jī)語(yǔ)言作為程序員控制一臺(tái)計(jì)算機(jī)工作的協(xié)議,具備了協(xié)議的三要素。

1、語(yǔ)法,就是這一段內(nèi)容要符合一定的規(guī)則和格式。例如,括號(hào)要成對(duì),結(jié)束要使用分號(hào)等。

2、語(yǔ)義,就是這一段內(nèi)容要代表某種意義。例如數(shù)字減去數(shù)字是有意義的,數(shù)字減去文本一般來(lái)說(shuō)就沒(méi)有意義。

3、順序,就是先干啥,后干啥。例如,可以先加上某個(gè)數(shù)值,然后再減去某個(gè)數(shù)值。

互聯(lián)網(wǎng)世界的運(yùn)行過(guò)程:

1、在瀏覽器中輸入地址:https://www.kaola.com(URL,不知道地址)

通過(guò)地址簿查找協(xié)議 DNS 或者更精準(zhǔn)的HTTPDNS查找

2、得到IP地址:106.114.138.24。(互聯(lián)網(wǎng)的門(mén)牌號(hào))

開(kāi)始打包請(qǐng)求,普通:HTTP協(xié)議,購(gòu)物的加密傳輸:HTTPS

DNS、HTTP、HTTPS 所在的層我們稱為應(yīng)用層。封裝之后瀏覽器將應(yīng)用層的包傳遞下去。

3、傳輸層:a.無(wú)連接的協(xié)議UDP b.面向連接的協(xié)議TCP(支付使用TCP)

面向連接:TCP 會(huì)保證這個(gè)包能夠到達(dá)目的地。如果不能到達(dá),就會(huì)重新發(fā)送,直至到達(dá)。

TCP 協(xié)議里面會(huì)有兩個(gè)端口,一個(gè)是瀏覽器監(jiān)聽(tīng)的端口,一個(gè)是電商的服務(wù)器監(jiān)聽(tīng)的端口。操作系統(tǒng)往往通過(guò)端口來(lái)判斷,它得到的包應(yīng)該給哪個(gè)進(jìn)程。

4、網(wǎng)絡(luò)層:IP協(xié)議,在 IP 協(xié)議里面會(huì)有源 IP 地址,即瀏覽器所在機(jī)器的 IP 地址和目標(biāo) IP 地址,也即電商網(wǎng)站所在服務(wù)器的 IP 地址。

根據(jù)目標(biāo)IP判斷是本地還是外地。

電商網(wǎng)站為外地,則去網(wǎng)關(guān)(類似于去國(guó)外的海關(guān)),操作系統(tǒng)啟動(dòng)時(shí),DHCP協(xié)議就配置IP地址以及默認(rèn)的網(wǎng)關(guān)IP地址192.168.1.1

5、MAC層:ARP協(xié)議(吼一聲)告知IP地址給網(wǎng)關(guān),網(wǎng)關(guān)分配MAC地址

6、網(wǎng)關(guān):網(wǎng)關(guān)收到包之后,會(huì)根據(jù)自己的知識(shí),判斷下一步應(yīng)該怎么走。網(wǎng)關(guān)往往是一個(gè)路由器,到某個(gè) IP 地址應(yīng)該怎么走,這個(gè)叫作路由表。

路由器有點(diǎn)像玄奘西行路過(guò)的一個(gè)個(gè)國(guó)家的一個(gè)個(gè)城關(guān)。每個(gè)城關(guān)都連著兩個(gè)國(guó)家,每個(gè)國(guó)家相當(dāng)于一個(gè)局域網(wǎng),在每個(gè)國(guó)家內(nèi)部,都可以使用本地的地址 MAC 進(jìn)行通信。

一旦跨越城關(guān),就需要拿出 IP 頭來(lái),里面寫(xiě)著貧僧來(lái)自東土大唐(就是源 IP 地址),欲往西天拜佛求經(jīng)(指的是目標(biāo) IP 地址)。路過(guò)寶地,借宿一晚,明日啟行,請(qǐng)問(wèn)接下來(lái)該怎么走啊?

城關(guān)往往是知道這些“知識(shí)”的,因?yàn)槌顷P(guān)和臨近的城關(guān)也會(huì)經(jīng)常溝通。到哪里應(yīng)該怎么走,這種溝通的協(xié)議稱為路由協(xié)議,常用的有OSPFBGP。當(dāng)網(wǎng)絡(luò)包知道了下一步去哪個(gè)城關(guān),有會(huì)通過(guò)MAC地址再去下一個(gè)城關(guān),直到最后一個(gè)城關(guān)。

到達(dá)后,目標(biāo)服務(wù)器會(huì)回復(fù)一個(gè)MAC地址,網(wǎng)絡(luò)包會(huì)通過(guò)這個(gè)地址找到目標(biāo)服務(wù)器,取下MAC取下MAC頭來(lái),發(fā)送給操作系統(tǒng)的網(wǎng)絡(luò)層。在IP頭里寫(xiě)上一層封裝的TCP協(xié)議,交給傳輸層即TCP層。

然后,會(huì)沿著來(lái)的方向回復(fù)一個(gè)信息(報(bào)平安),如果過(guò)了一段時(shí)間還沒(méi)收到,TCP層會(huì)重新發(fā)送這個(gè)包,直到收到回復(fù)的信息。

這個(gè)重試絕非你的瀏覽器重新將下單這個(gè)動(dòng)作重新請(qǐng)求一次。對(duì)于瀏覽器來(lái)講,就發(fā)送了一次下單請(qǐng)求,TCP 層不斷自己悶頭重試。除非 TCP 這一層出了問(wèn)題,例如連接斷了,才輪到瀏覽器的應(yīng)用層重新發(fā)送下單請(qǐng)求。? ? ???

7、當(dāng)網(wǎng)絡(luò)包平安到達(dá) TCP 層之后,TCP 頭中有目標(biāo)端口號(hào),通過(guò)這個(gè)端口號(hào),可以找到電商網(wǎng)站的進(jìn)程正在監(jiān)聽(tīng)這個(gè)端口號(hào),假設(shè)一個(gè) Tomcat,將這個(gè)包發(fā)給電商網(wǎng)站。


電商網(wǎng)站的進(jìn)程得到HTTP請(qǐng)求的內(nèi)容,知道了要買(mǎi)東西,Tomact會(huì)負(fù)責(zé)統(tǒng)籌處理這個(gè)請(qǐng)求,然后通過(guò)RPC調(diào)用(即遠(yuǎn)程過(guò)程調(diào)用的方式來(lái)實(shí)現(xiàn))。

當(dāng)接待員發(fā)現(xiàn)相應(yīng)的部門(mén)都處理完畢,就回復(fù)一個(gè) HTTPS 的包,告知下單成功。這個(gè) HTTPS 的包,會(huì)像來(lái)的時(shí)候一樣,經(jīng)過(guò)千難萬(wàn)險(xiǎn)到達(dá)你的個(gè)人電腦,最終進(jìn)入瀏覽器,顯示支付成功。

整體框架圖:

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章首發(fā)于個(gè)人blog歡迎指正補(bǔ)充,可聯(lián)系lionsom_lin@qq.com原文地址:《網(wǎng)絡(luò)是怎樣連接的》閱讀整...
    Lucus_Linx閱讀 14,481評(píng)論 6 31
  • 1、TCP為什么需要3次握手,4次斷開(kāi)? “三次握手”的目的是“為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端...
    杰倫哎呦哎呦閱讀 3,662評(píng)論 0 6
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,383評(píng)論 6 174
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,199評(píng)論 0 8
  • 1. OSI,TCP/IP,五層協(xié)議的體系結(jié)構(gòu),以及各層協(xié)議 OSI分層 (7層):物理層、數(shù)據(jù)鏈路層、...
    iCaptain閱讀 2,592評(píng)論 0 4

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