這學(xué)期學(xué)了計(jì)網(wǎng),學(xué)得死去活來的,最后也慌慌忙忙地復(fù)習(xí)了下,成績還沒出來,心里還是虛虛的。
計(jì)算機(jī)網(wǎng)絡(luò)就是在講網(wǎng)絡(luò)中的各種協(xié)議,為了讓我們通個(gè)信,也是夠拼的了。接下來就用一個(gè)例子講一下計(jì)算機(jī)網(wǎng)絡(luò)的工作原理吧。
假設(shè)那你是抗戰(zhàn)期間上海租界的一位地下工作者,和人合租子一間出租屋里,現(xiàn)在得到了一封情報(bào),要交給與你單線連接的上級。你該采取什么方式交給他呢?信息內(nèi)容又得包括什么呢?
首先,你賄賂了每天早上送報(bào)紙的小報(bào)童給你送信(物理層,鏈路層),因?yàn)樾?bào)童同時(shí)給許多人送信,所以你得在信封上寫明收信人住址(網(wǎng)絡(luò)層IP地址)——天王蓋地虎小區(qū)寶塔鎮(zhèn)河妖單元302,又考慮到你上級也是與別人合租,所以你得寫上你上級的名字(傳輸層端口號)——李狗蛋。接著你又同樣寫上了自己的地址和姓名,交給了報(bào)童,報(bào)童拿到了你的信后,看到是要發(fā)到天王蓋地虎小區(qū)的, 而天王蓋地虎小區(qū)是張鐵柱(路由器或網(wǎng)關(guān))的地盤(另一個(gè)網(wǎng)段),于是他在信上又寫上了張鐵柱的代號——AC-2B-6E-5D-CC-71作為收信人地址的別稱(以太網(wǎng)mac頭部)。
正常情況下,一次情報(bào)傳遞是這樣的——你的線人收集到了重要情報(bào),交給了你(應(yīng)用程序?qū)?shù)據(jù)交給協(xié)議棧委托發(fā)送),你把情報(bào)放進(jìn)信封里,寫上兩邊收信人(端口號)和地址(IP地址),然后就交給小報(bào)童,報(bào)童發(fā)現(xiàn)目的地不是自己的地盤,而是張鐵柱的,就在信上面加上張鐵柱的代號——AC-2B-6E-5D-CC-71,然后給了張鐵柱(其實(shí)并不是簡單給他,下一個(gè)例子會詳講),張鐵柱拿到了信后,擦到自己的代號(解封裝)把信放到天王蓋地虎小區(qū)寶塔鎮(zhèn)河妖單元302的郵箱里,然后李狗蛋拿到了信,拆開后知道了情報(bào)內(nèi)容。一次情報(bào)傳遞就這樣結(jié)束了 。
以上是在主機(jī)數(shù)少且前期工作全完成的情況下的情報(bào)傳遞過程,接下來我們來看看要如何在一無所有的情況下建立起連接。
你由于工作出色,被調(diào)往敵人大本營工作,出發(fā)前,你只知道你的上級住在街口大槐樹旁一棟五層大樓的四樓,他的名字也是李狗蛋。到敵人大本營幾天后,你安頓了下來,準(zhǔn)備跟你的上級接個(gè)頭,雖然這里也有小報(bào)童傳輸系統(tǒng),但你得先知道你上級的具體住址。于是你拿上了些禮品,去拜訪當(dāng)?shù)氐摹盎畹貓D”(DNS服務(wù)器),從“活地圖”那你得知槐樹旁一棟五層大樓的四樓的真實(shí)地址是——不知道起什么名小區(qū)3單元401(DNS服務(wù)器:將域名轉(zhuǎn)換為IP地址)接著你和以往一樣寫好了信,給了報(bào)童,小報(bào)童拿到信犯了難,因?yàn)樗麖臎]有給不知道起什么名小區(qū)送過信,不知道管那個(gè)小區(qū)的報(bào)童的代號是啥。
冷靜下來后他想到了辦法(ARP協(xié)議)——他先在自己的地址簿里增加了你的地址,并告訴其他報(bào)童說以后給你的信可以給他來送(逆向路徑學(xué)習(xí)),然后向所有報(bào)童發(fā)了封簡短的信——你門有誰知道不知道起什么名小區(qū)的信要給誰嗎?過了一會兒,有人回應(yīng)了——給我吧,我的代號是DC-9B-6F-7D-CC-66.小報(bào)童這下高興了,他在信封上寫上了DC-9B-6F-7D-CC-66,并發(fā)給其他報(bào)童,其他報(bào)童收到了信,檢查代號以核對是不是給自己的,如果是就收下,不是就扔掉。而代號為DC-9B-6F-7D-CC-66的報(bào)童也不一定是你上級小區(qū)的報(bào)童,它也可能將信再轉(zhuǎn)發(fā),不過他確實(shí)一定知道不知道起什么名小區(qū)的信要給誰,所以其實(shí)把信給了他,小報(bào)童的工作就完成了。接著DC-9B-6F-7D-CC-66收到了一封給你的回信,他檢查已知的地址表,發(fā)現(xiàn)給你這個(gè)地址的信可以交給小報(bào)童,因此他把信給了小報(bào)童,小報(bào)童接著又把信給了你。一次情報(bào)傳輸就結(jié)束了。
所以,現(xiàn)實(shí)生活中,當(dāng)你第一次在瀏覽器中輸入鼎鼎有名的測速網(wǎng)站www.baidu.com時(shí),你的電腦將會作出如下動作:
1、向DNS服務(wù)器發(fā)送請求,DNS服務(wù)器將查詢出www.baidu.com的IP地址183.232.231.173并將此返回給你的電腦。
2、用本機(jī)端口號,IP地址,目的端口,IP填充到IP數(shù)據(jù)包頭部。
3、如果連接的是以太網(wǎng),運(yùn)用ARP協(xié)議查詢出下一跳設(shè)備的MAC地址,再用mac頭部在IP數(shù)據(jù)包頭部填充以太網(wǎng)的幀頭,組成以太網(wǎng)幀
4、將以太網(wǎng)幀發(fā)送給路由器/集線器/網(wǎng)關(guān),在主機(jī)運(yùn)用ARP協(xié)議時(shí),它其實(shí)也獲知了下一跳地址,于是他修改以太網(wǎng)幀頭部并轉(zhuǎn)發(fā),接著數(shù)據(jù)就在互聯(lián)網(wǎng)中一步步傳達(dá),直到到達(dá)目的主機(jī)。

下一期將會同樣以抗戰(zhàn)期間上海租界的一位地下工作者情景帶入,講解各層協(xié)議。
插圖:pexels社區(qū)(侵刪)