【計算機網路筆記】1.1 What Is the Internet?

Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 7th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。

1.1.1 A Nuts-and-Bolts Description(基本要素描述)

註:nuts and bolts 直翻就是螺帽跟螺栓,引伸為「具體細節」、「基本要素」或「實際運作的基礎」。因為螺帽和螺栓是機械中最基本且不可或缺的零件,沒有它們,大型機器也無法運作,因此 nuts and bolts 比喻事物最核心且基礎的部分。

該節以「硬體」的角度來看網際網路。

網際網路的節點:主機與終端系統(Hosts / End Systems)

網際網路(Internet)即為電腦網路(Computer Network),將全球數十億個運算裝置(Computing Devices)相互連接起來,從而形成一個網路。

具體來說是連接什麼?

  • 傳統上:
    • 桌上型電腦(Desktop PCs)
    • Linux 工作站(Workstations)
    • 伺服器(Servers)等
    • 用於儲存並傳輸(transmit)像是網頁、電子郵件訊息等等的資訊。
  • 現代新興設備(物聯網, IoT, Internet of Things):
    • 筆記型電腦(Laptops)
    • 智慧型手機(Smartphones)
    • 平板電腦(Tablets)
    • 電視(TVs)
    • 遊戲主機(Gaming Consoles)
    • 自動調溫器(Thermostats)
    • 居家安全系統(Home Security Systems)
    • 家用電器(Home Appliances)
    • 手錶(Watches)
    • 眼鏡(Eye Glasses)
    • 汽車(Cars)
    • 交通控制系統(Traffic Control Systems)等等。

在網際網路的術語中,所有這些連接上網的設備都被稱為主機(Hosts)或終端系統(End Systems)。

:::info
為何終端系統會叫做「端」系統?因為上述這些裝置皆位於網路邊緣(Edge)。

所謂網路邊緣是裝置與網際網路互動的入口點,靠近使用者端設備,負責產生或接收資料。

就像你家的郵箱一樣,資料會在此進出,你不用需要花很長的時間,只要去翻郵箱就可以拿到資料。
:::

這些終端系統如何連接在一起?

  • 物理媒介:透過通訊連結(Communication Links)連接,這些連結(Links)可以使用不同類型的物理媒介,如:
    • 同軸電纜(Coaxial Cable)
    • 銅線(Copper Wire)
    • 光纖(Optical Fiber)
    • 無線電頻譜(Radio Spectrum)等等。
  • 傳輸速率:不同的連結有不同的傳輸速度,用位元/秒 bits/second(bps) 的方式來衡量。

通訊連結(Communication Links)為讓裝置之間能夠互相連通的物理媒介,無論這個媒介是透過線材還是無線電波。也可以理解為連接終端系統(End Systems)的傳輸管道。

而連結(Link)是指將網路中的兩個或多個節點(Nodes,如電腦、路由器、交換機)連接起來,以便進行資料傳輸的通訊通道。

若把網路比喻成交通系統,所謂連結就是連接各個站點(節點)之間的道路。

資料的移動方式:封包(Packets)

當一台終端系統要傳資料給另一台時,不會一次把整個資料全丟出去,而是會依照以下流程去做:

  • 分段(segment):發送端會把資料切成一段一段的。
  • 加上標頭(Header):接著把每一段資料加上標頭(Header)資訊。

這些打包好的資訊塊,在計算機網路的術語中稱為封包(Packets)。

這些封包如同郵件包裹,穿過網路到達目的地,然後在那被重新組裝成原始資料。

網路的交通樞紐:封包交換器(Packet Switches)

封包(Packet)在網路中傳輸時,需要有人指揮跟管理交通,而這時候封包交換器(Packet Switch)就會去擔任這個角色。

封包交換器會接收一條從連結進來的封包,然後把它轉發(forward)到另一條輸出的連結。

封包交換器有很多種類型,但以現今網際網路情況來說主要有兩種:

  1. 路由器(Routers):通常用於網路的核心(Network Core)。
  2. 連結層交換器(Link-layer switches):通常用於接入網路(Access Networks),例如家裡或公司內部的區域網路。

一個封包從傳送終端系統到接收終端系統,途中所經過的一連串通訊連結與封包交換器,稱為該封包在網路中的路由(route)或路徑(path)。

這些術語的比喻

書中以物流運輸跟交通系統來比喻網際網路運作的樣子。

假設有一間工廠需要將大量貨物運送到數千公里外的某個目的地倉庫,在工廠這邊,貨物會被分割(segmented),並裝載到一整隊的卡車上。

接著,每輛卡車都會彼此獨立地,透過由高速公路、道路與交叉路口所組成的交通網路,前往目的地倉庫。

在目的地倉庫,貨物會被卸下,並與同一批貨運中其他抵達的貨物加以彙整。

在這邊一些網際網路的術語可以跟上面這例子做一個對應:

  • 封包(Packets):如同卡車。
  • 通訊連結(Communication links):如同高速公路和道路。
  • 封包交換器(Packet switches):如同十字路口/交流道。
  • 終端系統(End systems):如同建築物/倉庫。

就像卡車載著貨物(資料)穿過道路和路口到達目的地倉庫一樣,封包也在電腦網路中穿梭到達目的地。

網路的管理者:ISP(網際網路服務供應商)

終端系統要如何進入某個網路?透過網際網路服務供應商(Internet Service Providers, ISPs)來存取網際網路。

而這些 ISP 可能會是:

  • 住宅型 ISP(如地方性的有線電視公司或電話公司)
  • 企業 ISP
  • 大學 ISP
  • 在機場、飯店、咖啡廳及其他公共場所提供 WiFi 存取的 ISP
  • 行動數據 ISP(cellular data ISPs),用來為智慧型手機與其他行動裝置提供行動網路存取。

每一個 ISP 本身都是一個由封包交換器(Packet Switches)與通訊連結(Communication Links)所組成的網路。

ISP 會為終端系統提供各種不同型態的網路存取方式,如:

  • 住宅型的寬頻存取(如有線數據機 cable modem 或 DSL)
  • 高速的區域網路(local area network, LAN)存取
  • 行動無線存取(mobile wireless access)等等。

ISP 也會為內容供應者(Content Providers)提供網際網路存取服務,將網站與影片伺服器直接連接到網際網路。

由於網際網路的核心目的在於讓終端系統彼此連接,因此為終端系統提供存取服務的各個 ISP 之間,也必須彼此互相連接

另外 ISP 也有分層級。

提供接入服務的低階 ISP(Lower-tier ISPs)必須互連,通常透過國家級或國際級的高階 ISP(Upper-tier ISPs)來達成(如 AT&T, Sprint, NTT等)。

高階 ISP 由高速路由器所構成,而這些路由器之間又以高速光纖連結(high-speed fiber-optic links)相互連接。

最後每個 ISP 網路,不論是高階或低階,皆為獨立管理,皆執行 IP 協定(IP protocol)。

溝通的規則:協定(Protocols)

有這麼多不同的設備和交換器,它們要如何聽懂對方在說什麼?因此需要協定(Protocol)來做規範。

終端系統(End Systems)、封包交換器(Packet Switches)以及網際網路中的其他組成元件,都會執行各種協定(protocols),用來控制網際網路中資訊的傳送與接收。

在網際網路中,最重要的兩種協定為:

  • 傳輸控制協定(Transmission Control Protocol,TCP)
  • 網際網路協定(Internet Protocol,IP),規定封包的格式。

網際網路的核心協定通常統稱為 TCP/IP。

大家的共識:標準(Standards)

為了確保大家的產品(如 TP-Link 的路由器跟你的 iPhone、PC 等等)能夠互通(interoperate),必須有統一的標準。

而網際網路的標準是由網際網路工程任務組(Internet Engineering Task Force, IETF)所制定。

IETF 的標準文件稱為徵求意見文件(Requests for Comments,RFCs)。

這些文件定義了 TCP、IP、HTTP(網頁)、SMTP(電子郵件)等協定的技術細節。

除了 IETF 外,還有其他組織負責制定網路元件的相關標準,特別是網路連結(network links)方面的標準。

例如 IEEE 802 區域網路/都會網路標準委員會(IEEE 802 LAN/MAN Standards Committee)[IEEE 802 2016],便負責制定乙太網路(Ethernet)與無線 WiFi 的相關標準。

小結

從零件的角度看,網際網路基本上是由以下東西組成的:

  1. 數十億個終端系統(End Systems)。
  2. 連接它們的通訊連結(Communication Links)。
  3. 轉發數據的封包交換器(Packet Switches)(主要為路由器和交換器)。
  4. 控制資料傳輸的協定(Protocols)。
  5. 將這一切串連起來的 ISP 網路。

1.1.2 A Services Description(服務描述)

網際網路是應用程式的基礎設施

網際網路也是為應用程式提供服務的基礎設施(infrastructure)。

除了電子郵件(e-mail)、網頁瀏覽(Web surfing)這類傳統應用外,網際網路也應用在行動智慧型手機、平板電腦上:

  • 網際網路即時通訊
  • 結合即時道路交通資訊的地圖服務
  • 雲端串流音樂、電影與電視節目串流
  • 線上社群網路
  • 視訊會議
  • 多人線上遊戲
  • 以位置為基礎的推薦系統(location-based recommendation systems)

上述這些應用程式稱為分散式應用程式(distributed applications),因為它們涉及多個互相交換資料的終終端系統(End Systems)。

而應用程式是在哪裡執行的?網際網路應用程式是執行在「終端系統」(如 PC 電腦、手機)上,而不是在網路核心的封包交換器(Packet Switches)或路由器上執行。

中間的路由器只負責搬運資料,它們並不在乎這些資料是來自 YouTube 還是 Email,也不執行這些應用程式的邏輯。

開發者面臨的核心問題

應用程式是執行在終端系統上,勢必需要撰寫能在終端系統執行的程式,如使用 Java、C 或 Python 等來撰寫程式。

另外要開發的是分散式網際網路應用程式,執行在不同電腦上的程式需要互相傳送資料。

此時會面臨一個核心問題:一個在某個終端系統上執行的程式,究竟是如何指示網際網路,將資料傳送給另一個終端系統上正在執行的另一個程式呢?

這就引出了網際網路作為「服務平台」的描述。

Socket 介面(Socket Interface)

連接到網際網路的終端系統(end systems)會提供一個通訊端介面(叫做 socket interface),用來規範在某一個終端系統上執行的程式,如何向網際網路提出請求,將資料傳送到另一個終端系統上、某個特定目的程式等等。

這個網際網路通訊端介面是一組規則,資料傳送端的程式必須遵守這些規則,網際網路才能將資料正確地傳遞到目的端程式。

書中舉了一個例子來解釋什麼是介面(Interface):

  1. 情境:假設 Alice 想寫信給 Bob。
  2. 規則:Alice 不能只是寫好信,然後丟到窗外,期待信件會自動飛到 Bob 手上。
  3. 介面(Interface):郵局要求 Alice 必須遵守一套規則,如:
    • 把信裝進信封。
    • 在信封中間寫上 Bob 的全名、地址和郵遞區號。
    • 封好信封。
    • 在右上角貼上郵票。
    • 最後把信丟進郵筒裡。

此為郵政服務介面,對應網際網路中的 Socket Interface 來做舉例。

1.1.3 What Is a Protocol?(什麼是協定?)

所謂協定(Protocol)就是電腦之間在溝通的語言跟規則,就像人類在日常生活中做溝通,隨時隨地都在做人類版的「協定」。

以人類之間的溝通做類比

例如想要問路人說現在幾點了,通常會:

  1. 發出訊息:通常不會直接就問時間,而是先禮貌性的說你好來展開對話。
  2. 接收回應:對方聽到後通常會馬上回你好回去,這個回應隱含了一個重要的訊息,就是對方願意跟我方溝通。
  3. 請求:確認對方願意理人之後,才會發出真正的請求,問現在幾點?
  4. 獲得結果:最後得到對方的回應:「兩點」。

若不遵守協定的話,對方可能會拒絕回應,或是說一些我們聽不懂的語言,這就表示協定無法運作跟配合,溝通失敗,也就問不到時間了。

在上述例子中,發送了特定的訊息,並依據接收到的回應採取了特定的動作,這即為協定的雛形。

image

Image Source:Computer Networking: A Top-Down Approach (7th ed., p. 35, Figure 1.2)

電腦網路的協定

現在從人換到機器的視角來看。

在網路協定中,交換訊息的不再是人,而是一堆設備(如電腦、智慧型手機、平板、路由器)中的硬體或軟體組件。

在網際網路中,只要涉及兩個或多個遠端實體的通訊,所有的活動都是由協定來管理的。

接著書中用在瀏覽器輸入網址看網頁的例子,說明網路協定實際運作的情況:

  1. 建立連結(打招呼):電腦不會直接要網頁,而是先向 Web 伺服器發送一個連線請求(Connection request)訊息。
  2. 確認連結(回禮):伺服器收到後,回傳一個連線回覆(Connection reply)訊息。
  3. 正式請求(問問題):電腦知道連線成功了(就像路人說了 Hi 一樣),於是發送包含網頁名稱的 GET 訊息。
  4. 獲得資料(得到答案):最後,Web 伺服器將網頁檔案回傳給電腦。

image

Image Source:Computer Networking: A Top-Down Approach (7th ed., p. 35, Figure 1.2)

協定的正式定義

A protocol defines the format and the order of messages exchanged between two or more communicating entities, as well as the actions taken on the transmission and/or receipt of a message or other event.

中譯:協定(Protocol)用來定義兩個或多個進行通訊的實體之間,所交換訊息的格式與順序,以及在訊息傳送與/或接收,或其他事件發生時,所必須採取的行動。

這個定義可拆成三個關鍵字來做記憶:

  1. 格式(Format):訊息長什麼樣子?(如:用英文還中文?電腦封包的標頭要多長?)
  2. 順序(Order):誰先講?誰後講?(如:必須先握手才能問時間。)
  3. 動作(Actions):收到訊息後要做什麼?(如:收到 GET 請求後,伺服器必須把檔案找出來傳回去。)

總整理

網際網路的基本要素

從硬體與實際運作角度來看,網際網路是一個由大量元件組成、彼此協作的系統。

  1. 終端系統(Hosts / End Systems)

    • 所有連上網際網路的裝置皆稱為終端系統,如電腦、手機、伺服器與各類 IoT 裝置。
    • 之所以稱為「端」,是因為它們位於網路邊緣(Edge),負責資料的產生與接收。
  2. 通訊連結(Communication Links)

    • 終端系統之間透過實體媒介相連,如銅線、光纖、無線電。
    • 連結的能力以傳輸速率(bps)衡量。
    • 可視為網路中的道路。
  3. 封包(Packets)

    • 資料在傳輸前會被切割成小段並加上標頭,形成封包。
    • 封包是網路中實際移動的基本單位。
  4. 封包交換器(Packet Switches)

    • 負責接收並轉發封包的設備。
    • 主要類型:
      • 路由器(Router):位於網路核心。
      • 交換器(Link-layer Switch):多用於區域網路。
      • 封包經過的交換器與連結序列,稱為其路由(Route / Path)。
  5. ISP(Internet Service Providers)

    • ISP 為終端系統提供網際網路存取服務,本身也是由連結與交換器構成的網路。
    • ISP 分層:低階 ISP 透過高階 ISP 彼此互連,形成全球網際網路。
    • 所有 ISP 皆獨立管理,但共同執行 IP 協定。
  6. 協定與標準

    • 協定(Protocol)規範資料如何傳送與接收。
    • 核心協定為 TCP/IP。
    • 為確保設備互通,標準由 IETF 制定(RFC 文件)。
    • 連結相關標準多由 IEEE 802 制定(Ethernet、Wi-Fi)。

以硬體角度來看:網際網路由終端系統、通訊連結、封包交換器、協定與 ISP 共同構成。

網際網路作為服務的視角

  1. 網際網路是應用程式的基礎設施
    • 網際網路支撐各種分散式應用程式,如 Web、Email、串流媒體、線上遊戲、視訊會議等。
    • 應用程式只執行在終端系統上,網路核心設備只負責搬運資料,不執行應用邏輯。
  2. 開發者的核心問題
    • 分散式應用需讓不同終端系統上的程式彼此通訊。
    • 關鍵問題是:應用程式如何使用網際網路來傳送資料?
  3. Socket 介面(Socket Interface)
    • Socket 是終端系統提供給應用程式的通訊介面。
    • 它定義了一組規則,規範程式如何請求網路傳送資料。
    • 舉例:如同「寄信必須遵守郵局的規則」,否則信件無法送達。

以服務角度來看:網際網路是一個平台,透過 socket 介面為分散式應用提供通訊服務。

什麼是協定(Protocol)

  1. 協定的本質
    • 協定是通訊雙方共同遵守的語言與規則。
    • 無論是人與人,或機器與機器,溝通皆仰賴協定。
  2. 網路中的協定運作
    • 例如瀏覽網頁時:
      1. 建立連線(打招呼)
      2. 確認連線
      3. 發送請求(GET)
      4. 回傳資料(網頁內容)
  3. 協定的正式定義(三要素)
    • 協定定義了:
      1. 格式(Format):訊息長什麼樣子
      2. 順序(Order):訊息交換的先後關係
      3. 動作(Actions):收到或送出訊息後該做什麼