計算機網路 自頂向下方法 第七版 第二章 應用層

2020-10-29 12:00:46

本系列是學習感想和總結,如有錯誤,懇請評論區留言指正

系列文章連結

第一章 計算機網路和因特網
第二章 應用層



網路應用是計算機網路存在的理由。

1. 應用層協定原理

  網路核心裝置並不在應用層上起作用,網路應用被限制在端系統上。這樣的設計方法促進了網路應用程式的迅速研發和部署。
在這裡插入圖片描述

1.1 網路應用程式體系結構

  應用程式體系結構(application architecture)由應用程式設計者決定那個如何在各種端系統上組織該應用程式。目前兩種主流的應用程式體系結構是:客戶 - 伺服器體系結構和對等體系結構。

1.1.1 客戶 - 伺服器體系結構

  客戶 - 伺服器體系結構(client-server architecture)中有一個總是開啟的主機伺服器,它服務於來自稱為客戶主機的請求。

  在該體系結構中,不同的客戶之間不會直接通訊。伺服器具有一個固定的地址,該地址被稱作IP地址。

  使用客戶 - 伺服器體系結構的常見的應用有:全球廣域網、檔案傳輸、遠端登陸(Web、FTP、Telnet)電子郵件等。

  在這個體系結構的應用中,常常會有伺服器跟不上它所有客戶的請求的情況,此時常常會配備大量主機的資料中心來作為伺服器。

1.1.2 P2P體系結構

  在P2P體系結構(P2P architecture)中,對位於資料中心的專用伺服器具有最小(或者沒有)依賴。應用程式在間斷連線的主機對之間直接通訊,這些主機對稱作對等方(peer)。對等方不所屬於服務提供商,不通過專門的伺服器。伺服器用於跟蹤使用者的IP地址,但是使用者和使用者之間的報文不經過伺服器。

  常見的P2P應用有:檔案共用、對等方協助下載、因特網電話和視訊會議等。

  P2P協定最大的特性是自擴充套件性(self-scalability)。在P2P應用程式中,對等方的增加雖然會產生更多的工作負載,但是由於對等方會向其他對等方分發檔案,所以也會提高整個系統的服務能力。

在這裡插入圖片描述

1.2 程序通訊

  進行通訊的實際上是程序(process)。一個程序被認為是端系統內的一個程式。當一個端系統中執行多個不同的程序時,它們使用程序間通訊機制相互通訊。在兩個不同端系統上的程序,通過跨越計算機網路交換報文(message)相互通訊。

1.2.1 客戶和伺服器程序

  每對通訊的程序,將其中之一記作伺服器(server),將另一個記作客戶(client)

  我們定義伺服器和客戶如下:在一對程序通訊中,發起通訊的程序被標記做客戶,在對談開始時等待的聯絡的程序是伺服器

  對於Web應用,瀏覽器是客戶程式,Web伺服器是一臺伺服器程序。對於P2P而言,下載檔案的對等方記作客戶,上傳檔案的對等方記作伺服器。

1.2.2 程序和計算機網路之間的介面

  程序通過稱作通訊端(socket)的軟體介面向網路傳送報文和從網路接受報文。通訊端也稱作應用程式和網路之間的應用程式程式設計介面(Application Programming Interface, API)

  應用程式開發者對於運輸層的控制僅有:選擇運輸層協定、設定部分引數(例如最大報文段長度)。

1.2.3 程序定址

  為了向特定主機傳送分組,需要目的程序的兩類資訊:主機地址,在目的主機中程序的識別符號。

  主機由IP地址(IP address)標識,而程序在主機上的識別符號為目的埠號(port number)。目前許多流行的應用已經分配了特定的埠號,例如Web埠號是80,郵件伺服器的埠號是25

1.3 可供應用程式使用的運輸服務

我們需要根據可靠資料傳輸、吞吐量、定時和安全性幾類來選擇資料運輸服務。

1.3.1 可靠資料傳輸

  部分應用程式要求不能存在資料丟失,因此對於這些應用需要確保傳送方的資料正確完全地交付給接收方。如果一個協定可以提供這樣的資料傳輸,那麼認為它提供了可靠資料傳輸(reliable data transfer)

  當一個運輸層協定不提供可靠資料傳輸時,傳送端的某些資料可能會丟失,這些協定可能被容忍丟失的應用(loss-tolerant application)使用。比如多媒體應用能夠承受一定程度上的資料丟失。

1.3.2 吞吐量

  在程序通訊的過程中,可用吞吐量就是傳送程序能夠向接收程序交付位元的速率。可用的吞吐量是隨時間而波動的,於是某些協定能夠確保應用程式以某一吞吐量執行。

  具有吞吐量有要求的應用被稱作頻寬敏感應用(bandwidth-sensitive application),隊淘汰了沒有特定要求的是彈性應用(elastic application)

1.3.3 定時

  運輸層協定可以夠提供定時保證,定時保證以多種形式實現。這種服務比較適用於互動式實時應用程式,例如網路電話、多方遊戲等。對於非實時應用,低時延比高時延好,但是對端到端的時延沒有要求。

1.3.4 安全性

  運輸協定能夠為應用程式提供一種或者多種安全性服務。例如能夠對報文加密傳送,在交付給接收程序時解密。

1.4 因特網提供的運輸服務

  因特網為應用程式提供兩個運輸層協定:TCP、UDP。選擇哪一個要根據應用程式的特點來決定。

應用資料丟失頻寬時間敏感
檔案傳輸不能丟失彈性
電子郵件不能丟失彈性
Web檔案不能丟失彈性(幾 kbps)
因特網電話 / 視訊會議容忍丟失音訊(幾 kbps ~ 1Mbps)
視訊(10kbps ~ 5Mbps)
是, 100ms
流式儲存音訊 / 視訊容忍丟失同上是, 幾秒
互動式遊戲容忍丟失kbps ~ 10kbps是, 100ms
智慧手機訊息不能丟失彈性是和不是

1.4.1 TCP服務

  當某個應用程式呼叫TCP作為其運輸協定的時候,它能夠獲得TCP提供的兩種服務。

  1. 面向連線的服務
      在應用層資料包流動之前,TCP讓客戶和伺服器交換運輸層控制資訊(握手),以做好大量分組傳輸的準備。握手之後應該TCP連線在兩個程序的通訊端之間建立了。結束報文傳送後,需要拆除連線。
      這個連線是全雙工的,雙方可以同時進行報文收發。

  2. 可靠資料傳輸服務
      通訊的程序能夠無差錯、以適當順序交付所有資料,沒有資料的丟失和冗餘。

  TCP協定還具有擁塞控制等,能夠排程程序以避免因特網整體的擁塞。

1.4.2 UDP服務

  UDP服務不通過不必要的服務,沒有握手,提供不可靠資料傳輸。UDP也沒有擁塞控制。

1.5 應用層協定

  應用層協定(application-layer protocol)定義了執行在不同端系統上的應用層程式如何傳遞報文,具體定義了:報文型別、各種報文的語法、欄位的語意、何時和如何傳送報文。

  有些應用層協定是由RFC定義的,是公共的。也有一些是專用的協定。


2. WebHTTP

2.1 HTTP概況


未完待續