【計算機網路筆記】3.3 Connectionless Transport: UDP
【計算機網路筆記】3.3 Connectionless Transport: UDP Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 回顧 UDP UDP(User Datagram Protocol,使用者資料包協定)只做了傳輸層最基本該做的事:把資料從一台電腦的某個程式,送到另一台電腦的某個程式,其他的它一概不管。 雖然 TCP 提供了可靠、有序的傳輸,但這些功能是有代價的(延遲、複雜度、連線建立時間)。 有些應用程式(如 DNS 查詢、即時語音、串流視訊)更在乎「速度」和「即時性」,對於偶爾掉幾個封包是可以容忍的,此時 TCP 的層層機制反而成了累贅,輕量級的 UDP 就派上用場了。 UDP 應用:即時影音串流、網路電話(VoIP,Voice over I...
【計算機網路筆記】3.2 Multiplexing and Demultiplexing
【計算機網路筆記】3.2 Multiplexing and Demultiplexing Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 簡介 多工與解多工技術是一種將「主機對主機(Host-to-Host)」的傳輸服務,延伸轉化為「行程對行程(Process-to-Process)」傳輸服務的機制。 為什麼需要多工與解多工? 假設有位使用者的電腦同時開著瀏覽器下載網頁、開著 FTP 傳檔案、還掛著兩個 Telnet 連線。 網路層(IP)只負責把資料包(Datagram)送到電腦(Host)門口。 在當電腦收到這個資料包時,它該如何知道這是要給瀏覽器的,還是給 FTP 的? 此時就是傳輸層的工作了,傳輸層利用多工(Multiplexing)與解多工(Demu...
【計算機網路筆記】3.1 Introduction and Transport-Layer Services
【計算機網路筆記】3.1 Introduction and Transport-Layer Services Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 傳輸層簡介 傳輸層(Transport Layer)位於應用層(Application Layer)之下,網路層(Network Layer)之上。 傳輸層的核心功能是為執行在不同主機(Host)上的應用程式行程(Application Processes)之間提供邏輯通訊(Logical Communication)。 所謂邏輯通訊:從應用程式的角度看,好像兩台主機是直接連在一起的,儘管中間隔著無數的路由器和連結。 3.1.1 Relationship Between Transport and Net...
【計算機網路筆記】2.7 Socket Programming: Creating Network Applications
【計算機網路筆記】2.7 Socket Programming: Creating Network Applications Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 複習:什麼是 Socket? 簡單來說,Socket(插座)就是應用程式(Application)與網路(Network)之間的介面(Interface)。 Socket 的存在是為了把「網路層只做到主機對主機」提升成「傳輸層要做到行程(process)對行程」的溝通,並讓同一台主機上的許多應用程式能同時共用 TCP/UDP 而不互相搞混。 做比喻的話,行程(process)就像是房子,而 Socket 如同房子中的門。 當使用者想發訊息給別人,使用者會把訊息推出「門」(Socket)外,一...
【計算機網路筆記】2.6 Video Streaming and Content Distribution Networks
【計算機網路筆記】2.6 Video Streaming and Content Distribution Networks Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 2.6.1 Internet Video(網際網路視訊) 在此探討的為預錄視訊串流(Streaming Stored Video)。 其運作模式是將預先錄製好的媒體(如電影、電視節目、UGC 影片)放置在伺服器上,使用者根據需求(On-demand)發送請求來觀看。 視訊本質上是連續的影像,資料量極其龐大,它是網際網路上對頻寬需求最高、對效能最敏感的應用類型之一。 其中所面臨的挑戰:如何在頻寬有限且會波動的網路環境中,傳送高位元率(High Bit Rate)的資料,並保持播放的流暢度。 ...
【計算機網路筆記】2.5 Peer-to-Peer File Distribution
【計算機網路筆記】2.5 Peer-to-Peer File Distribution Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 P2P 架構與自我擴充性(Scalability) 複習:什麼是 P2P? 在傳統的主從式架構(Client-Server Architecture)中,伺服器必須承擔所有的上傳工作。 如果要發送一個檔案給 NNN 個使用者,伺服器就必須把這個檔案傳送 NNN 次,會導致伺服器的頻寬成為巨大的瓶頸。 在 P2P 架構(Peer-to-Peer Architecture)中,每一台參與的電腦被稱為 Peer(對等點)。 Peer 不僅僅是下載檔案,還會將已下載的檔案片段重新上傳給其他的 Peer。 為什麼 P2P 很重要? 這個架...
【計算機網路筆記】2.4 DNS—The Internet’s Directory Service
【計算機網路筆記】2.4 DNS—The Internet’s Directory Service Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 2.4.1 Services Provided by DNS(由 DNS 提供的服務) 什麼是 DNS? DNS(Domain Name System,網域名稱系統)就像是網際網路的「電話簿」,負責將人類好記的網址翻譯成電腦能理解的 IP 位址。 當在瀏覽器輸入 google.com 這種人類好記的網址時,電腦其實看不懂。 電腦需要透過 DNS 把網址翻譯成一串數字構成的 IP 位址(例如 142.250.190.46),才能正確連接到該網站的伺服器。 DNS 也是一個建立在應用層上的協定,它主要由兩部分組成: ...
【計算機網路筆記】2.3 Electronic Mail in the Internet
【計算機網路筆記】2.3 Electronic Mail in the Internet Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 電子郵件系統的核心在於提供一種非同步(Asynchronous)的通訊方式。 什麼意思?就像傳統的郵政服務,寄信時,收件人不需要坐在家裡等,寄件人寫好信丟進郵筒,系統會負責傳遞到收件人的郵箱,對方有空時再開箱讀取。 電子郵件的出現打破了時間的限制,不需要通訊雙方同時在線(Always-on)也能交換資訊,且成本極低、速度快。 Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 147, Figure 2.14) 上圖中呈現一份網際網路郵件系統的...
【計算機網路筆記】2.2 The Web and HTTP
【計算機網路筆記】2.2 The Web and HTTP Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 2.2.1 Overview of HTTP(HTTP 的概觀) 什麼是 HTTP? HTTP(HyperText Transfer Protocol),中譯「超文本傳輸協定」,是 Web 的核心應用層協定。 它定義了客戶端(Client)和伺服器(Server)之間「如何對話」的規則。 也規定了訊息的結構(語法)以及交換訊息的方式(語義)。 為什麼需要 HTTP? 在 1990 年代初期,網際網路主要用於傳輸文字和文件。 為了讓這些文件(也稱為網頁,Web Pages)能在不同的電腦系統之間互相請求和傳送,需要一個通用的標準。 HTTP 即該標準,讓...
【計算機網路筆記】2.1 Principles of Network Applications
【計算機網路筆記】2.1 Principles of Network Applications Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 2.1.1 Network Application Architectures(網路應用程式架構) 在現代網路應用開發中,開發者通常會在以下兩種典範中擇一使用: 主從式架構(Client-Server Architecture) 對等式架構(Peer-to-Peer, P2P Architecture) 主從式架構(Client-Server Architecture) 這是目前最常見、也最傳統的架構模式(例如 Web、Email)。 在此架構中會有永遠開啟的主機,稱之為伺服器(Server)。 伺服器會服務其他許...
【計算機網路筆記】1.5 Protocol Layers and Their Service Models
【計算機網路筆記】1.5 Protocol Layers and Their Service Models Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 1.5.1 Layered Architecture(分層架構) 航空系統的比喻 網際網路是一個非常複雜的系統,包含了應用程式、協定、端系統、封包交換機和各種連結層媒介。 為了理解這個複雜的系統,書中以航空系統作為比喻。 搭飛機的過程當中涉及了票務代理、行李檢查、登機口人員、機師、飛機、空中交通管制等。 若要把這個系統描述清楚,可依照「動作發生的順序」來分層: Image Source:Image Source:Computer Networking: A Top-Down Approach (8th e...
【計算機網路筆記】1.4 Delay, Loss, and Throughput in Packet-Switched Networks
【計算機網路筆記】1.4 Delay, Loss, and Throughput in Packet-Switched Networks Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 1.4.1 Overview of Delay in Packet-Switched Networks(封包交換網路中的延遲概述) 該節核心概念:解釋封包從源頭(Source)經過一系列路由器(Routers)到達目的地(Destination)的過程中,為什麼會發生延遲(Delay),以及這些延遲是由哪些部分組成的。 一個封包在單一節點所經歷的延遲總和定義為四個主要部分的累加: 節點處理延遲(Nodal Processing Delay) 佇列延遲(Queuing Delay...
【計算機網路筆記】1.3 The Network Core
【計算機網路筆記】1.3 The Network Core Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 註:後來改成看第八版了,發現第七版在一些資訊蠻落後的。 1.3.1 Packet Switching(封包交換) 基本概念與封包 回顧 1.1 若要寄一封很長的電子郵件或下載一個很大的高畫質影片,網路不會一次把整個巨大的檔案傳出去。 來源終端系統會將這些訊息切成較小的資料塊,這些資料塊被稱為封包(Packet)。 在來源與目的地終端系統之間,每個封包都會經過通訊連結(Communication Links)與封包交換(Packet Switches)設備,而封包交換設備主要有兩種類型: 路由器(router) 連結層交換器(link-layer sw...
【計算機網路筆記】1.2 The Network Edge
【計算機網路筆記】1.2 The Network Edge Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 7th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。 終端系統(End System) 回顧 1.1: 終端系統(End Systems) = 主機(Hosts) 在網路術語中,連接到網際網路的電腦和其他設備(如智慧型手機、平板、甚至現在的物聯網設備如恆溫器、汽車等)被稱作終端系統或主機。 而主機分成兩大類: 客戶端(Client):通常是桌機、筆電、手機等,主要是發起請求的一方。 伺服器(Server):通常是更強大的機器,用來儲存和發送網頁、影片、電子郵件等。現代伺服器集中在大型的資料中心(Data Centers)裡,如 Google 就有數十個大型資料中心,每個資料中心可能有數十萬台伺服器。 1...
【計算機網路筆記】1.1 What Is the Internet?
【計算機網路筆記】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),將全球數十億個運算裝置(C...
