基礎(chǔ)網(wǎng)絡(luò)概念

1, 網(wǎng)絡(luò)是什么

計算機(jī)網(wǎng)絡(luò)的組成組件:
image
  • 節(jié)點 (node):節(jié)點主要是具有網(wǎng)絡(luò)地址 (IP) 的設(shè)備之稱。
  • 服務(wù)器主機(jī) (server):就網(wǎng)絡(luò)聯(lián)機(jī)的方向來說,提供數(shù)據(jù)以『響應(yīng)』給用戶的主機(jī), 都可以被稱為是一部服務(wù)器。
  • 工作站 (workstation) 或客戶端 (client):任何可以在計算機(jī)網(wǎng)絡(luò)輸入的設(shè)備都可以是工作站, 若以聯(lián)機(jī)發(fā)起的方向來說,主動發(fā)起聯(lián)機(jī)去『要求』數(shù)據(jù)的,就可以稱為是客戶端 (client)。
  • 網(wǎng)絡(luò)卡 (Network Interface Card, NIC):內(nèi)建或者是外插在主機(jī)上面的一個設(shè)備, 主要提供網(wǎng)絡(luò)聯(lián)機(jī)的卡片,目前大都使用具有 RJ-45 接頭的以太網(wǎng)絡(luò)卡。一般 node 上都具有一個以上的網(wǎng)絡(luò)卡, 以達(dá)成網(wǎng)絡(luò)聯(lián)機(jī)的功能。
  • 網(wǎng)絡(luò)接口:利用軟件設(shè)計出來的網(wǎng)絡(luò)接口,主要在提供網(wǎng)絡(luò)地址 (IP) 的任務(wù)。 一張網(wǎng)卡至少可以搭配一個以上的網(wǎng)絡(luò)接口;而每部主機(jī)內(nèi)部其實也都擁有一個內(nèi)部的網(wǎng)絡(luò)接口,那就是 loopback (lo) 這個循環(huán)測試接口!
  • 網(wǎng)絡(luò)形態(tài)或拓樸 (topology):各個節(jié)點在網(wǎng)絡(luò)上面的鏈接方式,一般講的是物理連接方式。 舉例來說,上圖中顯示的是一種被稱為星形聯(lián)機(jī) (star) 的方式,主要是透過一個中間連接設(shè)備, 以放射狀的方式連接各個節(jié)點的一種形態(tài),這就是一種拓樸。
  • 網(wǎng)關(guān) (route) 或通訊閘 (gateway):具有兩個以上的網(wǎng)絡(luò)接口, 可以連接兩個以上不同的網(wǎng)段的設(shè)備,例如 IP 分享器就是一個常見的網(wǎng)關(guān)設(shè)備。
計算機(jī)網(wǎng)絡(luò)協(xié)議: TCP/IP
image

不論是接收端還是發(fā)送端,每個一階層只認(rèn)識對方的同一階層數(shù)據(jù)。
0.應(yīng)用程序階段:妳打開瀏覽器,在瀏覽器上面輸入網(wǎng)址列,按下 [Enter]。此時網(wǎng)址列與相關(guān)數(shù)據(jù)會被瀏覽器包成一個數(shù)據(jù), 并向下傳給 TCP/IP 的應(yīng)用層;

  1. 應(yīng)用層:由應(yīng)用層提供的 HTTP 通訊協(xié)議,將來自瀏覽器的數(shù)據(jù)報起來,并給予一個應(yīng)用層表頭,再向傳送層丟去;
  2. 傳送層:由于 HTTP 為可靠聯(lián)機(jī),因此將該數(shù)據(jù)丟入 TCP 封包內(nèi),并給予一個 TCP 封包的表頭,向網(wǎng)絡(luò)層丟去;
  3. 網(wǎng)絡(luò)層:將 TCP 包裹包進(jìn) IP 封包內(nèi),再給予一個 IP 表頭 (主要就是來源與目標(biāo)的 IP 啰),向鏈結(jié)層丟去;
  4. 鏈結(jié)層:如果使用以太網(wǎng)絡(luò)時,此時 IP 會依據(jù) CSMA/CD 的標(biāo)準(zhǔn),包裹到 MAC 訊框中,并給予 MAC 表頭,再轉(zhuǎn)成位串后, 利用傳輸媒體傳送到遠(yuǎn)程主機(jī)上。

網(wǎng)絡(luò)媒體一次傳輸?shù)臄?shù)據(jù)量是有限的,因此如果要被傳輸?shù)臄?shù)據(jù)太大時,我們在分層的包裝中,就得要將數(shù)據(jù)先拆開放到不同的包裹中, 再給包裹一個序號,好讓目的端的主機(jī)能夠藉由這些序號再重新將數(shù)據(jù)整合回來

2,TCP/IP 的鏈結(jié)層相關(guān)協(xié)議

廣域網(wǎng)使用的設(shè)備:
  • 傳統(tǒng)電話撥接:透過 ppp 協(xié)議。

早期網(wǎng)絡(luò)大概都只能透過調(diào)制解調(diào)器加上電話線以及計算機(jī)的九針串行端口 (以前接鼠標(biāo)或游戲桿的插孔),然后透過 Point-to-Point Protocol (PPP 協(xié)議) 配合撥接程序來取得網(wǎng)絡(luò) IP 參數(shù),這樣就能夠上網(wǎng)了。不過這樣的速度非常慢

  • 整合服務(wù)數(shù)字網(wǎng)絡(luò) (Integrated Services Digital Network, ISDN)

也是利用現(xiàn)有的電話線路來達(dá)成網(wǎng)絡(luò)聯(lián)機(jī)的目的,只是聯(lián)機(jī)的兩端都需要有 ISDN 的調(diào)制解調(diào)器來提供聯(lián)機(jī)功能。比較少見

  • 非對稱數(shù)位用路回路 (Asymmetric Digital Subscriber Line, ADSL):透過 pppoe 協(xié)定

也是透過電話線來撥接后取得 IP 的一個方法,只不過這個方式使用的是電話的高頻部分,與一般講電話的頻率不同。 因此妳可以一邊使用 ADSL 上網(wǎng)同時透過同一個電話號碼來打電話聊天。ADSL 同樣使用調(diào)制解調(diào)器,只是他透過的是 PPPoE (PPP over Ethernet) 的方法! 將 PPP 仿真在以太網(wǎng)絡(luò)卡上,因此你的主機(jī)需要透過一張網(wǎng)絡(luò)卡來連接到調(diào)制解調(diào)器,并透過撥接程序來取得新的接口 (ppp0)

  • 電纜調(diào)制解調(diào)器 (Cable modem)

主要透過有線電視 (臺灣所謂的第四臺) 使用的纜線作為網(wǎng)絡(luò)訊號媒體,同樣需要具備調(diào)制解調(diào)器來連接到 ISP,以取得網(wǎng)絡(luò)參數(shù)來上網(wǎng)。

局域網(wǎng)絡(luò)使用的設(shè)備-以太網(wǎng)絡(luò):
1,以太網(wǎng)絡(luò)的傳輸協(xié)議:CSMA/CD

整個以太網(wǎng)絡(luò)的重心就是以太網(wǎng)絡(luò)卡。所以說,以太網(wǎng)絡(luò)的傳輸主要就是網(wǎng)絡(luò)卡對網(wǎng)絡(luò)卡之間的數(shù)據(jù)傳遞而已。 每張以太網(wǎng)絡(luò)卡出廠時,就會賦予一個獨一無二的卡號,那就是所謂的 MAC (Media Access Control) 。

image

圖內(nèi)的中心點為集線器, 各個主機(jī)都是聯(lián)機(jī)到集線器,然后透過集線器的功能向所有主機(jī)發(fā)起聯(lián)機(jī)的。集線器是一種網(wǎng)絡(luò)共享媒體,什么是網(wǎng)絡(luò)共享媒體???想象一下上述的環(huán)境就像一個十字路口,而集線器就是那個路口! 這個路口一次只允許一輛車通過,如果兩輛車同時使用這個路口,那么就會發(fā)生碰撞的車禍?zhǔn)录?!那就是所謂的共享媒體。 也就是說,網(wǎng)絡(luò)共享媒體在單一時間點內(nèi), 僅能被一部主機(jī)所使用

如何傳輸:

  1. 監(jiān)聽媒體使用情況 (Carrier Sense):A 主機(jī)要發(fā)送網(wǎng)絡(luò)封包前,需要先對網(wǎng)絡(luò)媒體進(jìn)行監(jiān)聽,確認(rèn)沒有人在使用后, 才能夠發(fā)送出訊框;
  2. 多點傳輸 (Multiple Access):A 主機(jī)所送出的數(shù)據(jù)會被集線器復(fù)制一份,然后傳送給所有連接到此集線器的主機(jī)! 也就是說, A 所送出的數(shù)據(jù), B, C, D 三部計算機(jī)都能夠接收的到!但由于目標(biāo)是 D 主機(jī),因此 B 與 C 會將此訊框數(shù)據(jù)丟棄,而 D 則會抓下來處理;
  3. 碰撞偵測 (Collision Detection):該訊框數(shù)據(jù)附有檢測能力,若其他主機(jī)例如 B 計算機(jī)也剛好在同時間發(fā)送訊框數(shù)據(jù)時, 那么 A 與 B 送出的數(shù)據(jù)碰撞在一塊 (出車禍) ,此時這些訊框就是損毀,那么 A 與 B 就會各自隨機(jī)等待一個時間, 然后重新透過第一步再傳送一次該訊框數(shù)據(jù)。

看到網(wǎng)絡(luò)共享媒體在單一時間點內(nèi), 僅能被一部主機(jī)所使用,是不是疑問為什么大家可以一起上網(wǎng)呢?假如我傳輸100M的文件,我的 100MB 檔案就得要拆成多個小數(shù)據(jù)報,然后一個一個的傳送,每個數(shù)據(jù)報傳送前都要經(jīng)過 CSMA/CD 的機(jī)制。 所以,這個集線器的使用權(quán)是大家搶著用的!即使只有一部主機(jī)在使用網(wǎng)絡(luò)媒體時,那么這部主機(jī)在發(fā)送每個封包間, 也都是需要等待一段時間的 (96 bit time)

2,MAC 的封裝格式

上面提到的 CSMA/CD 傳送出去的訊框數(shù)據(jù),其實就是 MAC !MAC 其實就是我們上面一直講到的訊框 (frame) 。 只是這個訊框上面有兩個很重要的數(shù)據(jù),就是目標(biāo)與來源的網(wǎng)卡卡號,因此我們又簡稱網(wǎng)卡卡號為 MAC。

你可以把 MAC 想成是一個在網(wǎng)絡(luò)線上面?zhèn)鬟f的包裹,而這個包裹是整個網(wǎng)絡(luò)硬件上面傳送數(shù)據(jù)的最小單位了。 也就是說,網(wǎng)絡(luò)線可想成是一條『一次僅可通過一個人』的獨木橋, 而 MAC 就是在這個獨木橋上面動的人。

image

上圖中的目的地址與來源地址指的就是網(wǎng)卡卡號 (hardware address, 硬件地址).

硬件地址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF (16 進(jìn)位法), 這 6 bytes 當(dāng)中,前 3bytes 為廠商的代碼,后 3bytes 則是該廠商自行設(shè)定的裝置碼了

image

特別注意,在這個 MAC 的傳送中,他僅在局域網(wǎng)絡(luò)內(nèi)生效,如果跨過不同的網(wǎng)域 (這個后面 IP 的部分時會介紹),那么來源與目的的硬件地址就會跟著改變了。 這是因為變成不同網(wǎng)絡(luò)卡之間的交流了嘛!所以卡號當(dāng)然不同了.

3, MTU 最大傳輸單位

標(biāo)準(zhǔn)以太網(wǎng)絡(luò)訊框所能傳送的數(shù)據(jù)量最大值,我們稱為 MTU (Maximum Transmission Unit, 最大傳輸單位)。

在待會兒會介紹到的 IP 封包中,這個 IP 封包最大可以到 65535 bytes,比 MTU 還要大呢!既然禮物 (IP) 都比盒子 (MAC) 大,那怎么可能放的進(jìn)去?。克詥?, IP 封包是可以進(jìn)行拆解的,然后才能放到 MAC 當(dāng)中??!等到數(shù)據(jù)都傳到目的地, 再由目的地的主機(jī)將他組裝回來就是了。所以啰,如果 MTU 能夠大一些的話,那么 IP 封包的拆解情況就會降低, 封包與封包傳送之間的等待時間 (前一小節(jié)提到的 96 bit time) 也會減少,就能夠增加網(wǎng)絡(luò)帶寬的使用啰!

不論你的網(wǎng)絡(luò)媒體支持 MTU 到多大,你必須要考慮到你的封包需要傳到目的地時, 所需要經(jīng)過的所有網(wǎng)絡(luò)媒體,然后再來決定你的 MTU 設(shè)定才行。就因為這樣,我們才不建議你修改標(biāo)準(zhǔn)以太網(wǎng)絡(luò)的 MTU 嘛!

4,集線器、交換器與相關(guān)機(jī)制
  • 共不共享很重要,集線器還是交換器?

當(dāng)一個很忙碌的網(wǎng)絡(luò)在運作時,集線器 (hub) 這個網(wǎng)絡(luò)共享媒體就可能會發(fā)生碰撞的情況, 這是因為 CSMA/CD 的緣故。那有沒有辦法避免這種莫名其妙的封包碰撞情況呢?有的,那就使用非共享媒體的交換器即可??!

交換器與集線器最大的差異,在于交換器內(nèi)有一個特別的內(nèi)存, 這個內(nèi)存可以記錄每個 switch port 與其連接的 PC 的 MAC 地址,所以,當(dāng)來自 switch 兩端的 PC 要互傳數(shù)據(jù)時,每個訊框?qū)⒅苯油高^交換器的內(nèi)存數(shù)據(jù)而傳送到目標(biāo)主機(jī)上.

image

A 傳送到 D 與 B 傳送到 C 都獨自擁有 10/100Mbps 的帶寬,兩邊并不會互相影響! 不過,如果是 A 與 D 都傳給 C 時,由于 C port 就僅有 10/100Mbps ,等于 A 與 D 都需要搶 C 節(jié)點的 10/100Mbps 來用的意思。

3, TCP/IP 的網(wǎng)絡(luò)層相關(guān)封包與數(shù)據(jù)

以太網(wǎng)絡(luò)上面的傳輸使用網(wǎng)絡(luò)卡卡號為基準(zhǔn)的 MAC 訊框,配合 CSMA/CD 的標(biāo)準(zhǔn)來傳送訊框,這就是硬件部分。在軟件部分,我們知道 Internet 其實就是 TCP/IP 這個通訊協(xié)議的通稱,Internet 是由 InterNIC所統(tǒng)一管理的, 但其實他僅是負(fù)責(zé)分配 Internet 上面的 IP 以及提供相關(guān)的 TCP/IP 技術(shù)文件而已。

3.1 IP 封包的封裝

目前IP有兩個版本。 IPv4 (Internet Protocol version 4, 因特網(wǎng)協(xié)定第四版)和IPV6,目前運用最廣泛的還是IPV4,所以下面講的是IPV4。

IP 封包可以達(dá)到 65535 bytes 這么大,在比 MAC 大的情況下,我們的操作系統(tǒng)會對 IP 進(jìn)行拆解的動作。

你只要知道 IP 表頭里面含有: TTL, Protocol, 來源地址與目標(biāo)地址也就夠了!而這個 IP 表頭的來源與目標(biāo) IP ,以及那個判斷通過多少路由器的 TTL ,就能了解到這個 IP 將被如何傳送到目的端吶。

3.2 IP 地址的組成與分級

我們知道 IP (Internet Protocol) 其實是一種網(wǎng)絡(luò)封包,而這個封包的表頭最重要的就是那個 32 位的來源與目標(biāo)地址! 為了方便記憶,所以我們也稱這個 32 bits 的數(shù)值為 IP 網(wǎng)絡(luò)地址就是了。

既然 IP 的組成是 32 bits 的數(shù)值,也就是由 32 個 0 與 1 組成的一連串?dāng)?shù)字!那么當(dāng)我們思考所有跟 IP 有關(guān)的參數(shù)時,你就應(yīng)該要將該參數(shù)想成是 32 位的數(shù)據(jù)喔!

將 32 bits 的 IP 分成四小段,每段含有 8 個 bits ,將 8 個 bits 計算成為十進(jìn)制,并且每一段中間以小數(shù)點隔開,那就成了目前大家所熟悉的 IP 的書寫模樣了。如:

11111111.11111111.11111111.11111111   ==> 255.255.255.255

IP 最小可以由 0.0.0.0 一直到 255.255.255.255 ,主要分為 Net_ID (網(wǎng)域號碼)與 Host_ID (主機(jī)號碼) 兩部份。

11000000.10101000.00000000.11111111     192.168.0.255
|----------Net_ID---------|-host--|
第一組表示IP的等級,第四組為主機(jī)號碼

在上面的范例當(dāng)中,前面三組數(shù)字 (192.168.0) 就是網(wǎng)域號碼,最后面一組數(shù)字則稱為主機(jī)號碼。網(wǎng)域相同說明IP在同一網(wǎng)域內(nèi),也就是同一局域網(wǎng)內(nèi)。

IP 在同一網(wǎng)域的意義
  • Net_ID 與 Host_ID 的限制:在同一個網(wǎng)段內(nèi),Net_ID 是不變的,而 Host_ID 則是不可重復(fù);Host_ID 在二進(jìn)制的表示法當(dāng)中,不可同時為 0 也不可同時為 1 ,因為全為 0 表示整個網(wǎng)段的地址 (Network IP),而全為 1 則表示為廣播的地址 (Broadcast IP)。
  • 在區(qū)網(wǎng)內(nèi)透過 IP 廣播傳遞數(shù)據(jù):在同一網(wǎng)域內(nèi),這些主機(jī)都可以透過 CSMA/CD 的功能直接在區(qū)網(wǎng)內(nèi)用廣播進(jìn)行網(wǎng)絡(luò)的聯(lián)機(jī),亦即可以直接網(wǎng)卡對網(wǎng)卡傳遞數(shù)據(jù) (透過 MAC 訊框)。
  • 設(shè)定不同區(qū)網(wǎng)在同物理網(wǎng)段的情況:在同一個物理網(wǎng)段之內(nèi),如果兩部主機(jī)設(shè)定成不同的IP網(wǎng)段,則由于廣播地址的不同,導(dǎo)致無法透過廣播的方式來進(jìn)行聯(lián)機(jī)。 此時得要透過路由器 (router) 來進(jìn)行溝通才能將兩個網(wǎng)域連結(jié)在一起
  • 網(wǎng)域的大?。寒?dāng) Host_ID 所占用的位越大,亦即 Host_ID 數(shù)量越多時,表示同一個網(wǎng)域內(nèi)可用以設(shè)定主機(jī)的 IP 數(shù)量越多。
IP 的分級
以二進(jìn)制說明 Network 第一個數(shù)字的定義:
Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開頭是 0
          |--net--|---------host------------|
Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開頭是 10
          |------net-------|------host------|
Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開頭是 110
          |-----------net-----------|-host--|
Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開頭是 1110
Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開頭是 1111

五種分級在十進(jìn)制的表示:
Class A :   0.xx.xx.xx ~ 127.xx.xx.xx
Class B : 128.xx.xx.xx ~ 191.xx.xx.xx
Class C : 192.xx.xx.xx ~ 223.xx.xx.xx
Class D : 224.xx.xx.xx ~ 239.xx.xx.xx
Class E : 240.xx.xx.xx ~ 255.xx.xx.xx
3.3 IP 的種類與取得方式

在 IPv4 里面就只有兩種 IP 的類別,分別是:

  • Public IP : 公共 IP ,經(jīng)由 INTERNIC 所統(tǒng)一規(guī)劃的 IP,有這種 IP 才可以連上 Internet ;
  • Private IP : 私有 IP 或保留 IP,不能直接連上 Internet 的 IP , 主要用于局域網(wǎng)絡(luò)內(nèi)的主機(jī)聯(lián)機(jī)規(guī)劃。

私有 IP 也分別在 A, B, C 三個 Class 當(dāng)中各保留一段作為私有 IP 網(wǎng)段,那就是:

  • Class A:10.0.0.0 - 10.255.255.255
  • Class B:172.16.0.0 - 172.31.255.255
  • Class C:192.168.0.0 - 192.168.255.255

由于這三段 Class 的 IP 是預(yù)留使用的,所以并不能直接作為 Internet 上面的連接之用,不然的話,到處就都有相同的 IP了。這三個 IP 網(wǎng)段就只做為內(nèi)部私有網(wǎng)域的 IP 溝通之用。簡單的說,他有底下的幾個限制:

  • 私有 IP 的路由信息不能對外散播 (只能存在內(nèi)部網(wǎng)絡(luò));
  • 使用私有 IP 作為來源或目的地址的封包,不能透過 Internet 來轉(zhuǎn)送 (不然網(wǎng)絡(luò)會混亂);
  • 關(guān)于私有 IP 的參考紀(jì)錄(如 DNS),只能限于內(nèi)部網(wǎng)絡(luò)使用 (一樣的原理)
特殊的 loopback IP 網(wǎng)段

簡單的說,如果你沒有安裝網(wǎng)絡(luò)卡在的機(jī)器上面, 但是你又希望可以測試一下在你的機(jī)器上面設(shè)定的服務(wù)器環(huán)境到底可不可以順利運作,這個時候怎么辦, 嘿嘿!就是利用這個所謂的內(nèi)部循環(huán)網(wǎng)絡(luò)啦!這個網(wǎng)段在 127.0.0.0/8 這個 Class A,而且默認(rèn)的主機(jī) (localhost) 的 IP 是 127.0.0.1

IP 的取得方式

主機(jī)的 IP 與相關(guān)網(wǎng)域的設(shè)定方式主要有:

  • 直接手動設(shè)定(static): 你可以直接向你的網(wǎng)管詢問可用的 IP 相關(guān)參數(shù),然后直接編輯配置文件 (或使用某些軟件功能) 來設(shè)定你的網(wǎng)絡(luò)。 常見于校園網(wǎng)絡(luò)的環(huán)境中,以及向 ISP 申請固定 IP 的聯(lián)機(jī)環(huán)境;
  • 透過撥接取得:向你的ISP申請注冊,取得賬號密碼后,直接撥接到 ISP ,你的 ISP 會透過他們自己的設(shè)定,讓你的操作系統(tǒng)取得正確的網(wǎng)絡(luò)參數(shù)。
  • 自動取得網(wǎng)絡(luò)參數(shù) (DHCP): 在局域網(wǎng)絡(luò)內(nèi)會有一部主機(jī)負(fù)責(zé)管理所有計算機(jī)的網(wǎng)絡(luò)參數(shù),你的網(wǎng)絡(luò)啟動時就會主動向該服務(wù)器要求 IP 參數(shù), 若取得網(wǎng)絡(luò)相關(guān)參數(shù)后,你的主機(jī)就能夠自行設(shè)定好所有服務(wù)器給你的網(wǎng)絡(luò)參數(shù)了。最常使用于企業(yè)內(nèi)部、IP 分享器后端、 校園網(wǎng)絡(luò)與宿舍環(huán)境,及纜線寬帶等聯(lián)機(jī)方式。
3.4 Netmask, 子網(wǎng)與 CIDR (Classless Interdomain Routing)

例如將第一個 Host_ID 被拿來作為 Net_ID ,所以,整個 Net_ID 就有 25 bits ,至于 Host_ID 則減少為 7 bits 。在這樣的情況下,原來的一個 Class C 的網(wǎng)域就可以被切分為兩個子域,而每個子域就有『 256/2 - 2 = 126 』個可用的 IP 了。

Netmask, 或稱為 Subnet mask (子網(wǎng)掩碼)

那到底是什么參數(shù)來達(dá)成子網(wǎng)的切分呢?那就是 Netmask (子網(wǎng)掩碼) 的用途了。

以 192.168.0.0 ~ 192.168.0.255 這個網(wǎng)域為范例,將Net_ID都變成1,Host_ID 變成0.

Netmask:   255.255.255.0   <==網(wǎng)域定義中,最重要的參數(shù)
Network:   192.168.0.0     <==第一個 IP 該網(wǎng)段的 Network
Broadcast: 192.168.0.255   <==最后一個 IP   Broadcast
可用以設(shè)定成為主機(jī)的 IP 數(shù):
192.168.0.1 ~ 192.168.0.254
子網(wǎng)切分

下面這個能一目了然的知道子網(wǎng)如何分割。

原本的 C Class 的 Net_ID 與 Host_ID 的分別
11000000.10101000.00000000.00000000      Network:   192.168.0.0
11000000.10101000.00000000.11111111      Broadcast: 192.168.0.255
|----------Net_ID---------|-host--|

切成兩個子網(wǎng)之后的 Net_ID 與 Host_ID 為何?
11000000.10101000.00000000.0 0000000  多了一個 Net_ID 了, 為 0 (第一個子網(wǎng))
11000000.10101000.00000000.1 0000000  多了一個 Net_ID 了, 為 1 (第二個子網(wǎng))
|----------Net_ID-----------|-host--|

第一個子網(wǎng)
Network:   11000000.10101000.00000000.0 0000000   192.168.0.0
Broadcast: 11000000.10101000.00000000.0 1111111   192.168.0.127
           |----------Net_ID-----------|-host-|
Netmask:   11111111.11111111.11111111.1 0000000   255.255.255.128

第二個子網(wǎng)
Network:   11000000.10101000.00000000.1 0000000   192.168.0.128
Broadcast: 11000000.10101000.00000000.1 1111111   192.168.0.255
           |----------Net_ID-----------|-host-|
Netmask:   11111111.11111111.11111111.1 0000000   255.255.255.128

如果我們以 192.168.0.0 ~ 192.168.0.255 這個網(wǎng)段來說,要是給予 Net_ID 是 26 位時,總共分為幾段呢? 因為 26-24=2 ,所以總共用掉兩個位,因此有 2 的 2 次方,得到 4 個網(wǎng)段。再將 256 個 IP 平均分配到 4 個網(wǎng)段去, 那我們就可以知道這四個網(wǎng)段分別是:

192.168.0.0~192.168.0.63
192.168.0.64~192.168.0.127
192.168.0.128~192.168.0.191
192.168.0.192~192.168.0.255
無層級 IP: CIDR(Classless Interdomain Routing)

我們常常會以 Network 以及 Netmask 來表示一個網(wǎng)域。在上述的偷吃步計算網(wǎng)域方法中,四個網(wǎng)段的寫法就可以寫成:

192.168.0.0/26  <==因為 Net_ID 共有 26 個 bits
192.168.0.64/26
192.168.0.128/26
192.168.0.192/26

這就是一般網(wǎng)域的表示方法。

3.5 路由概念

我們知道在同一個區(qū)網(wǎng)里面,可以透過 IP 廣播的方式來達(dá)到資料傳遞的目的。但如果是非區(qū)網(wǎng)內(nèi)的數(shù)據(jù)呢? 這時就得要透過那個所謂的郵局 (路由器) 的幫忙了!

下列圖示當(dāng)中共有兩個不同的網(wǎng)段,分別是 Network A 與 Network B,這兩個網(wǎng)段是經(jīng)由一部路由器 (Server A) 來進(jìn)行數(shù)據(jù)轉(zhuǎn)遞的

image

PC01 與 PC11通過Net_ID 來發(fā)現(xiàn)他們不屬于同一網(wǎng)段。主機(jī)通過路由表來傳動數(shù)據(jù),每部主機(jī)都有自己的路由表。

  1. 查詢 IP 封包的目標(biāo) IP 地址:
    當(dāng) PC01 有 IP 封包需要傳送時,主機(jī)會查閱 IP 封包表頭的目標(biāo) IP 地址;
  2. 查詢是否位于本機(jī)所在的網(wǎng)域之路由設(shè)定:
    PC01 主機(jī)會分析自己的路由表,當(dāng)發(fā)現(xiàn)目標(biāo) IP 與本機(jī) IP 的 Net_ID 相同時(同一網(wǎng)域),則 PC01 會直接透過區(qū)網(wǎng)功能,將數(shù)據(jù)直接傳送給目的地主機(jī)。
  3. 查詢預(yù)設(shè)路由 (default gateway):
    PC01 與 PC11 并非同一網(wǎng)域,因此 PC01 會分析路由表當(dāng)中是否有其他相符合的路由設(shè)定, 如果沒有的話,就直接將該 IP 封包送到預(yù)設(shè)路由器 (default gateway) 上頭去,在本案例當(dāng)中 default gateway 則是 Server A 這一部。
  4. 送出封包至 gateway 后,不理會封包流向:
    當(dāng) IP 由 PC01 送給 Server A 之后, PC01 就不理會接下來的工作。而 Server A 接收到這個封包后, 會依據(jù)上述的流程,也分析自己的路由信息,然后向后繼續(xù)傳輸?shù)秸_的目的地主機(jī)上頭。

上面的案例是一個很簡單的路由概念,事實上, Internet 上面的路由協(xié)議與變化是相當(dāng)復(fù)雜的,因為 Internet 上面的路由并不是靜態(tài)的,他可以隨時因為環(huán)境的變化而修訂每個封包的傳送方向。

3.6 觀察主機(jī)路由: route
[root@www ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref  Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0      0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0      0 lo
0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0      0 eth0

當(dāng)你下達(dá) route 時, 屏幕上說明了這部機(jī)器上面共有三個路由規(guī)則,第一欄為『目的地的網(wǎng)域』,,例如 192.168.0.0 就是一個網(wǎng)域;最后一欄顯示的是 『要去到這個目的地要使用哪一個網(wǎng)絡(luò)接口!』,例如 eth0 就是網(wǎng)絡(luò)卡的裝置代號。如果我們要傳送的封包在路由規(guī)則里面的 192.168.0.0/255.255.255.0 或者 127.0.0.0/255.0.0.0 里面時,因為第二欄 Gateway 為 * ,所以就會直接以后面的網(wǎng)絡(luò)接口來傳送出去,而不透過 Gateway !

3.7 IP 與 MAC:鏈結(jié)層的 ARP 與 RARP 協(xié)定

ARP (Address Resolution Protocol, 網(wǎng)絡(luò)地址解析) 協(xié)議,RARP (Revers ARP, 反向網(wǎng)絡(luò)地址解析)。

當(dāng)我們想要了解某個IP其實是設(shè)定于某張以太網(wǎng)絡(luò)卡上頭時,我們的主機(jī)會對整個區(qū)網(wǎng)發(fā)送出 ARP 封包, 對方收到 ARP 封包后就會回傳他的 MAC 給我們,我們的主機(jī)就會知道對方所在的網(wǎng)卡,那接下來就能夠開始傳遞數(shù)據(jù)啰。 如果每次要傳送都得要重新來一遍這個 ARP 協(xié)定那不是很煩?因此,當(dāng)使用 ARP 協(xié)議取得目標(biāo) IP 與他網(wǎng)卡卡號后, 就會將該筆記錄寫入我們主機(jī)的 ARP table 中 (內(nèi)存內(nèi)的數(shù)據(jù)) 記錄 20 分鐘。

arp 這個指令獲取本機(jī)的 ARP 表格內(nèi)的 IP/MAC 對應(yīng)數(shù)據(jù)。如果你有特殊需求的話, 也可以利用『 arp -s 』這個選項來定義靜態(tài)的 ARP 對應(yīng)!

3.8 ICMP 協(xié)定

ICMP 的全名是『 Internet Control Message Protocol, 因特網(wǎng)訊息控制協(xié)議 』。

基本上,ICMP 是一個錯誤偵測與回報的機(jī)制,最大的功能就是可以確保我們網(wǎng)絡(luò)的聯(lián)機(jī)狀態(tài)與聯(lián)機(jī)的正確性。

ICMP 也是網(wǎng)絡(luò)層的重要封包之一,不過,這個封包并非獨立存在,而是納入到 IP 的封包中!也就是說, ICMP 同樣是透過 IP 封包來進(jìn)行數(shù)據(jù)傳送的。因為在 Internet 上面有傳輸能力的就是 IP 封包。

那么我們是如何利用 ICMP 來檢驗網(wǎng)絡(luò)的狀態(tài)呢?最簡單的指令就是 pingtraceroute 了, 這兩個指令可以透過 ICMP 封包的輔助來確認(rèn)與回報網(wǎng)絡(luò)主機(jī)的狀態(tài)。

4. TCP/IP 的傳輸層相關(guān)封包與數(shù)據(jù)

網(wǎng)絡(luò)層的 IP 封包只負(fù)責(zé)將數(shù)據(jù)送到正確的目標(biāo)主機(jī)去,但這個封包到底會不會被接受,或者是有沒有被正確的接收, 那就不是 IP 的任務(wù)啦!那是傳送層的任務(wù)之一。

4.1 可靠聯(lián)機(jī)的 TCP 協(xié)議

在前面的 OSI 七層協(xié)議當(dāng)中,在網(wǎng)絡(luò)層的 IP 之上則是傳送層,而傳送層的數(shù)據(jù)打包成什么? 最常見的就是 TCP 封包了。這個 TCP 封包數(shù)據(jù)必須要能夠放到 IP 的數(shù)據(jù)袋當(dāng)中才行喔! 所以,我們將圖 2.1-4 簡化一下,將 MAC, IP 與 TCP 的封包數(shù)據(jù)這樣看:

image

TCP 封包的表頭:
image

想詳細(xì)了解表頭的可以看這里:TCP數(shù)據(jù)報首部

通訊端口

在TCP中,最重要的是來源端口和目的端口。由于是 16 位,因此目標(biāo)與來源端口最大可達(dá) 65535 號 (2 的 16 次方)。不同服務(wù)通過不同端口實現(xiàn)。

打個比方:IP 是門牌,TCP 是樓層,真正提供服務(wù)的, 是在該樓層的那個人 (程序)!

再舉個例子來說,一部主機(jī)就好像是一間多功能銀行,該銀行內(nèi)的每個負(fù)責(zé)不同業(yè)務(wù)的窗口就好像是通訊端口, 而我們民眾就好像是 Client 端來的封包。當(dāng)你進(jìn)入銀行想要繳納信用卡賬單時, 一到門口服務(wù)人員就會指示你直接到該窗口去繳納,當(dāng)然,如果你是要領(lǐng)錢,服務(wù)人員就會請你到領(lǐng)錢的窗口去填寫數(shù)據(jù), 你是不會跑錯的對吧! _。萬一跑錯了怎么辦?呵呵!當(dāng)然該窗口就會告訴你『我不負(fù)責(zé)這個業(yè)務(wù),你請回去!』

特權(quán)端口 (Privileged Ports)

Internet 上面已經(jīng)有很多規(guī)范好的固定 port (well-known port), 這些 port number 通常小于 1024 ,且是提供給許多知名的網(wǎng)絡(luò)服務(wù)軟件用的。

另外一點比較值得注意的是,小于 1024 以下的埠口要啟動時, 啟動者的身份必須要是 root 才行,所以才叫做特權(quán)端口。

4.2 TCP 的三向握手
image
  • A:封包發(fā)起

當(dāng)客戶端想要對服務(wù)器端聯(lián)機(jī)時,就必須要送出一個要求聯(lián)機(jī)的封包,此時客戶端必須隨機(jī)取用一個大于 1024 以上的端口來做為程序溝通的接口。然后在 TCP 的表頭當(dāng)中,必須要帶有 SYN 的主動聯(lián)機(jī)(SYN=1),并且記下發(fā)送出聯(lián)機(jī)封包給服務(wù)器端的序號 (Sequence number = 10001) 。

  • B:封包接收與確認(rèn)封包傳送

當(dāng)服務(wù)器接到這個封包,并且確定要接收這個封包后,就會開始制作一個同時帶有 SYN=1, ACK=1 的封包, 其中那個 acknowledge 的號碼是要給 client 端確認(rèn)用的,所以該數(shù)字會比(A 步驟)里面的 Sequence 號碼多一號 (ack = 10001+1 = 10002), 那我們服務(wù)器也必須要確認(rèn)客戶端確實可以接收我們的封包才行,所以也會發(fā)送出一個 Sequence (seq=20001) 給客戶端,并且開始等待客戶端給我們服務(wù)器端的回應(yīng)喔!

  • C:回送確認(rèn)封包

當(dāng)客戶端收到來自服務(wù)器端的 ACK 數(shù)字后 (10002) 就能夠確認(rèn)之前那個要求封包被正確的收受了, 接下來如果客戶端也同意與服務(wù)器端建立聯(lián)機(jī)時,就會再次的發(fā)送一個確認(rèn)封包 (ACK=1) 給服務(wù)器,亦即是 acknowledge = 20001+1 = 20002 啰。

  • D:取得最后確認(rèn)

一切都順利,在服務(wù)器端收到帶有 ACK=1 且 ack=20002 序號的封包后,就能夠建立起這次的聯(lián)機(jī)了。

不論是服務(wù)器端還是客戶端,都必須要透過一次 SYN 與 ACK 來建立聯(lián)機(jī),所以總共會進(jìn)行三次的交談! 在設(shè)定防火墻或者是追蹤網(wǎng)絡(luò)聯(lián)機(jī)的問題時,這個『雙向』的概念最容易被忽略, 而常常導(dǎo)致無法聯(lián)機(jī)成功的問題??!切記切記!

4.3 非連接導(dǎo)向的 UDP 協(xié)議

UDP 的全名是:『User Datagram Protocol, 用戶數(shù)據(jù)流協(xié)議』,UDP 與 TCP 不一樣, UDP 不提供可靠的傳輸模式,因為他不是面向連接的一個機(jī)制,這是因為在 UDP 的傳送過程中,接受端在接受到封包之后,不會回復(fù)響應(yīng)封包 (ACK) 給發(fā)送端,所以封包并沒有像 TCP 封包有較為嚴(yán)密的檢查機(jī)制。

TCP 封包確實是比較可靠的,因為通過三向交握嘛!不過,也由于三向交握的緣故, TCP 封包的傳輸速度會較慢。 至于 UDP 封包由于不需要確認(rèn)對方是否有正確的收到數(shù)據(jù),故表頭數(shù)據(jù)較少,所以 UDP 就可以在 Data 處填入更多的資料了。同時 UDP 比較適合需要實時反應(yīng)的一些數(shù)據(jù)流,例如影像實時傳送軟件等, 就可以使用這類的封包傳送。也就是說, UDP 傳輸協(xié)議并不考慮聯(lián)機(jī)要求、聯(lián)機(jī)終止與流量控制等特性, 所以使用的時機(jī)是當(dāng)數(shù)據(jù)的正確性不很重要的情況,例如網(wǎng)絡(luò)攝影機(jī)!

另外,很多的軟件其實是同時提供 TCP 與 UDP 的傳輸協(xié)議的,舉例來說,查詢主機(jī)名的 DNS 服務(wù)就同時提供了 UDP/TCP 協(xié)議。由于 UDP 較為快速,所以我們 client 端可以先使用 UDP 來與服務(wù)器聯(lián)機(jī)。 但是當(dāng)使用 UDP 聯(lián)機(jī)卻還是無法取得正確的數(shù)據(jù)時,便轉(zhuǎn)換為較為可靠的 TCP 傳輸協(xié)議來進(jìn)行數(shù)據(jù)的傳輸。 這樣可以同時兼顧快速與可靠的傳輸!

4.4 網(wǎng)絡(luò)防火墻與 OSI 七層協(xié)定

封包過濾式的網(wǎng)絡(luò)防火墻可以抵擋掉一些可能有問題的封包,既然封包的表頭上面已經(jīng)有這么多的重要信息, 那么我就利用一些防火墻機(jī)制與軟件來進(jìn)行封包表頭的分析,并且設(shè)定分析的規(guī)則,當(dāng)發(fā)現(xiàn)某些特定的 IP 、特定的端口或者是特定的封包信息(SYN/ACK等等),那么就將該封包給他丟棄, 那就是最基本的防火墻原理了!

舉例來說,大家都知道 Telnet 這個服務(wù)器是挺危險的,而 Telnet 使用的 port number 為 23 ,所以,當(dāng)我們使用軟件去分析要送進(jìn)我們主機(jī)的封包時, 只要發(fā)現(xiàn)該封包的目的地是我們主機(jī)的 port 23 ,就將該封包丟掉去!

如果以 OSI 七層協(xié)議來說,每一層可以抵擋的數(shù)據(jù)有:

  • 第二層:可以針對來源與目標(biāo)的 MAC 進(jìn)行抵擋;
  • 第三層:主要針對來源與目標(biāo)的 IP ,以及 ICMP 的類別 (type) 進(jìn)行抵擋;
  • 第四層:針對 TCP/UDP 的端口進(jìn)行抵擋,也可以針對 TCP 的狀態(tài) (code) 來處理。

5 連上 Internet 前的準(zhǔn)備事項

5.1 用 IP 上網(wǎng)?主機(jī)名上網(wǎng)?DNS 系統(tǒng)?

DNS 這個服務(wù)的最大功能就是在進(jìn)行『主機(jī)名與該主機(jī)的 IP 的對應(yīng)』的一項協(xié)議。當(dāng)瀏覽器輸入www.baidu.com,我的計算機(jī)首先就會藉由向 DNS 主機(jī)查詢 www.baidu.com 的 IP 后,再將查詢到的 IP 結(jié)果回應(yīng)給我的瀏覽器, 那么我的瀏覽器就可以藉由該 IP 來連接上主機(jī)啦!

發(fā)現(xiàn)了嗎?我的計算機(jī)必須要向 DNS 服務(wù)器查詢 Hostname 對應(yīng) IP 的信息 喔!那么那部 DNS 主機(jī)的 IP 就必須要在我的計算機(jī)里面設(shè)定好才行,并且必須要是輸入 IP 喔,不然我的計算機(jī)怎么連到 DNS 服務(wù)器去要求數(shù)據(jù)呢?

5.2 一組可以連上 Internet 的必要網(wǎng)絡(luò)參數(shù)

一組合理的網(wǎng)絡(luò)設(shè)定需要哪些數(shù)據(jù)呢?

  • IP
  • Netmask
  • Network
  • Broadcast
  • Gateway
  • DNS
    其中,由于 Network 與 Broadcast 可以經(jīng)由 IP/Netmask 的計算而得到,因此需要設(shè)定于你 PC 端的網(wǎng)絡(luò)參數(shù), 主要就是 IP, Netmask, Default Gateway, DNS 這四個就是了!

如果你是使用 ADSL 撥接來上網(wǎng)的話,上面這些數(shù)據(jù)都是由 ISP 直接給你的,那你只要使用撥接程序進(jìn)行撥接到 ISP 的工作之后, 這些數(shù)據(jù)就自動的在你的主機(jī)上面設(shè)定完成了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 名詞延伸 通俗的說,域名就相當(dāng)于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,829評論 2 56
  • title: 網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)總結(jié)(1) tags: 網(wǎng)絡(luò) categories:筆記 date: 2017-06-1...
    行徑行閱讀 2,751評論 0 3
  • 個人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,210評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,384評論 6 174
  • [憨笑][憨笑][憨笑] 昨日七夕韻律風(fēng), 一直吹到夜三更。 聚歡離恨情難了, 今早黎明意尚濃。 [鼓掌][鼓掌]...
    小車16閱讀 138評論 0 0

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