電腦網路與作業系統 電腦網路與作業系統

電腦網路與作業系統上課教材

電腦網路與作業系統 > 課程內容 > 第 07 章 - 計算機概論 - 網路概論

第 07 章 - 計算機概論 - 網路概論

上次更新日期 2020/02/11

網路基礎是所有 Internet 的基礎!想要玩弄伺服器或者是實際在電腦教室、你的家裡進行多部網路連結,都需要知道的一些技術。 當你有任何問題時,就可以透過網路基礎的學習,來搞定不懂的地方。另外,未來無論你在資訊的哪一塊,都會用到網路, 當有人跟你說:『啊!你們家的 Layer 2 switch 是怎麼搞的?啊!你們家的 Layer 3 IP 設定是怎麼弄的?』,你該如何回答? 而且你應該會有聽過『防火牆』吧?那是什麼鬼?在防什麼東西?還有,你也聽過所謂的『封包』,那又是什麼?都來搞清楚一下! 這一堂課的內容比較偏理論,但是真的很重要!不要忽略了喔!

學習目標

  1. 認識 RJ-45 網路線的 568B 配置
  2. 認識各種網路線的等級與速度
  3. 認識 CSMA/CD 的意思
  4. 認識 hub/switch 的差別
  5. 認識 OSI 七層協定與 TCP/IP 協定
  6. 認識網路基礎的 layer2, layer3, layer4 相關訊框或封包的重要表頭資料

7.1: 網路的組成元件與相關網路媒體簡介

我們都知道,網路就是幾部電腦主機或者是網路印表機之類的周邊設備,透過網路線或者是無線網路的技術,將這些主機與設備連接起來, 使得資料可以透過網路媒體 (網路線、網路卡、集線器會交換器等硬體) 來傳輸的一種方式。請你想像一下,如果你家裡面只有電腦、印表機、傳真機等機器, 卻沒有網路連接這些硬體,那麼使用上會不會很麻煩?如果將這個場景移到需要工作的辦公室時,電腦的資料無法使用網路連接到印表機來列印,那是否很傷腦筋呢? 學完這些基本知識後,未來不要再用 USB 傳來傳去了啦!

  • 標準的乙太網路

但是,等等!我們知道硬體與作業系統其實還是不一樣的!例如 IOS 與 Android 支援的環境就不一樣。那麼網路硬體都是相同的嘛?當然不是! 在 1970 年代前後,為了解決這個煩人的資料傳輸問題,各主要資訊相關的公司都在研究各自的網路連接技術,以使自家的產品可以在辦公室的環境底下組織起來。 其中比較有名的就是全錄公司的 Ethernet 技術, 以及 IBM 研發的 Token-Ring 技術了。但是這些技術有個很大的問題,那就是它們彼此不認識對方的網路技術! 也就是說,萬一你的辦公室購買了整合 Ethernet 技術的電腦主機,但是其他的電腦卻是使用 IBM 的機器時, 想要在這兩者之間進行資料的溝通,在早期來說那是不可能的。

後來因為乙太網路申請了國際標準,所以後來許多的硬體廠商就提出支援乙太網路的硬體生產,因此乙太網路就漸漸的獨占了市場! 不過乙太網路還是有傳輸距離過短的問題,因此,後來還有所謂的光纖技術,可以達到較長距離的傳輸!不過,光纖就是貴~

請閱讀完 wiki 針對乙太網路的『歷史』與『概述』部份,如下連結,然後嘗試回到後續的問題:
  1. 乙太網路的 wiki 說明:https://zh.wikipedia.org/wiki/以太网
  2. 乙太網路的拓樸主要有那兩種?
  3. 乙太網路推出時,市面上還有哪兩種重要的網路硬體標準?
  4. 乙太網路就像門牌,這個門牌上面會有識別碼,請問識別碼 (1)名稱為? (2)佔用的資料位元數?
  5. 乙太網路 hub 與 switch 的差別是什麼?
  • 網路元件組成示意圖

如前所述,乙太網路因為申請制定了標準,因此得以大大流行。目前幾乎所有的家用、企業內部使用的網路連線方式,都是使用乙太網路的硬體。 而乙太網路的硬體主要是根據星形連線的拓樸而組成的!中心透過集線器或交換器來連結所有的節點,如下所示:

乙太網路的星形連線拓樸
  • 節點 (node):節點主要是具有網路位址 (IP) 的設備之稱, 因此上面圖示中的一般 PC、Linux 伺服器、ADSL 數據機與網路印表機等,個別都可以稱為一個 node ! 那中間那個集線器 (hub) 是不是節點呢?因為他不具有 IP ,因此 hub 不是節點。
  • 伺服器主機 (server):就網路連線的方向來說,提供資料以『回應』給用戶的主機,都可以被稱為是一部伺服器。舉例來說,google 是個 WWW 伺服器,崑山的 FTP (http://ftp.ksu.edu.tw/) 是個檔案伺服器等等。(所以,伺服器上面當然就得要有『服務』以及相關的『資料』才行!)
  • 工作站 (workstation) 或用戶端 (client):任何可以在電腦網路輸入的設備都可以是工作站,若以連線發起的方向來說,主動發起連線去『要求』資料的, 就可以稱為是用戶端 (client)。舉例來說,一般 PC 打開瀏覽器對 google 要求新聞資料,那一般 PC 就是用戶端。
  • 網路卡 (Network Interface Card, NIC):內建或者是外插在主機上面的一個設備,主要提供網路連線的卡片,目前大都使用具有 RJ-45 接頭的乙太網路卡。一般 node 上都具有一個以上的網路卡, 以達成網路連線的功能。
  • 網關 (router) 或通訊閘 (gateway):具有兩個以上的網路介面,可以連接兩個以上不同的網段的設備,例如 IP 分享器就是一個常見的網關設備。 那上面的 ADSL 數據機算不算網關呢?其實不太能算,因為數據機通常視為一個在主機內的網卡設備,我們可以在一般 PC 上面透過撥號軟體, 將數據機模擬成為一張實體網卡 (ppp) ,因此他不太能算是網關設備啦。
node, server, client, NIC, gateway 等硬體資訊,請回答下列問題:
  1. 網路連線時,通常是雙向的。網路連線發起者稱為?而回應者稱為?
  2. 這個設備通常具有兩個界面,然後可以讓兩個界面的封包交互傳遞的,這個設備稱為什麼?
  • 乙太網路線與水晶頭製作

前一段落談到各個 node 與 hub/switch 之間要用網路線連結,目前常見的網路線使用的是 RJ-45 的接頭喔!RJ-45 接頭的模樣有點像底下的圖示:

RJ-45 水晶頭示意

這種線路的接頭通常是需要工廠製作的會比較好,因為 RJ-45 線路的長度如果過長,傳輸的資訊容易有衰減的問題。 因此,目前筆者比較傾向於使用 RJ-45 資訊插座進行佈線 (資訊插座的壓制與施工比較簡單),然後以工廠製作的充膠線路直接連接桌上盒或牆上資訊插座,再直接連接到 NIC 上頭。

使用資訊插座佈線示意圖

不過,如果用在需要有特殊的長度的環境,加上網路速度並不要求到 10G 以上的環境時,還是可以透過自己處理水晶頭來建置自己的網路環境。那要怎麼壓制呢? 因為一般的網路線裡面有 4 對共 8 芯的細線,這些線路為了避免被搞混,因此都有特殊的顏色顯示。網路線兩邊的接頭最好都用所謂的『 568B 』即可。 目前的網路卡都很聰明,會自動判斷要不要『跳線』,所以,只要使用標準的 568B 的接頭即可。(關於跳線與平行線,底下會再介紹)

接頭名稱\蕊線順序12345678
568A白綠白橙白藍白棕
568B白橙白綠白藍白棕

再次說明,一般來說,只要使用 568B 的接頭即可喔!然後,那一邊才是 pin 1 呢?請將水晶頭卡榫的部份放在下方,網路線放入口朝向你自己,所以你就會看到水晶頭上面的銅線面對你, 左手邊就是 pin 1,右邊就是 pin 8 (就是上面 RJ-45 接頭的模樣),接下來將線段拉出來對齊,剪去多餘的部份,再平放入水晶頭,注意線路要整個頂到水晶頭最頂端。 最後再用壓線鉗用力壓緊!注意!真的要很用力壓緊!這樣銅線才能夠割開塑膠並與銅線接觸,這 8 芯也才能順利傳導資訊。

實做題:
  1. 請到教室前面,參考何謂資訊座,以及資訊座怎麼做出來線路。拍照並說明
  2. 請向老師拿網路線,以及兩顆水晶頭,按照上面的說法,製作出專屬於你自己的 RJ-45 網路線。
  • 乙太網路的速率與對應的線材

乙太網路最初僅有 10Mbps 的傳輸速度,現在入門款就有 1Gbps 的基本速度,高階一點的環境甚至有 10Gbps 的網路卡與相關網路媒體~ 但是,不同的乙太網路速度在連線時,還是需要有不同的線材,因為訊號傳輸的速率不同,線材製作的標準也會不一樣。 目前常見的乙太網路速度與標準的網路線等級對應大致如下:

名稱速度搭配的網路線等級
Ethernet10Mbps -
Fast Ethernet100MbpsCat 5
1G Ethernet1GbpsCat 5e / Cat 6
10G Ethernet10GbpsCat 6 / Cat 6A / Cat 7

一般市面上我們會經常看到 Cat 5e, Cat 6, Cat 6e ,至於 Cat 6A 與 Cat 7 可能較少間,其中 Cat 6A 大概是最少見的!Cat 7 說不定還比較常見。 不過,就 wiki 的說明,其實 Cat 6e 是廠商自己亂定義出來的一種非標準的線材,所以 wiki 建議大家,還是購買 cat 6 或者是 cat 7 的線路較佳。 如果你不需要太好的線路 (其實,最好一定要用好的線路!),那麼 cat 5e 其實比較好壓制!

檢查剛剛老師給你的網路線路,上面有沒有註明是 Cat 5e 或者是其他等級的字樣?因為個人的線路長短不一,你可能需要跟其他同學互相參考才行。
  • 乙太網路向下相容的狀況以及相關的機制

想一想,如果你的網路環境中,存在著 10Gbps 以及 1Gbps,包含了 Cat 5, Cat 5e 以及 Cat 6 的網路線材連結, 請問,那麼從 node A 傳輸到 node B 之間,其網路速度會以多快的速度進行?猜一猜,是 (1)上述網路的平均值,還是 (2)上述網路的最大速度還是 (3)上述網路的最低速度? 答案很簡單~就跟高速公路一樣,如果某一段塞車,那麼整體速度就會以塞車的那一段為限制值~因此,答案就是以最低速度來進行傳輸。

網路速度自動協商機制 (auto-gegotiation):

那麼你的網路媒體怎麼知道最低限制的速度是網路線材?還是網路卡呢?因為目前幾乎所有的乙太網路媒體都具有一個很特別的機制,稱為自動協商機制 (auto negotiation), 這個機制會在兩個 node 之間傳輸時,自動協商最佳可接受的速度來進行傳輸!如果 1Gbps 不能動,那就自動降一級,直到可以接受的那一級速度為止。

全雙工與半雙工 (full-duplext & half-duplex):

另外,網路線 8 芯裡面,其實只有 2 對 4 芯分兩組傳輸,一組處理傳送、一組處理接收。如果傳送與接收可以同時進行,那就稱為全雙工 (full-duplex), 如果同一時間只能進行傳輸或只能進行接收,無法同時進行,那就稱為半雙工 (half-duplex)。如果網路頻寬為 1Gbps 而有全雙工的情境下, 那總頻寬 (上傳+下載) 就可以達到 2Gbps 了!但是,單一方向最大就是 1Gbps 喔!這個要注意!此外,中心連接的媒體要是 switch 才能達到全雙工, 共享媒體的 hub 是無法達到全雙工的!

自動分辨網路線跳線或平行線 (Auto MDI/MDIX):

我們前面提到 RJ-45 的水晶頭排列方式有 568A 及 568B 兩個標準,目前比較建議使用 568B 的壓制方式。當兩邊都是同一種接頭,那種線路稱為平行線, 當兩邊為不同接頭,那就是所謂的跳線。早期 10/100 Mbps 的 fast ethernet 環境下,網路卡與媒體設備並不會自動跳線, 因此從 PC 接到 switch 要用平行線,而從 switch 到 switch 要用跳線,或者是從 PC 連接 PC 也需要使用跳線才行!否則網路會不通。 不過從 1Gbps 的乙太網卡開發之後,網卡與 switch 上面都會自動的判斷線路,該功能稱為 auto MDI 或 MDIX,因此,目前都使用平行線即可! 其他無須考慮啊!網卡都幫你想好了!

也就是說,只要你的網路是 1Gbps 的速度,那麼該設備幾乎一定會具有 Auto MDI 或 MDIX 的機制存在了!所以你不用擔心什麼跳線與平行線。 目前的主流使用的是 568B 這個水晶頭!你只要注意壓制的時候使用這個 568B 的標準即可。另外,目前大部分的情況下,大家都不是很建議你壓制水晶頭! 比較建議壓制資訊座,後面連接資訊座到設備的網卡,使用工廠壓制的線路會比較好!

7.2: 乙太網路的基礎傳輸協定: CSMA/CD

為什麼兩部主機只要串接在同一個 hub/switch 上面,就可以進行溝通呢?這個就是所謂的區域網路啊!那麼區域網路是直接透過乙太網路的傳輸機制來傳輸資料的! 而乙太網路的網卡使用的識別碼稱為 MAC 位址 (Media Access Control)。也就是說,每張網卡都有個門牌,這個門牌在巷子內 (區網),大家都知道彼此的門牌號碼! 溝通的方法為透過廣播處理!

進一步來說,那麼乙太網路的基礎傳輸協定是什麼呢?其實就是 CSMA/CD 協定!全名為:Carrier Sense Multiple Access with Collision Detection。 假設中央的網路媒體是共享的集線器 (hub) 時,那當 node A 要將資料傳送給 node B 時,網路封包資料是怎麼傳遞的呢?透過這個 CSMA/CD 的說明如下:

乙太網路 CSMA/CD 傳輸協定
  1. CS(監聽):
    要發送訊息的機器會先監聽一次共用媒體 (Carrier Sense)
  2. MA(多點傳送):
    若無人使用,就會發送訊息 (發送量通常就是 MAC 訊框的大小)!這個訊息在共用媒體上面會以廣播的方式傳遞, 所有在區域網路的機器均會接收到這個訊息,但若 destination MAC address 不是自己,就會將該訊息丟棄, 若是自己則收下來解析。
  3. CD(碰撞偵測):
    同時若有兩個機器同時送出訊息,此時將導致封包碰撞,兩個封包均會損毀。兩部機器在各自的隨機時間內, 再次的進行監聽與傳送的功能,此及碰撞偵測。

這個乙太網路的協定當初之所以會比其他的網路還要爛,原因是因為這個 CSMA/CD 本身有一些問題的緣故~這些問題後來都透過星形連線的拓樸簡化了很多狀況, 因此大家才還是接受乙太網路的發展。那麼上述的 CSMA/CD 有什麼問題呢?大概來討論一下:

  • 網路忙碌時,集線器燈號閃個不停,但我的主機明明沒有使用網路:
    透過上述的流程我們會知道,不管哪一部主機發送出訊框,所有的電腦都會接收到!因為集線器會複製一份該資料給所有電腦。 因此,雖然只有一部主機在對外連線,但是在集線器上面的所有電腦燈號就都會閃個不停!
  • 我的電腦明明沒有被入侵,為何我的資料會被隔壁的電腦竊取:
    透過上述的流程,我們只要在 C 電腦上面安裝一套監聽軟體,這套軟體將原本要丟棄的訊框資料捉下來分析,並且加以重組, 就能夠知道原本 A 所送出的訊息了。這也是為什麼我們都建議重要資料在網際網路上面得要『加密』後再傳輸!
  • 既然共享媒體只有一個主機可以使用,為何大家可以同時上網:
    這個問題就有趣了,既然共享媒體一次只能被一個主機所使用,那麼萬一我傳輸 100MB 的檔案,集線器就得被我使用 80 秒 (以 10Mbps 傳輸時),在這期間其他人都不可以使用嗎?不是的,由於標準的訊框資料在網路卡與其他乙太網路媒體一次只能傳輸 1500bytes,因此:
    • 我的 100MB 檔案就得要拆成多個小資料包,然後一個一個的傳送,
    • 每個資料包傳送前都要經過 CSMA/CD 的機制。
    所以,這個集線器的使用權是大家搶著用的!即使只有一部主機在使用網路媒體時,那麼這部主機在發送每個封包間, 也都是需要等待一段時間的 (96 bit time)!
簡單回答下列問題:
  1. 當使用共享媒體 (例如 hub) 作為網路串接中心時,由於 CSMA/CD 的哪個階段,會讓你沒有加密的資訊,被區域網路內的有心人士竊取?
  2. 在沒有加密的環境下,使用公共 Wifi AP 時,該 AP 沒有密碼讓你隨便使用,你覺得開心嘛?
  3. Hub 是全雙工還是半雙工?
  4. 乙太網路卡會將資料封裝成一個一個的包裹,這個包裹稱為訊框 (frame),這個訊框標準容量有多大?
  5. 上面談到的乙太網路訊框 (frame) 其實就是 MAC 訊框。而這個 MAC 訊框包裹上面的表頭資料 (就像信封的封面資料) 最重要的 (1)來源跟 (2)目標的什麼資訊?
  • 廣播封包

經過上面的問題回答,你現在應該要知道了,乙太網路其實就是將你要傳輸的資料拆解成為可以放入 1500bytes 大小的包裝袋內,這個包裝袋就是 MAC 訊框。 而在這個 MAC 訊框上面填上送出的來源 MAC 位置,加上接收者的 MAC 位址,這樣就可以將資料透過 CSMA/CD 傳送出去了!

等等!MAC 訊框總是得要知道對方的網卡卡號之後,才能夠送出對吧!那我怎麼知道對方的 MAC 位址呢?很簡單啦!其實是 node A 透過一個廣播封包, 這個廣播封包會帶有發送者自己的 MAC 位址,並且詢問 node B 的 IP 所在。然後接到這個封包的所有人,發現不是問自己,就會將封包丟棄, 當 node B 接到這個廣播封包,就會回覆 node A 他的 MAC 所在~於是, node A 就會知道 node B 的 MAC 位址囉。

  • Hub/Switch 的差別

現在我們知道 hub 是共享媒體,然後只能半雙工不能實現全雙工。那麼能不能使用各自獨立的線路來傳輸呢?舉例來說,以下圖為例, 當 A 要傳給 D,而 B 要傳給 C 的時候,過去如果使用 hub 時,A 跟 B 得要去搶 hub 的使用權。那如果這部媒體可以改成 A --> D 然後 B --> C 個別傳輸的話呢?可以啊!那就是 switch 這個媒體!

switch 的獨立頻寬示意圖

那怎麼實現呢?其實達成的方式就是在 switch 上面增加一個記憶體,這個記憶體會紀錄每個 switch 接口 (埠口、port) 所接的 NIC 的 MAC 位址, 當有訊框的目標指向某個已經紀錄的 MAC 位址時,這個訊框就會直接往那個對應的埠口丟去,而不會再透過 CSMA/CD 的方式去判斷與廣播。 因此,switch 可以說是每個 port 具有獨立頻寬的媒體,已經不能算是共享媒體了喔!跟 hub 差很多!

所以說,在 switch 上面,每個埠口都擁有獨立的頻寬,每個埠口均具有上傳/下載 1Gbps 的頻寬 (以 1Gbps 速度為例)。這與 hub 差異是相當大的! 所以,如果你有購買星形連線中心的媒體需求時,請務必多花個幾百元,買 switch 才好喔!不要再用 hub 了!

實做題:
  1. 前往教室前,查閱一下 hub 與 switch 的標籤部份,有沒有提到 memory 以及 backbone bandwidth 的數據
  2. 在通電的情境下,如果差同一條網路線插入同一個 switch 或 hub,會出現什麼狀態?
  3. switch 有沒有一個 manage port 呢?
  4. 查閱一下 switch 上面有沒有 RJ-45 與光纖的接頭呢?
簡易回答下列問題:
  1. 有一台 8 port 的設備,我不知道他是 hub 還是 switch。上面已經接了 4 台裝置,而且每台裝置的 IP 我都知道了。 那你怎麼判斷這個設備內部使用的是 hub 還是 switch 的功能? (假設你只能看燈號的顯示來確認而已)
  2. 雖然說 switch 已經避免了 CSMA/CD 很多情況的封包碰撞問題。但是還是有可能產生碰撞的行為! 想一想,如果 A 與 B 都要將資料傳給 D 的時候,封包有沒有可能碰撞?
  • 訊號衰減的問題

另外,在佈線的時候你也需要注意,一般來說,當你的網路線拉的線段太長,然後水晶頭壓制的不夠好,這個時候,電子訊號由於衰減的關係, 可能會造成連線品質不良,因此網路情況就會時通時不通~一般來說, Cat 5e 的長度然後速度達到 1Gbps 的情況,可以拉線到 100m 左右, 不過實際佈線時,能夠達到 90m 就已經是很棒的情況了。

如果佈線是 10Gbps 的話,那麼肯定需要使用到 Cat 6a 等級的線路較佳,因為線長可以達到 100m 左右之外,未來可以使用到 10Gbps 的速度! 要注意,短距離 (可能小於 1.5m) 的情況下,即使是 Cat 5e 的線路,依舊有可能達到 10Gbps 的連線速度 (在實際測試中,確實可以達成此速度), 不過,稍微拉長一點之後,可能網路品質就會下降到 1Gbps 了!為了未來著想,要拉長距離的線路,最好還是使用 Cat 6 以上等級的網路線較佳。

那『為什麼市面上販賣的網路線,通常絕對長於 1.5m 呢?』難道沒有短線的需求?查了查 wiki , 底下這一段文字相當有趣:

靠近水晶頭的地方,網路線的八條芯被從線路中獨立出來,被捋平了。此時這 8 芯將失去了雙絞線的特性。 線越短,未絞線/正常絞線的比例會越來越大,這樣這段線的電氣效能會有降低。此原因導致有線纜最短長度為 1.5m 或 1m 來保證其電氣效能。

雖然自己壓制短線材是沒問題,不過使用上可能需要注意,不要拿來作為重要應用!自己的 PC 這樣處理當然沒問題!另外, Cat 5e 的線材還能自己壓制, Cat 6 以上等級的線路,盡量使用資訊插座,不用自己壓制水晶頭~而且 Cat 5e 與 Cat 6 等級的水晶頭並不一樣,Cat 6 等級的水晶頭很難壓制! 即使壓制成功,其電氣效果可能也大打折扣。所以,超過 Cat 6 以上等級的網路線,就買工廠製作的線材,如果要自己壓制,請盡量使用資訊插座吧!

簡單回答下列問題:
  1. 如果要達到 10Gbps 的速度,最好使用哪種等級的網路線材?
  2. 一般網路線的佈線長度極限大概可以到多長 (假設 Cat 5e 且要達到速度為 1Gbps 的傳輸速率情況下)
  3. 為了方便壓制水晶頭,網路線 8 芯可以拉出來拉長一點,方便製作!這樣是對的嘛?

7.3: OSI 網路七層協定

就如同語言一樣,如果沒有一致的標準,那麼大家各講各的,誰也聽不懂誰的語言~那就無法溝通了!網路世界也一樣,除了上述的硬體標準 (乙太網路) 之外, 還有所謂的網路 OSI 七層協定 (Open System Interconnection, OSI) 的資料,目的在指導作業系統想要加入網路時,所需要撰寫的網路連線程式模型。 這個 OSI 七層協定只是在提出一個加入網路所需要的模型與概念,只要能夠參考 OSI 七層協定的規範所設計出來的作業系統, 理論上就可以加入以 OSI 七層協定為共同標準的網路世界之意。 (有點像目前的強勢語言還是英文,所以出國在外,大家都用英文溝通是一樣的意思。)

  • 分層堆疊

就跟我們在前面提到的資訊座的概念差不多,分段處理,好處是,有問題時,抽換掉有問題的,安插進沒問題的,這樣就可以持續運作! 而不需要全部都改寫~這就是分層堆疊的好處。基本上, OSI 七層協定的概念有點像底下這樣:

OSI 七層協定的關係

整個網路程式構成分為七個層級,每個層級有各自的定義,越底層就越接近硬體組成,越上層就越接近應用程式的呼叫行為。 那麼為什麼不要將整組程式碼寫成一個大架構就好,為啥要分層呢?如果各位有寫過程式語言,應該就會知道,如果程式碼夠大的話, 那麼以副程式或函數去呼叫暨有的程式碼,然後主架構只要寫副程式或函數的名稱與參數即可,這樣主程式的維護比較方便, 而各個副程式或函數的修改與抽換,也會比較簡單~這就是網路堆疊層級當初思考的概念~你可以讓不同的人開發的各層級程式組合在一塊, 開發與整合的效率會比較好!

不論是寫程式、寫網頁、寫 PHP 等等,會持續用到的部份,請盡量使用副程式或函數來處理,要用到的時候就呼叫, 這樣好處很多!因為除了你不用改寫之外,未來這段程式碼如果有優化,任何呼叫到這段程式碼的其他程式,都可以享受到優化後的成果! 而且維護也會變得很方便!

注意上面的圖示,其實每個層級只負責自己層級的資料收發,如果是傳送方,就會將資料再往下一層塞。如果是接收方,則資料會再往上一層塞, 最終資料就會送給主機系統的應用程式使用了。有沒有像整人遊戲呢?一層一層的將重要資料包裹起來,你在一層一層的拆解開來這樣!

另外請注意,網路功能是作業系統提供的!因此,你如果想要開發網路程式,那麼就得要使用具有網路功能的作業系統才行!目前的作業系統絕對都是網路作業系統了! 因此,你才可以在應用程式裡面呼叫各種網路函數與功能喔!

  • 每一層的表頭資料 (header) 與實際資料內容

先有人類社會的郵務系統之後,才有網路系統的出現!網路系統很多概念都是從郵務系統來的!所以,你可以這樣想,上述過程中的每個層級 (七層) , 每一層都是一個包裹, 這個包裹總是有封面,這個封面就會寫重要的資訊,最重要的當然就是來源與目標的發送者與接收者所需要的最重要資料了!這個封面就像是包裹上面的: To 與 From 囉! 這就是表頭資料囉!

OSI 七層與表頭資料

OSI 七層協定的七層,從底層往上層的名稱如上圖所示。當應用程式,例如瀏覽器或者是 WWW 伺服器軟體將資料收集完畢之後, 就會將資料塞入應用層,應用層會在表頭記載該資料的特性,然後再往底下塞給表現層,表現層又寫一個自己的表頭資料,再往下塞給會談層, 這樣一層一層的往下塞,直到最底層的實體層,轉成電子訊號之後,就交給作業系統,然後提交給網路卡進行傳送。那接收端的系統從網卡接收到這些訊號之後, 再由實體層、鍊結層一個一個的拆解,最終再由應用層將資料傳輸給應用程式。講是很慢,系統直接實做的速度則非常快速。

分層負責內容
Layer 1
實體層
Physical Layer
由於網路媒體只能傳送 0 與 1 這種位元串,因此實體層必須定義所使用的媒體設備之電壓與訊號等, 同時還必須瞭解資料訊框轉成位元串的編碼方式,最後連接實體媒體並傳送/接收位元串。
Layer 2
資料鏈結層
Data-Link Layer
這一層是比較特殊的一個階層,因為底下是實體的定義,而上層則是軟體封裝的定義。因此第二層又分兩個子層在進行資料的轉換動作。 在偏硬體媒體部分,主要負責的是 MAC (Media Access Control) ,我們稱這個資料包裹為 MAC 訊框 (frame), MAC 是網路媒體所能處理的主要資料包裹,這也是最終被實體層編碼成位元串的資料。MAC 必須要經由通訊協定來取得媒體的使用權, 目前最常使用的則是 IEEE 802.3 的乙太網路協定。

至於偏向軟體的部分則是由邏輯連結層 (logical link control, LLC) 所控制,主要在多工處理來自上層的封包資料 (packet) 並轉成 MAC 的格式, 負責的工作包括訊息交換、流量控制、失誤問題的處理等等。
Layer 3
網路層
Network Layer
這一層是我們最感興趣的囉,因為我們提及的 IP (Internet Protocol) 就是在這一層定義的。 同時也定義出電腦之間的連線建立、終止與維持等,資料封包的傳輸路徑選擇等等,因此這個層級當中最重要的除了 IP 之外,就是封包能否到達目的地的路由 (route) 概念了!
Layer 4
傳送層
Transport Layer
這一個分層定義了發送端與接收端的連線技術(如 TCP, UDP 技術), 同時包括該技術的封包格式,資料封包的傳送、流程的控制、傳輸過程的偵測檢查與復原重新傳送等等, 以確保各個資料封包可以正確無誤的到達目的端。
Layer 5
會談層
Session Layer
在這個層級當中主要定義了兩個位址之間的連線通道之連接與掛斷,此外,亦可建立應用程式之對談、 提供其他加強型服務如網路管理、簽到簽退、對談之控制等等。如果說傳送層是在判斷資料封包是否可以正確的到達目標, 那麼會談層則是在確定網路服務建立連線的確認。
Layer 6
表現層
Presentation Layer
我們在應用程式上面所製作出來的資料格式不一定符合網路傳輸的標準編碼格式的! 所以,在這個層級當中,主要的動作就是:將來自本地端應用程式的資料格式轉換(或者是重新編碼)成為網路的標準格式, 然後再交給底下傳送層等的協定來進行處理。所以,在這個層級上面主要定義的是網路服務(或程式)之間的資料格式的轉換, 包括資料的加解密也是在這個分層上面處理。
Layer 7
應用層
Application Layer
應用層本身並不屬於應用程式所有,而是在定義應用程式如何進入此層的溝通介面,以將資料接收或傳送給應用程式,最終展示給使用者。

事實上, OSI 七層協定只是一個參考的模型 (model),目前的網路社會並沒有什麼很知名的作業系統在使用 OSI 七層協定的聯網程式碼。 那...講這麼多幹嘛?這是因為 OSI 所定義出來的七層協定在解釋網路傳輸的情況來說,可以解釋的非常棒,因此大家都拿 OSI 七層協定來做為網路的教學與概念的理解。 至於實際的聯網程式碼,那就交給 TCP/IP 這個玩意兒吧!

此外,我們經常講到『網路基礎』或者是『防火牆』或者是『第二層交換器』或『第三層交換器』等網路專業術語中,會用到的層級概念, 都是使用 OSI 七層協定的規範!而所謂的『封包過濾式防火牆』主要就是在控制第 2, 3, 4 層的封包過濾,而『網路基礎』的概念,則也是著重在 2, 3, 4 層的介紹與使用的! 所以,你一定要知道這七層協定以及各協定的表頭資料喔!當然,只要知道 layer 2, 3, 4 就是了!

簡單回答下列問題:
  1. 在 OSI 七層協定裡面,說明 Layer 2, 3, 4 各層的名稱
  2. 第二層的訊框名稱為何?
  3. 第三層的封包名稱為何?
  4. 第四層的封包名稱為何 (主要有兩個)?
  5. 路由概念是在第幾層?

7.4: TCP/IP 網際網路協定

OSI 七層協定規範的網路層級相當清晰,不過架構太過嚴謹,就是一個網路設計的指引模型。後來美國國防部尖端研究企劃署 (Defense Advanced Research Project Agency, DARPA) 依據 OSI 七層協定開發出一套網路系統,當時稱為 ARPANET 網路。後來 DARPA 在 1980 年代推出 TCP/IP 技術後,將網路分為兩個部份,一個仍給軍方使用, 另一個則與柏克萊 (Berkeley) 大學合作開發,並將他們的 TCP/IP 技術整合到著名的 BSD Unix 系統內,因此,在早期, TCP/IP 幾乎就是學術網路, 原因就是這樣。

因為 TCP/IP 的架構比較鬆散,將原本的七層規範簡化為四層,只要作業系統的網路功能符合 TCP/IP 的規範,就能夠加入該網路系統中。 後來更由於 email 的流行,讓學術網路風行於各大學間~在 80 年代後期,更由於 Web 以及超連結的發展,讓商業公司投入 TCP/IP 的領域中! 因此,後來才有網路的大爆發!這個 TCP/IP 的技術,也被稱為 Internet (網際網路) 囉!所以,學名是 TCP/IP,而俗名就稱為網紀網路 (Internet), 這兩者其實是同意字喔!

那麼 OSI 七層與 TCP/IP 的四層差別為何呢?可以參考下圖的解釋:

OSI 與 TCP/IP

TCP/IP 將 OSI 最上層的三層結合成為一個應用層,中間的傳輸、網路層則保留,最底層的硬體與鍊結層結合成為鍊結層,所以僅有 4 層而已。 由於應用層偏向於應用程式的呼叫使用,因此基礎網路大概就是底下三層,其實對應起來,也就是 OSI 七層協定的 layer 2, 3, 4 啦!

如同前幾個小節提到的,在 TCP/IP 當中,鍊結層最重要的資料其實是 layer 2 的 MAC 訊框資料,而網路層最重要的其實是 IP 封包 (packet) 與表頭資料, 傳輸層有兩種重要的封包,一個是可靠連線的 TCP 封包,一個是非連接導向的 UDP 封包。至於應用層的相關封包協定,則大多與網路服務有關! 那已經是應用程式使用的層級,不算是基礎網路概念。不過比較重要的網路服務協定你還是得要注意一下!

  • Layer 2 的 MAC 訊框表頭資料

MAC 訊框的封裝有點像底下這樣:

MAC 的表頭資料

最需要注意的就是來源與目標的 MAC 位址了!共佔有 6bytes 的大小,每個 bytes 有兩個 16 進位的數值,因此共有 6 組各 2 個 16 進位的資料喔!

我們在乙太網路 CSMA/CD 的小段落裡面談到過廣播封包,要注意的是,廣播封包並不會跨越不同的路由界面,也就是說,你的 MAC 位址, 最多只會讓同一區網內的用戶查詢到,在區網外部的 node ,並不會知道你的 MAC 喔!

MAC 的表頭資料

如上圖所示,MAC 是不會跨路由 (就是不會跨越不同網路界面的意思!)

簡單回答下列問題:
  1. 在區域網路裡面主要是透過網卡對網卡溝通。而網卡認網卡的功能,指的是認 IP 位址還是認 MAC 位址?
  2. 請在 windows 環境下,查出你的網卡卡號 (MAC address)
  • Layer 3 的 IP 封包表頭資料

IP 封包的表頭資料有點像底下的模樣:

Version IHL Type of Service Total Length
Identification Flags Fragmentation Offset
Time To Live Protocol Header Checksum
Source Address
Destination Address
Options Padding
Data

最重要的當然就是上表中的來源位址與目標位址 (Source Address and Destination Address)!因為整個封包的寬度為 32 bits,所以來源位址與目標位址的長度也就是 32 位元。 亦即是 32 個 0 與 1 的組成。另外還有兩個重要的項目值得大家理解一下:

  • Time To Live (TTL, 存活時間): 表示這個 IP 封包的存活時間,範圍為 0-255。當這個 IP 封包通過一個路由器時, TTL 就會減一,當 TTL 為 0 時,這個封包將會被直接丟棄。說實在的,要讓 IP 封包通過 255 個路由器,還挺難的~ ^_^
  • Protocol Number(協定代碼): 來自傳輸層與網路層本身的其他資料都是放置在 IP 封包當中的,我們可以在 IP 表頭記載這個 IP 封包內的資料是啥, 在這個欄位就是記載每種資料封包的內容啦!在這個欄位記載的代碼與相關的封包協定名稱如下所示:
    IP 內的號碼封包協定名稱(全名)
    1ICMP (Internet Control Message Protocol)
    2IGMP (Internet Group Management Protocol)
    3GGP (Gateway-to-Gateway Protocol)
    4IP (IP in IP encapsulation)
    6TCP (Transmission Control Protocol)
    8EGP (Exterior Gateway Protocol)
    17UDP (User Datagram Protocol)

我們現在知道網際網路的門牌指的是 IP 位址,有公開的 IP 位址理論上就可以架設網站。但是其實乙太網路傳輸傳的是 MAC 訊框, 而 MAC 訊框表頭資料裡面有網卡卡號 (MAC 位址)。問題來了,那麼你怎麼知道 IP 與 MAC 的對應?這就需要用到 ARP 協定 ( Address Resolution Protocol)。 ARP 會發送一個廣播封包,詢問某個 IP 的網卡卡號,具有正確 IP 的 node 就會回報自己的卡號了!

簡單回答下列問題:
  1. 在 windows 系統下,如何使用 cmd 命令提示字元找到 IP 位址?
  2. 老師會告訴你某個區網內的 IP,請問你怎麼找到該 IP 的網卡卡號?
  3. 你能不能知道 google 的 IP?那你能不能知道 google 的 MAC 位址?
  4. 你找到的 IP 共有幾組數字?你覺得最大、最小的數值會是多少?
  • Layer 3 ICMP 封包

在 TCP/IP 的圖示中,我們在 layer 3 看到了 IP 協定還有一個 ICMP 協定~這個 ICMP 是在幹麻的呢?基本上,ICMP 是一個錯誤偵測與回報的機制, 最大的功能就是可以確保我們網路的連線狀態與連線的正確性!ICMP 也是網路層的重要封包之一,不過,這個封包並非獨立存在,而是納入到 IP 的封包中!也就是說, ICMP 同樣是透過 IP 封包來進行資料傳送的!

一般來說,我們經常會使用一個 ping 指令來確認對方 IP 是否存在,這個 ping 其實有點像乒乓球啦~我丟個 ICMP 的請求訊息給對方, 對方如果活著,就丟回一個回應訊息給我~同時告知我這來去之間花了多少時間~這就是 ICMP 的最重要功能之一!因此,ICMP 其實有很多訊類別 (type) 的! 最重要的有兩個,就是剛剛談到的請求與回應囉!

類別代號類別名稱與意義
0Echo Reply (代表一個回應信息)
3Destination Unreachable (表示目的地不可到達)
4Source Quench (當 router 的負載過高時,此類別碼可用來讓發送端停止發送訊息)
5Redirect (用來重新導向路由路徑的資訊)
8Echo Request (請求回應訊息)
11Time Exceeded for a Datagram (當資料封包在某些路由傳送的現象中造成逾時狀態,此類別碼可告知來源該封包已被忽略的訊息)
12Parameter Problem on a Datagram (當一個 ICMP 封包重複之前的錯誤時,會回覆來源主機關於參數錯誤的訊息)
13Timestamp Request (要求對方送出時間訊息,用以計算路由時間的差異,以滿足同步性協定的要求)
14Timestamp Reply (此訊息純粹是回應 Timestamp Request 用的)
15Information Request (在 RARP 協定應用之前,此訊息是用來在開機時取得網路信息)
16Information Reply (用以回應 Infromation Request 訊息)
17Address Mask Request (這訊息是用來查詢子網路 mask 設定信息)
18Address Mask Reply (回應子網路 mask 查詢訊息的)

簡易實做底下題目:
  1. Windows 系統下:使用 ping 區網內正常存在的 IP,並查閱出現的訊息。
  2. windows 系統下:找到 ping 的參數,讓 ping 不間斷的一直嘗試跟對方互通訊息
  • Layer 3 的網關 (gateway) 功能

現在我們知道區域網路內透過乙太網路的 CSMA/CD 以及 IP 協定,就可以進行資料的傳輸,主要是透過區域網路內的廣播功能啦! 那如果不在區域網路內呢?不在區域網路內就不能透過廣播直接傳送與接收啊!現在換位思考一下,如果是郵務系統,該怎麼處理?

你有個包裹要寄給同巷子 (區域網路內) 的一戶人家,那麼應該不用郵票,只要填寫正確的收件人與送件人,然後拿著包裹跑到同巷子的那一戶人家, 交給他們家人即可。這個動作就是類似『廣播』的功能。

那這個包裹如果收件人不在巷子內呢?那你就得要將包裹 (同樣的包裹,不需要額外增加什麼資訊) 拿到巷子內的郵局 (或小 7 啊!), 填好單子,交給郵務人員,你就可以回家了!這個包裹怎麼送?那不是你的問題,交給郵局去處理就好了!你唯一要注意的, 就是 from 與 to 要寫的正確才行。

Gateway 的功能就是郵局!幫你進一步將包裹送出去的,就是路由 (郵局人員),那是郵局人員的功能,你無須知道啊!你只要知道拿到正確的郵局去就好了! 不要隨便拿去隔壁鄰居家,人家會當你是垃圾包裹,會被直接丟棄的!因此,一個巷子 (區域網路) 內,如果有需要向外連接資訊, 那麼這個巷子,就需要有郵局 (gateway)!這樣理解否?

簡單實做底下各題:(注意 Linux 指令用 --help 而 windows 指令用 /? 查詢參數的意義喔!)
  1. 在 windows 底下,如何透過 cmd 找出你的 gateway
  2. 在 windows 底下,使用 tracert -d IP 追蹤一下 gateway 的狀態
  3. 在 windows 底下,使用 tracert -d -w 1 168.95.1.1 追蹤一下外部 IP 的網關狀態

另外,目前台灣地區的 IP 核發情形請參考底下的連結:

  • Layer 4 的 TCP 封包

網路層的 IP 封包只負責將資料送到正確的目標主機去,但這個封包到底會不會被接受,或者是有沒有被正確的接收, 那就不是 IP 的任務啦!那是傳送層的任務之一。 傳送層有兩個重點, 一個是連接導向的 TCP 封包,一個是非連接導向的 UDP 封包,這兩個封包很重要啊!資料能不能正確的被送達目的, 與這兩個封包有關喔!

Source Port Destination Port
Sequence Number
Acknowledge Number
Data
Offset
Reserved Code Window
Checksum Urgent Pointer
Options Padding
Data

上面的封包資料當中,最重要的就是來源與目標的埠口 (port):

  • Source Port & Destination Port (來源埠口 & 目標埠口)
    如果說 IP 位址是網路主機的門牌號碼,那麼 port 就是該門牌上面的樓層~你將包裹寄到接收端,接收端這棟大樓你得知道你是傳送到第幾樓對吧? 這就是 port。而 port 的啟用則是程式功能。舉例來說, WWW 伺服器軟體執行後,會主動的將 port 80 啟用,而當你在用戶端使用瀏覽器這個軟體時, 瀏覽器也會啟用一個 port。因此,最終來源與目標的 IP 位址,搭配來源與目標的 port 號,就可以達成連線。
  • Sequence Number (封包序號)
    由於 TCP 封包必須要帶入 IP 封包當中,所以如果 TCP 資料太大時(大於 IP 封包的容許程度),就得要進行分段。這個 Sequence Number 就是記錄每個封包的序號,可以讓收受端重新將 TCP 的資料組合起來。
  • Acknowledge Number (回應序號)
    為了確認主機端確實有收到我們 client 端所送出的封包資料,我們 client 端當然希望能夠收到主機方面的回應,那就是這個 Acknowledge Number 的用途了。當 client 端收到這個確認碼時,就能夠確定之前傳遞的封包已經被正確的收下了。
  • Code (Control Flag, 控制標誌碼)
    當我們在進行網路連線的時候,必須要說明這個連線的狀態,好讓接收端瞭解這個封包的主要動作。這可是一個非常重要的控制碼喔! 這個欄位共有 6 個 bits ,分別代表 6 個控制碼,若為 1 則為啟動。分別說明如下:
    旗標名稱旗標意義
    URG(Urgent)若為 1 則代表該封包為緊急封包, 接收端應該要緊急處理,且圖 2.4-1 當中的 Urgent Pointer 欄位也會被啟用。
    ACK(Acknowledge)若為 1 代表這個封包為回應封包, 則與上面提到的 Acknowledge Number 有關。
    PSH(Push function)若為 1 時,代表要求對方立即傳送緩衝區內的其他對應封包,而無須等待緩衝區滿了才送。
    RST(Reset)如果 RST 為 1 的時候,表示連線會被馬上結束,而無需等待終止確認手續。這也就是說, 這是個強制結束的連線,且發送端已斷線。
    SYN(Synchronous)若為 1,表示發送端希望雙方建立同步處理, 也就是要求建立連線。通常帶有 SYN 標誌的封包表示『主動』要連接到對方的意思。
    FIN(Finish)若為 1 ,表示傳送結束,所以通知對方資料傳畢, 是否同意斷線,只是發送者還在等待對方的回應而已。
    其中你要特別注意的是 SYN 與 ACK 喔!後續還會說明一下這個階段的功能!
  • Layper 4 TCP / UDP 封包內的埠口

由圖示你也看得出來,目標與來源埠口 (port) 的號碼其實是由 16 位元所控制,因此是 2 的 16 次方,所以埠口號碼可以從 0 ~ 65535 號,用完就沒有了! 不過埠口是會回收的。舉例來說,你的用戶端使用瀏覽器對外連線,系統會自動的發配沒有使用中的埠口給瀏覽器利用來連線。 當瀏覽器的連線結束 (資料從 server 下載完畢後,該條連線就中斷了),此時,該埠口就會回收了!

同時也再次強調,系統不會主動幫你隨便起個埠口來連線,而是透過軟體程式的執行,才會啟動某些埠口!所以,想要關閉某些埠口, 當然就是得要關閉某些服務的意思。舉例來說,如果你的系統被植入木馬而導致系統開了後門 (就是被啟動某些 port 在監聽 cracker 的連線需求)。 此時你要關閉該埠口,當然就得要殺掉木馬程式囉!不然是關不起來的。

另外,某些軟體啟用的埠口是大家公定的,例如 WWW 放行在 port 80, https 放行在 port 443 等等。通常小於 1024 底下的埠口都是大家留給系統或者是特殊服務應用的, 這些埠口需要 root 的權限才能夠啟用。至於大於 1024 以上的埠口,通常就隨機留給用戶端功能來使用。常見的服務埠口如下:

連接埠口服務名稱與內容
20FTP-data,檔案傳輸協定所使用的主動資料傳輸埠口
21FTP,檔案傳輸協定的命令通道
22SSH,較為安全的遠端連線伺服器
23Telnet,早期的遠端連線伺服器軟體
25SMTP,簡單郵件傳遞協定,用在作為 mail server 的埠口
53DNS,用在作為名稱解析的領域名稱伺服器
80WWW,這個重要吧!就是全球資訊網伺服器
110POP3,郵件收信協定,辦公室用的收信軟體都是透過他
443https,有安全加密機制的WWW伺服器

另外,再次強調,網路是雙向的,有 Server 跟 client 喔!所以,網路連線會有底下的狀態喔:

  • IP1:port1 <--> IP2:Port2 稱為網路的 socket!
嘗試回答下列問題:
  1. TCP 封包上面有兩個重要的號碼,英文名稱為何?
  2. 如果你是主動發起連線的 TCP 封包,那麼 code 應該要帶有什麼旗標?
  3. 如果你是需要回應發起者的 TCP 封包,那麼 code 又應該要帶有什麼旗標?
  4. 在 cmd 下,使用 netstat 看看有沒有相關的參數與指令來查看連線狀態
  • Layer 4 TCP 封包的三向交握確認功能

TCP 被稱為可靠的連線封包,主要是透過許多機制來達成的,其中最重要的就是三向交握的功能。當然, TCP 傳送資料的機制非常複雜, 有興趣的朋友請自行參考相關網路書籍。OK,那麼如何藉由 TCP 的表頭來確認這個封包有實際被對方接收,並進一步與對方主機達成連線? 我們以底下的圖示來作為說明。

TCP 封包的三向交握

在上面的封包連接模式當中,在建立連線之前都必須要通過三個確認的動作,所以這種連線方式也就被稱為三向交握(Three-way handshake)。 那麼我們將整個流程依據上面的 A, B, C, D 四個階段來說明一下:

  • A:封包發起
    當用戶端想要對伺服器端連線時,就必須要送出一個要求連線的封包,此時用戶端必須隨機取用一個大於 1024 以上的埠口來做為程式溝通的介面。然後在 TCP 的表頭當中,必須要帶有 SYN 的主動連線(SYN=1),並且記下發送出連線封包給伺服器端的序號 (Sequence number = 10001) 。

  • B:封包接收與確認封包傳送
    當伺服器接到這個封包,並且確定要接收這個封包後,就會開始製作一個同時帶有 SYN=1, ACK=1 的封包, 其中那個 acknowledge 的號碼是要給 client 端確認用的,所以該數字會比(A 步驟)裡面的 Sequence 號碼多一號 (ack = 10001+1 = 10002), 那我們伺服器也必須要確認用戶端確實可以接收我們的封包才行,所以也會發送出一個 Sequence (seq=20001) 給用戶端,並且開始等待用戶端給我們伺服器端的回應喔!

  • C:回送確認封包
    當用戶端收到來自伺服器端的 ACK 數字後 (10002) 就能夠確認之前那個要求封包被正確的收受了, 接下來如果用戶端也同意與伺服器端建立連線時,就會再次的發送一個確認封包 (ACK=1) 給伺服器,亦即是 acknowledge = 20001+1 = 20002 囉。

  • D:取得最後確認
    若一切都順利,在伺服器端收到帶有 ACK=1 且 ack=20002 序號的封包後,就能夠建立起這次的連線了。
  • Layer 4 的 UDP 封包

相對於 TCP 封包的判斷機制一大堆,UDP 封包則相對的簡單很多喔!來看看 UDP 封包的表頭資料:

Source Port Destination Port
Message Length Checksum
Data

幾乎只保留來源與目標埠口耶~不用判斷封包的發起狀態或回應狀態 (ACK/SYN)

至於 UDP 封包由於不需要確認對方是否有正確的收到資料,故表頭資料較少,所以 UDP 就可以在 Data 處填入更多的資料了。同時 UDP 比較適合需要即時反應的一些資料流,例如影像即時傳送軟體等,就可以使用這類的封包傳送。也就是說,UDP 傳輸協定並不考慮連線要求、連線終止與流量控制等特性, 所以使用的時機是當資料的正確性不很重要的情況,例如網路攝影機!

能不能用上課是否具有『互動』來解釋 TCP 與 UDP 封包的可靠連線與非連接導向的特性?
  • 針對 chrome 的 QUIC 特性

TCP 封包與 UDP 封包是有差異的,一般穩定連線都是採用 TCP,而非連接則使用 UDP。但是 UDP 速度較快,google chrome 漸進的採用 UDP 封包來傳送 youtube,在某些阻擋 UDP 封包的防火牆範圍內, chrome 的速度好像會慢一點,原因就是這個問題。請將 chrome 的這個 QUIC 功能關閉看看 (chrome://flags/)。

7.5: 課後練習

作業上傳時的注意事項:

  1. 伺服器的詳細資料,以及相關傳輸軟體設定,請參考第一章的 1.5 節的內容。
  2. 可以使用 MS office 的 word 或者是 libreoffice 的 writer 等軟體來撰寫你的作業,作業檔名可以使用 .doc, .docx 或者是 .odt 或者是 pdf 等格式,均可接受。
  3. 若作業中有圖檔,請將圖檔降低水平解析度到 800 像素以下再貼到文章中,檔案容量以不超過 2Mbytes 為限。
  4. 檔名請設定為: os_4XXXCYYY_unit07.doc (4XXXCYYY 是你的學號,請填正確,有分大小寫,請確認)
  5. 請上傳到你家目錄底下的 os 目錄中 (若不存在,請自行建立該目錄)

開始本章節題目:

  1. 上課時需要拍照說明的部份:
    1. 貼上教室前資訊座的照片,並說明怎麼製作資訊座的線路
  2. 目前區域網路內,使用 hub/switch 作為連接各節點的網路拓樸稱為什麼拓樸類型?
  3. 乙太網路以及 layer 2 的 MAC 訊框中,在表頭資料中,作為識別碼的 MAC address 其佔用的資料長度為多少 bytes? 此外,請將你操作的 windows 透過 cmd 界面,找出你的乙太網路卡的 MAC 位址,並且拍照下來。
  4. 把 RJ-45 水晶頭直立起來,頭朝上方,銅線的部份面對你自己,如果是 568B 的標準,那麼從左到右的 8 芯顏色分別為?
  5. 如下圖所示的連線,PC2 連線到 Server1 的網路速度被回報速度老是僅有 100Mbps 而已。不過管理員測試過,從 Server1 到 PC1 之間的速度可達 1Gbps。 你覺得可能有哪些地方應該要檢查是否出問題了? (沒有固定答案)?
  6. 承上,你可以如何測試上面你自己提出的可能的問題與解答?且你手邊並沒有額外的工具時。
  7. 你的網路媒體 (switch, PC, NIC, printer...) 全部都是 1Gbps 以上等級。那你的網路線至少要挑什麼等級以上的?
  8. 用你的話來說明什麼是全雙工與半雙工? (不要用抄寫的!)
  9. 簡易說明 CSMA/CD 的運作流程。
  10. Layer 2 的 hub 跟 switch 有什麼重要的差別?
  11. 在 OSI 七層協定裡面,說明 Layer 2, 3, 4 各層的名稱
  12. 第二層的訊框名稱為何?
  13. 第三層的封包名稱為何?
  14. 第四層的封包名稱為何 (主要有兩個)?
  15. 關於第四層的 port 問題:(針對 IPv4 版本)
    1. 埠口號碼的範圍是幾號之間?
    2. 特權埠口 (就是只有用 root 才能夠啟用的埠口) 號碼的範圍
    3. 用戶端隨機取用的埠口號碼範圍
    4. http, https, FTP, ssh 協定所使用的埠口號碼為多少?
  16. 針對第四層的兩個主要封包協定問題:
    1. 哪一種封包是可靠的連接封包,具有三向交握的確認機制
    2. 哪一種封包為非連接導向的封包,常用於即時影音
    3. 哪一種封包的傳輸速度可能比較快
  17. 通常用來查詢網路狀態的是哪種封包?放在 OSI 的第幾層?
  18. TCP/IP 協定只有 4 層,請將這四層寫下來,同時每一層對應 OSI 七層協定的哪幾層?
  19. 你不能知道 www.ksu.edu.tw 這部主機的網卡卡號,原因是什麼?
  20. IP 封包表頭的 TTL 有什麼作用?
  21. 你能不能找出區域路內網路印表機的網卡卡號?(假設這個 printer 的 IP 為 192.168.31.250)。請簡單說明流程。
  22. 簡易說明三向交握的流程
  23. 我的主機具有 IPA ,透過瀏覽器啟動 PortA 來連線到 Web 伺服器。Web 伺服器具有 IPW 且啟用了 port 80 作為網頁伺服器。 請問 (A)在我的主機上,以『本機 <--> 遠端主機』來撰寫 socket pair。 (B)在 Web 伺服器上,以『本機 <--> 遠端主機』來撰寫socket pair。 也因為這個特性,所以網路追蹤時,要特別注意雙向資料。

7.6: 本章事前準備工作

本章節需要使用到網路的介紹,最好能夠在上課前準備底下這些東西:

  1. 準備 24port 具備網管的 switch 與 8port 不具網管的 switch
  2. 準備 cat 5e 的 100m 軟線,提供學生壓線練習
  3. 準備 5 到 10 隻壓線鉗,提供學生壓線使用
  4. 準備 100 到 200 顆 cat 5e 水晶頭
  5. 準備一個資訊座,提供學生參考而已,不會實際作為。
  6. 準備至少一組測線器,並注意有沒有電力!