上一篇文章分析了互聯(lián)網(wǎng)的總體構(gòu)思,從下至上,每一層協(xié)議的設(shè)計(jì)思想。
這是從設(shè)計(jì)者的角度看問題,今天我想切換到用戶的角度,看看用戶是如何從上至下,與這些協(xié)議互動(dòng)的。
先對(duì)前面的內(nèi)容,做一個(gè)小結(jié)。
我們已經(jīng)知道,網(wǎng)絡(luò)通信就是交換數(shù)據(jù)包。電腦A向電腦B發(fā)送一個(gè)數(shù)據(jù)包,后者收到了,回復(fù)一個(gè)數(shù)據(jù)包,從而實(shí)現(xiàn)兩臺(tái)電腦之間的通信。數(shù)據(jù)包的結(jié)構(gòu),基本上是下面這樣:
發(fā)送這個(gè)包,需要知道兩個(gè)地址:
* 對(duì)方的MAC地址
* 對(duì)方的IP地址
有了這兩個(gè)地址,數(shù)據(jù)包才能準(zhǔn)確送到接收者手中。但是,前面說過,MAC地址有局限性,如果兩臺(tái)電腦不在同一個(gè)子網(wǎng)絡(luò),就無法知道對(duì)方的MAC地址,必須通過網(wǎng)關(guān)(gateway)轉(zhuǎn)發(fā)。
上圖中,1號(hào)電腦要向4號(hào)電腦發(fā)送一個(gè)數(shù)據(jù)包。它先判斷4號(hào)電腦是否在同一個(gè)子網(wǎng)絡(luò),結(jié)果發(fā)現(xiàn)不是(后文介紹判斷方法),于是就把這個(gè)數(shù)據(jù)包發(fā)到網(wǎng)關(guān)A。網(wǎng)關(guān)A通過路由協(xié)議,發(fā)現(xiàn)4號(hào)電腦位于子網(wǎng)絡(luò)B,又把數(shù)據(jù)包發(fā)給網(wǎng)關(guān)B,網(wǎng)關(guān)B再轉(zhuǎn)發(fā)到4號(hào)電腦。
1號(hào)電腦把數(shù)據(jù)包發(fā)到網(wǎng)關(guān)A,必須知道網(wǎng)關(guān)A的MAC地址。所以,數(shù)據(jù)包的目標(biāo)地址,實(shí)際上分成兩種情況:
場(chǎng)景 | 數(shù)據(jù)包地址 |
---|---|
同一個(gè)子網(wǎng)絡(luò) | 對(duì)方的MAC地址,對(duì)方的IP地址 |
非同一個(gè)子網(wǎng)絡(luò) | 網(wǎng)關(guān)的MAC地址,對(duì)方的IP地址 |
發(fā)送數(shù)據(jù)包之前,電腦必須判斷對(duì)方是否在同一個(gè)子網(wǎng)絡(luò),然后選擇相應(yīng)的MAC地址。接下來,我們就來看,實(shí)際使用中,這個(gè)過程是怎么完成的。
更多建議: