[C2, Week1]The Bits and Bytes of Computer Networking(Google IT Support) 網路概論

這堂課目前我上到一半,覺得十分困難,每個字分開都能理解,合在一起就變成了聽不懂的英文,雖然有中翻但翻譯的並不是很好,希望透過這個筆記能夠梳理出一個完整的架構來。

第一週是 TCP/IP 的基本介紹,加上 Physical layer 跟 Data Link layer 的詳述。

The TCP/IP Five-Layer Network Model

TCP/IP 總共分為五層(Layer name/Protocol/Protocol Data Unit/Addressing)

  1. Physical layer / 10 Base T, 802.11 / Bits / N/A
  2. Data Link layer(aka Network access layer)/ Ethernet, Wi-Fi / Frames / MAC address
  3. Network layer(aka Internet later)/ IP / Datagram / IP address
  4. Transport layer / TCP, UDP / Segment / Port #’s
  5. Application layer / HTTP, SMTP / Messages / N/A

看不太懂,對吧?但是這個很重要,可以先記著,後續都會有解釋。以下先提及簡單的定義與中翻。

依據定義來說,越接近硬體的階層為底層 (layer 1),越接近應用程式的則是高層 (layer 7)。 不論是接收端還是發送端,每個一階層只認識對方的同一階層資料。 而整個傳送的過程就好像人們在玩整人遊戲一般,我們透過應用程式將資料放入第五層的包裹,再將第五層的包裹放到第四層的包裹內, 依序一直放到第一層的最大的包裹內,然後傳送出去給接收端。接收端的主機就得由第一個包裹開始,依序將每個包裹拆開, 然後一個一個交給對應負責的階層來視察!

既然說是包裹,那我們都知道,包裹表面都會有個重要的資訊,這些資訊包括有來自哪裡、要去哪裡、接收者是誰等等, 而包裹裡面才是真正的資料。同樣的,在七層協定中,每層都會有自己獨特的表頭資料 (header),告知對方這裡面的資訊是什麼, 而真正的資料就附在後頭囉!

那 TCP/IP 是如何運作的呢?我們就拿妳常常連上的 Yahoo 入口網站來做個說明好了,整個連線的狀態可以這樣看:

  1. 應用程式階段:妳打開瀏覽器,在瀏覽器上面輸入網址列,按下 [Enter]。此時網址列與相關資料會被瀏覽器包成一個資料, 並向下傳給 TCP/IP 的應用層;
  2. 應用層:由應用層提供的 HTTP 通訊協定,將來自瀏覽器的資料包起來,並給予一個應用層表頭,再向傳送層丟去;
  3. 傳送層:由於 HTTP 為可靠連線,因此將該資料丟入 TCP 封包內,並給予一個 TCP 封包的表頭,向網路層丟去;
  4. 網路層:將 TCP 包裹包進 IP 封包內,再給予一個 IP 表頭 (主要就是來源與目標的 IP 囉),向鏈結層丟去;
  5. 鏈結層:如果使用乙太網路時,此時 IP 會依據 CSMA/CD 的標準,包裹到 MAC 訊框中,並給予 MAC 表頭,再轉成位元串後, 利用傳輸媒體傳送到遠端主機上。

Physical layer 的定義十分清楚,就是代表所有相關跟電腦連接的設備。相較於 Physical layer 的纜線、連接器等。而 Physical Layer 所負責的是:定義所使用的媒體設備之電壓與訊號等, 同時還必須瞭解資料訊框轉成位元串的編碼方式,最後連接實體媒體並傳送/接收位元串。

Data Link layer 則負責制定一些規範來解釋這些訊號,使得網路設備可以互相連通。而 Data Link layer 最常見的網路協議是 Ethernet 或 Wi-Fi。關於 Ethernet,Google 是這樣定義的:

在解釋這句話之前,要先解釋一個概念 Node,可以稱為節點,通常就是作為 Server 或是 Client 端的設備,兩端都可以是節點。再來對 Ethernet 的中文解釋是這樣的,Ethernet 標準定義了一個把數據傳輸去同網路內節點的協議,這裡有一個重點,他只能處理在同一個網路內的節點的數據傳輸。那不同網路之間呢?這就是第三層的重要性。

接下來來到第三層,處理的是不同網路內的連結,通過一個設備叫 Router(路由器)來相互交流。而一群被路由器連接在一起的各個網路就叫做 Internet。這層最常見的協議則是 IP(Internet Protocol),是 Internet 跟世界各地小型網路的中心。

處理完了各個網路的相互連結,接下來會有兩個東西出現 Client 和 Server。Client 發送需求,而 Server 回饋需求,因此有了第四層的出現,Transport layer,好得以確認是哪一端要取得資料。最常用的協議則是 Transmission Control Protocol(TCP)。而 TCP 協議則利用了 IP,因此有了 TCP/IP 這個詞,但其實也有其他協議運用 IP 協議,如 UDP(User Datagram Protocol),但 TCP 跟 UDP 最大的差別在於, TCP 的原理能確保數據的可靠傳輸,然而 UDP 不行。一言以蔽之,也就是確保數據能夠到達節點上的應用程式。

這五層就像寄快遞一樣,Physical layer 就像貨車與道路,Data Link layer 則像是車從一個路口到下一個路口,Network layer 則是確認從A到B的路,Transport layer 則是郵差敲你的門告訴你要收快遞了,Application layer 則是包裹本身。

The Basics of Networking Devices

關於硬體的部分,不多加解釋。

The Physical Layer

絕大多數不進行翻譯。

這些電纜允許 “Duplex Communication”,也就是說,訊息能夠在纜線上雙向流動。而 Simple Communication 則是單向,Full-Duplex 指的是能夠「同時」雙向流動,而 Half-duplex 指的則是只有一方能夠流動訊息,但雙方都能向對方流動訊息。

The Data Link Layer

Ethernet and MAC Addresses

正如上面所說,這層最常見的協議就是 Ethernet。而這層的最大用途在於關心 Physical layer 與其正在使用的硬體的需要,簡化其他層的需要 Physical layer 的途徑。透過這個轉化途徑,將責任轉移到 Data Link layer,再上層就不需要擔心底下硬體是如何連結的了(這是我目前能想到最好的翻譯,如有錯誤歡迎指正,因為 Coursera 本身的翻譯很怪。)

歷史背景是這樣的,當時 Switch 跟 Hub 都尚未發明,因此電腦在同一個網段中極有可能是 Collision domain,而 Ethernet 這個協議本身透過了 CSMA/CD 這個技術,成功處理掉了 Collision Domain 的問題。

原理是如果 Network segment 沒有數據傳輸,則 Node 就可以隨時傳輸數據,反之,如果數據互相撞到了,則會停一段時間再傳輸數據。

當這個網段是 Collision domain 時,代表著該網段上的所有設備都會接收整個網段中的所有訊息。所以,我們需要一個方法來判斷到底要傳輸給哪個 Node,於是就有了 MAC address 的出現。MAC address 是全球唯一的,而他的組成成分是 48 個數字,通常由兩個十六進位數字組成的六組表示。

另一種引用MAC地址中每組數字的方法是二進位八位數(位元組)。

Unicast, Multicast, and Broadcast

首先是 Unicast,一方「單向」傳遞數據給另外一方。這要怎麼做呢?在 Ethernet 這層中,我們可以透過 MAC address 的特殊數字去判斷,如果第一個位元組中的終點位址被設為 0 ,則代表這個 Ethernet Frame 僅用於目的地址。這代表著數據將會被發送到 Collision Domain 中的所有設備,但僅由預期的目的地實際接受並處理。

Dissecting an Ethernet Frame

Data Packet 算是一個包羅萬象的術語,他並不包含於特定哪一層,僅僅代表一個概念。而在 Data Link Layer,也就是 Ethernet 這層,Data Packets 叫做 Ethernet Frames,透過這個方法,Physical layer可以把這些 bit 轉換成有意義的數據。

我覺得這整串英文講得蠻清楚的,因此不多做翻譯。第一週在此結束,有錯誤歡迎指正,謝謝你的閱讀。

參考資料:

鳥哥的 Linux 私房菜

理科與藝術交織成靈魂的會計人,喜愛戲劇與攝影,但也喜歡資料科學。