應用層與 HTTP

應用層(application layer)

當你打開瀏覽器、寄電子郵件或加入視訊通話時,你使用的就是應用層(application layer)。它是協定堆疊(protocol stack)最頂端的一層——也就是你真正看得到、會去操作的部分。可以把底下幾層(IP、TCP、乙太網路、無線電波)想成把密封箱子從一個地址送到另一個地址的郵政系統,而應用層則是箱子裡那些信件上寫的內容:兩支程式之間關於彼此到底想要什麼的真正對話。

更精確地說,應用層是網路應用程式與它們的協定所在之處。瀏覽器和網頁伺服器之間講 HTTP;郵件程式和郵件伺服器之間講 SMTP 或 IMAP;檔案程式講 FTP。這些協定只在端系統(你的筆電、那台伺服器)上運作——中間的路由器從不去讀它們。每個應用協定都定義了訊息的格式(哪些位元組擺在哪裡)、可以用什麼順序送出,以及收到訊息時各方要採取的動作。應用程式透過一個通訊端(socket)把訊息交給下方的傳輸層(通常是 TCP 或 UDP),並信任底下各層把這些位元組送達。

關鍵概念在於分工:應用層只關心對話的意義,不管位元如何傳送。一支照片分享 App 不在乎你的封包是走光纖還是 Wi-Fi、經過了哪些路由器;它只在乎位元組已經抵達,好讓它能把那些位元組解讀成一張影像。正是這種分隔,使得單一個傳輸服務(TCP)能承載成千上萬種完全不同的應用,也讓你明天就能發明一個全新的應用協定,而完全不必動到底下的網路。

你點了一個連結。位在應用層的瀏覽器組出一則 HTTP 訊息:「GET /index.html」。它把這段文字交給 TCP,TCP 把它切成一段段區段(segment),再交給 IP 加上位址,如此一層層往下直到實體線路。伺服器的應用層在另一端讀出來的,正是同樣的「GET /index.html」——底下各層不過是信差而已。

應用層訊息是端對端的:傳送端的 App 寫出什麼位元組,接收端的 App 讀到的就是同樣那些位元組。

OSI 模型把這部分拆成三層(應用層、表現層、會議層),但真實的網際網路(TCP/IP 模型)把它們合併成單一個應用層——表現與會話相關的事務由應用程式自己處理。

又称
layer 7第七層應用層