[Note] 有關網路:Computer Networking – Introduction to Networking

此篇主要是紀錄 Coursera 平台上的課程 Google IT Support Professional Certificate 中 The Bits and Bytes of Computer Networking 的第一個星期的上課筆記,大致上是一些網路設備和網路模型的介紹。其他的預期要寫的筆記也一併附上,未來整理完成了下方文字可以直接連結到該筆記:

  • The Network Layer
  • The Transport and Application Layers
  • Networking Services
  • Connecting to the Internet
  • Troubleshooting and the Future of Networking

這次課程名稱如果丟 Google 翻譯還蠻妙,叫做「電腦網路的點點滴滴」,怎麼聽起來意外有文學氣息XDD 雖然不太確定是不是真的這麼翻譯,但我還蠻喜歡的。


目錄


The TCP/IP Five-Layer Network Model

TCP/IP 參考模型 Five-Layer Network Model

實體層 physical layer

基本上就和它本身的名字很像,看得到摸得到物理層級的實體,像是網路線啦或是接頭等等,確保資料可以透過各種實體進行傳輸。

資料連結層 data link layer

資料連接層介於實體層和網路層之間,在這一層會解釋實體層發送的信號,讓網路設備可以進行通信。這一層有許多通訊協定(protocol),目前最常見的是乙太網路(Ethernet)。

網路交換器(Switch)是在這一層中常見的設備,主要是依據 MAC 位址,將網路資料傳送到主機上。

網路層 network layer

有時候也稱為 internet layer。就是這一層讓不同的網路通過稱為路由器(router)的東西,讓這些網路相互通信。通過路由器連接在一起的網路集合我們稱為網際網路(internetwork),和資料連結層比較不一樣的是,資料連結層負責的是從單一個 link 獲取資料,而網路層負責從網路集合獲得資料。

這一層最常見的通訊協定是 Internet Protocol,也就是我們很常說的 IP。網路運作上通常會分成用戶端(client)以及伺服端(server),用戶端發出請求(request),伺服端透過網路處理和回應請求,傳回結果。這個運作機制就是我們很常聽到的主從式架構(Client-server model)。

傳輸層 transport layer

傳輸層主要負責電腦整體的資料傳輸以及控制,可以將一個較為龐大的資料切割,並提供流量管制和錯誤控制。

像是郵件最後能夠傳送到信箱,靠的就是我們的傳輸層。當網路層在兩個節點傳遞數據時,傳輸層會整理那些用戶端和伺服器應該獲取該資料。簡單來說,就是讓資料能夠正確地傳到應用層。

另外我們很常聽到的 TCP/IP(Transmission Control Protocol),就是這一層具有傳輸層功能的協定。

應用層 Application Layer

這一層也有相當多的通訊協定,像是 HTTP(HyperText Transfer Protocol)、DHCP(Dynamic Host Configuration Protocol)、POP3(Post Office Protocol-Version 3)、FTP(File Transfer Protocol)等等。

應用層直接和應用程式介面結合,並提供常見的服務,最簡單的例子就是網頁,由一些簡單請求、回應組成。

封包 TCP and UDP packets

Packet 被翻譯為「封包」,可以想像成傳送資料的包裹。而和平常概念比較不一樣的是,大包裹可以被分裝成很多個小包裹。TCP 和 UDP 是我們平常訊息交換的兩種常用協議,決定了在網路上的傳輸方式。如果有在使用 VPN 服務的人,應該也不陌生。

TCP(Transmission Control Protocol)中文是傳輸控制協定,運作方式是為每個封包分配一個唯一的識別碼和序號,這些號碼可以辨別封包的完整性和順序。也因為順序性,TCP 可以進行流量控制和解決資料大量而導致塞車的問題,並且很容易發現並修復錯誤。當封包被接收後,如果順序正確,就會傳送一個確認信號(ACK,Acknowledgement) 給發送端,確認已收到封包。而發送端收到這個確認信號之後就可以再傳送另一個封包,如果發現接收端沒有傳 ACK,表示可能順序錯誤或遺失,這時候發送端就必須要再次傳送。

UDP(User Datagram Protocol)中文是使用者電報傳輸協定,比 TCP 簡單一些,沒有連線要求、終止或是流量控制的程序。這種優點是傳輸速率較快,可以用於即時性傳輸,但對資料的正確性要求就不高了。基本上在傳輸量或是需要即時反應的環境下,我們會採用 UDP。

The Basics of Networking Devices

電纜 Cables

雙絞線
光纖

電纜日常生活中相當常見,主要是將不同的設備互相連接,讓傳輸數據這件事可以順利進行。目前主要使用的網路電纜有幾類:銅纜、光纖電纜(基本上我們直接稱為光纖或光纜)等等。銅纜基本上最為常見,多條銅線外面包覆絕緣塑膠。

而電腦使用 1 和 0 組成的訊息進行溝通,因此我們可以透過改變兩個範圍之間的電壓傳遞數據。接收端就將這種變化解釋並轉換為 1 和 0,並且依需求轉換為不同形式的資料。

目前最常見的網路線(銅纜)規格是 Cat 5、Cat 5e、Cat 6,其中 Cat 是 category 的縮寫。主要是依據物理特性不同分類,尤其是雙絞線纏繞和排列的方式會對發送信號的速度以及抵抗外部干擾的能力產生極大的差異。

串擾(Crosstalk)是在傳輸系統中一個電路或通道中的信號在另外一個電路或通道產生的不良影響,用比較專業簡潔的講法就是指兩條信號線之間的耦合現象。一些協議有檢測丟失的數據並再次請求數據的方法,不過這相對來說一定佔用時間。這些不同類型的網路線使用物理方法以及較嚴格的規範避免串擾發生。

以上稍微介紹了銅纜,接下來要介紹光纖(fiber-optic cables/ optical fiber)。可能是因為某家電信業者瘋狂廣告光纖,對這個名詞不會太陌生。光纖指的是一種由玻璃或塑料組成的細管,大概是人類頭髮的粗細,可以用來傳輸光訊號,如果對國小或國中的自然課程有一點印象,應該還記得光線在光纖裡會以全反射的方式前進,達到高速傳輸且低耗損的效果(天啊為什麼我還記得XDD)。和利用電壓的銅纜不同,光纖主要是使用光脈衝表示 1 和 0。

集線器 Hubs & 交換器 Switches

上面介紹的 cable 讓我們能將設備連接,通常線的兩端各一臺機器,但是同個區域內總有好幾台設備需要網路,總不可能為了每一台電腦或其他機器就要準備一台網路設備吧。於是接下來要介紹集線器以及交換器。

集線器可以同時連接多台計算機,也就是說連接到集線器的電腦或機器最終也同時和所有其他設備的進行信息交流。但是這樣會在網路上產生大量的雜訊並且有 collision domain 的情形發生。Collision domain 我查詢不到確切的中文翻譯,碰撞網域、資料包衝突、衝突域都有人講,但不確定哪一個是臺灣的說法。這也就是為什麼目前集線器變得較為少見的原因,必須等待一段時間再次嘗試發送數據,這讓網路速度慢很多。

另外更常見的作法是使用交換器,最初曾經被稱為交換集線器(switching hub)。它其實和集線器非常類似,也是可以將很多電腦或機器連接到這個設備上。但是集線器主要是作用於第一層的物理層,純粹是物理性的集合,而交換器主要是應用於第二層的資料連結層,因此可以解決網域衝突的問題,像是可以檢查發送的數據內容要用於哪個系統、或是將這個數據限制發送哪個系統等等。

不過現在用英文單找 Switch 英文關鍵字只會找到任天堂出品的遊戲機 🙂

路由器 Routers

上方所介紹的集線器和交換機主要是用於連接單一個網路,通常稱為 LAN (Local Area Network)。再次複習˙一下,集線器是第一層設備;交換器是第二層設備;那麼路由器就是第三層,也就是網路層設備。

交換器可以檢查乙太數據確認資料內容送到哪,同樣的,路由器藉由 IP 數據確認資料內容送到何處。目前最常見的就是家裡面以及辦公室那小小的路由器,也是大部分人都不陌生的設備。這些路由器會接收我們家裡面或是辦公室的 LAN 內部流量後,將這個數據轉發給 ISP 或是 Internet 服務供應商,一旦到達 ISP,會交由另外較為複雜的路由器接手。如果交換器是建立網路的設備,那麼路由器就是連接網路的設備,藉由路由器可以決定封包的傳輸路徑、檔案、訊息等等傳輸的優先順序,並使用最佳化路徑。

伺服端 Servers & 用戶端 Clients

這一個概念其實前面有提到過。簡單來說,只要是向伺服端提出要求的,都算是用戶端;只要是回應要求或是提供服務的,都算是伺服端。即使是同一個節點上集合的各個設備,他們都可以是彼此的伺服端,也可以是彼此的客戶端。

The Physical Layer

Moving Bits Across the Wire

不論我們要在 Spotify 播放我們最愛的歌曲、給客戶發電子郵件或是使用銀行 ATM 領錢,這些動作都需要利用網路,而這些無形的網路仍需要有形的物體進行傳送,像是銅纜,兩端接上設備後,就能夠帶電荷進行 0 與 1 的傳輸。調變(Modulation)是一種傳送訊號的技術,改變通過電纜的電壓的方法。若用在電腦網路,較為精確的說法是「line coding」(中文是線路編碼?)。

雙絞線以及雙工 Twisted Pair Cabling and Duplexing

連接電腦的電纜最常見的類型為雙絞線(Twisted Pair),如其名,是數條扭曲在一起的銅線,這個扭曲絞在一起做成一條線的方式,有助於防止相鄰的電磁干擾。不同的傳輸技術會對應到絞線中不同的線對數量。

雙工通信(duplex communication), 指兩台設備之間能夠有雙向的資料傳輸,例如電話,因為雙方都可以聽和說;相對來說也有單工通信(simplex communication),通信的過程是單向的,例如說寵物或嬰兒監視器。

有時候連線出現問題,我們可能會看到網路會降級並且以半雙工(half-duplex)方式運作,也就是說每個方向都可以通信,但一次只能有一個設備進行通信。

Supplemental Reading

  • Ethernet Over Twisted Pair Technologies
  • Twisted Pair Ethernet: Crossover Cables

Network Ports & 配線面板 Patch Panels

雙絞線的電纜端接一個插頭,最常見的插頭被稱為 RJ45(或是 Registered Jack 45)。大多數的網路接口都有兩個小 LED,一個是連接 LED,另外一個是活動 LED,簡單來說就是燈號,為了表現目前的狀態。如果連結順利,連接 LED 燈將會亮起,而活動 LED 也將會閃爍。

配線面板是有許多插孔的設備,主要是裝了許多電纜端點的容器。

Cabling tools

這部分還蠻有趣的,沒有想到課程中會玩到配對遊戲。

  • Crimper: Connect wires
  • Wi-Fi analyzer: Inspects power and Wi-Fi quality
  • Toner probe: Finds ethernet and internet connectors
  • Punch down tool: Connects wires to panels and jacks
  • Loopback plug: Tests ports
  • Network tap: Copy traffic information that can be used to monitor devices.
  • Cable stripper: Remove protective coating from wires.
  • Cable tester: Measure integrity for standards compliance.

不過玩到一半發現根本在複習英文吧XD

乙太網路 Ethernet & MAC 位址 MAC Addresses

乙太網路是一種電腦區域網路技術,也是最常使用的一種技術,在該領域中佔有率最高的網路架構。乙太網路主要透過節點傳送訊息(節點間就是先前提到的電纜或是光纖),如果目前沒有資料正在傳輸,節點將會隨意發送數據。如果是兩台或是多台機器嘗試同時發送數據,則機器將會檢測到這個碰撞(collision,有的翻譯為衝突)並且停止發送。

和這次衝突有關的機器或設備將會等待一個時間間隔,防止下一次碰撞產生。當然這種現象也表示我們會需要一種方法識別傳輸實際上是針對哪一個節點的,就像是門牌號碼。在網路中,這個門牌號碼叫做 MAC 位址(MAC Addresses),全世界乃至於全宇宙每個號碼都是唯一一組。

MAC 位址總數共有 \(2^{48}\) 種或是 281,474,976,710,656 種。位址分成兩個部分:前 24 位數字稱為 OUI(組織唯一標識符,organizationally unique identifier),用於標示一個供應商或是一個組織。最後 24 位數字可以依供應商或組織希望的方式分配,並確保每個位址皆只被分配一次,以確保每個 MAC 都是唯一。

單播 Unicast, 多播 Multicast, and Broadcast

單播(unicast)是指封包在電腦網路的傳輸中,目的位址為單一目標的一種傳輸方式;多播(multicast)則是可以把資訊一對多或多對多傳遞。

如果說目標位址的前八位數字最低有效位設定為 0,則表示乙太網路僅用於目標位址;如果目標位址前八位數字最低有效位設定為 1,則表示正在處理的是 multicast。

第三種乙太網路傳輸方式為廣播(Broadcast),廣播被發送到 LAN 上的每個設備。

Dissecting an 乙太網路影格格式 Ethernet Frame

乙太層的封包稱為乙太網路影格格式(Ethernet Frame),或稱乙太影格。乙太影格的第一部分稱為前導碼。 前導碼長度為 64 位數,它本身可以分成兩部分,前 56 位數部分充當 frame 之間的緩衝區,網路接口也可以使用它們來同步內部時鐘,以調節發送數據的速度。最後 8 位數稱為 SFD(start frame delimiter),或是訊框起始符號,表示前導碼已經結束,接下來是實際的內容。在起始符號後面的是目標 MAC 位址。

再下一個部分是 EthernetType,共有 16 個位數,用來描述 frame 的協議內容。

傳統乙太影格的數據可以負荷 46 到 1500 byte 長的資料,這些資料包含來自更高層,像是傳輸層或應用層等等。

循環冗餘校驗(CRC,Cyclic redundancy check)是一種根據網路數據封包或電腦檔案等數據產生簡短固定位數驗證碼的一種雜湊函式,主要用來檢測或校驗數據傳輸或者儲存後可能出現的錯誤。


雖然省略了很多內容,整理起來還是蠻大量的,對於非本科系的來說知識量蠻豐富,雖然最後也是有在瘋狂幹譙把很簡單的概念講到很複雜。上面主要是課程回顧筆記,較為粗略、沒有很詳盡,搞不好還有錯誤。接下來還有五個星期的份量,繼續加油吧!

讓我知道你在想什麼!

Picture of ALEX

ALEX

藍白拖愛好者,一事無成話偏多

Recent Posts

C++

NLP