
這學(xué)期修了一門叫 Network Lab 的課,主要還是講計(jì)算機(jī)網(wǎng)絡(luò)部分的,對(duì)于學(xué)習(xí)前端的我來說還是很有幫助。這個(gè)文集將記錄這門課的核心內(nèi)容。
分層
對(duì)于怎么有效地去組織整個(gè)網(wǎng)絡(luò)系統(tǒng)是十分重要的,畢竟不能說我發(fā)一個(gè)包到另一個(gè)地方那么簡(jiǎn)單。我們可以參考一下機(jī)場(chǎng)的組織形式,因?yàn)樗?jì)算機(jī)網(wǎng)絡(luò)是十分相像的,大家都是負(fù)責(zé)傳遞東西的。

從上圖可以看到,機(jī)場(chǎng)的管理分了好幾層:
- 先買票
- 去托運(yùn)行李
- 過安檢
- 起飛
- 飛行中,根據(jù) GPS 來導(dǎo)航到目的地
- 到達(dá)
- 出關(guān)
- 拿行李
類比一下,計(jì)算機(jī)里網(wǎng)絡(luò)也是這樣分發(fā)包的:

上面可以簡(jiǎn)化成這樣的分層形式:

注意:這里的分層是對(duì)于每臺(tái)計(jì)算機(jī)都是這樣的,但是路由器或者特殊的機(jī)器可能只有 Link 和 Physical 兩層。
傳遞信息
一般來說,信息的傳遞是在一臺(tái)機(jī)器里從 Application 開始先傳到 Pyhsical,然后通過網(wǎng)線再傳遞到加一臺(tái)機(jī)器的 Physical,最后從下往上傳回第二臺(tái)機(jī)器的 Application。如圖:

你可能想問這個(gè) Ht, Hn, Hi 是什么,這就是這個(gè)信息的頭部,有點(diǎn)像請(qǐng)求頭。但是這里是每下到一層(除了 Physical)都會(huì)加一個(gè) Header,所以在 Source 那我們可以看到有 3 個(gè) Header。然后每往上一層又會(huì)去掉一個(gè) Header,所以在 Destination 的 Application 可以看到只有一個(gè) M。
Header 一般用來存每一層和該包的信息。
IP 地址
先說說網(wǎng)絡(luò)中的接口,簡(jiǎn)單來說接口(Interface)就是指連接兩個(gè)機(jī)器的口,通常來說路由器是有多個(gè)接口而主機(jī) (Host) 就只有一兩個(gè)。
IP 地址通常是由 32 Bits來構(gòu)成的,也就是 4 個(gè) Bytes,每個(gè) Byte = 8 個(gè)Bits。我就不想說位和字節(jié)了,因?yàn)橐郧皩W(xué)中文的計(jì)網(wǎng)的時(shí)候總?cè)菀着e(cuò)。

IP 地址和這個(gè)網(wǎng)絡(luò)接口又有什么關(guān)系呢?IP 是這個(gè)網(wǎng)絡(luò)接口對(duì)應(yīng)網(wǎng)絡(luò)的唯一編號(hào)。它有兩個(gè)組件部分:
- Network Prefix,相當(dāng)于地址里的街道號(hào)
- Host Number,相當(dāng)于家里的門牌號(hào)
這里你可能會(huì)問,這 IP 是怎么去區(qū)分哪個(gè)是 Prefix,哪個(gè)又是 Host 呢?這里就要說到 Network Mask 了。在傳遞信息的時(shí)候,上面的 IP 一般在后面加一個(gè)數(shù)字,如 128.143.137.144/16。這個(gè) 16 就表示前 16 個(gè) Bits 是 Prefix,是已經(jīng)固定好了,后 16 Bits (32-16) 就是 Host。所以,上面的 IP 可以寫成這樣:
- Network Prefix: 128.143.0.0
- Host Number: 0.0.137.144
那當(dāng)然上面十進(jìn)制也可以寫成 16 進(jìn)制的,不過大家一般看的都是十進(jìn)制啦。