---
# System prepended metadata

title: Computer Networking — 2. Application Layer
tags: [Computer Networking]

---

# Computer Networking — 2. Application Layer

contributed by <[`kaeteyaruyo`](https://github.com/kaeteyaruyo)>

翻譯真的好花時間ㄛ所以接下來就不逐字翻ㄌ (・∀・)

###### tags: `Computer Networking`

網路應用程式完全是整個電腦網路的重點，如果沒有這些服務可以用，我們根本也就不用開發出那下面的整個網路來支援這些服務。網路應用程式在我們生活中的各方各面都提供了很多便利，目前也一直求新求變當中。

網際網路應用服務隨著年代不斷的演進，過去幾個十年之內最盛行的應用分別是：

* 70、80 年代：文字類的應用服務，像是 email、遠端登入、檔案傳輸、聊天留言板之類的
* 90 年代中期：全球資訊網和電子商務
* 千禧年前後：即時訊息和 P2P 檔案分享
* 2000 年初：語音通話、視訊會議、影音分享平台、影音串流服務、多人線上遊戲、社群網站等
* 2010 年後：隨著智慧型手機的盛行，行動定位服務變得興盛

在第二章當中，我們會從概念到實作來深入學習網路應用程式。我們會先從網路層的重要概念開始，接著我們會用幾個網路服務作為舉例來深入分析，最後我們會提到如何進行網路應用程式的開發，包含基於 TCP 和 UDP 的網路應用我們都會提到。更清楚來說，我們會學習使用 socket 介面，然後用 Python 寫出一個基於主從式架構 (client-server) 的簡單的應用程式。

從應用層開始學習網路協定是一個很好的安排，因為我們都很熟這些應用程式，這樣我們之後在學習這些應用程式所依賴的網路協定的時候，會更容易理解為什麼這些協定要這樣設計，並且可以學到通用於下面每一層的設計原理。

----

[<< 1.8 Summary](https://hackmd.io/@kaeteyaruyo/computer-networking-1-8) | [目錄](https://hackmd.io/@kaeteyaruyo/computer-networking-index) | [2.1 Principles of Network Applications >>](https://hackmd.io/@kaeteyaruyo/computer-networking-2-1)
