《計算機網絡:自頂向下方法與Internet特色》——應用層

一、應用層協議原理

網絡應用的核心部件是軟件,網絡的應用軟件分布于兩個或以上的端系統中。(例如Web應用:運行在用戶主機的瀏覽器軟件和運行在Web服務器的Web服務器軟件)。彼此通信的并不是軟件部件本身,而是進程。運行在不同端系統的進程通過網絡交換消息彼此通信。

1.應用層協議

1.應用層協議僅僅是網絡應用的一部分。

Web應用:一個文檔格式的標準(HTML)/Web瀏覽器軟件(如IE瀏覽器)/Web服務器軟件(如Microsoft服務器)/一個應用層協議(HTTP) ?

電子郵件應用:郵件服務器/郵件閱讀器/電子郵件消息結構標準/一個應用層協議(SMTP)

應用層協議定義運行在不同端系統上的應用程序進程如何彼此傳遞消息。

具體定義了:(1)所傳遞消息的類型(請求消息和響應消息);(2)各種消息類型的語法(消息中的各個字段以及如何定界);(3)各個字段的語義;(4)確定一個進程何時以及如何發出消息或響應所收到消息的規則。

2.客戶和服務器

一個網絡應用協議通常由客戶端和服務器端兩個對等的“端”或實體,他們分別對應運行客戶程序的客戶進程和運行服務器程序的服務器進程。處于一個端系統中的客戶端和處于另一個端系統中的服務器端彼此通信。(例如Web瀏覽器實現的是HTTP客戶端,Web服務器實現的是HTTP服務器端)我們把發起會話的主機標記為客戶。

3.進程間跨網絡的通信

一個網絡應用涉及兩臺不同主機中跨網絡彼此通信的兩個進程,這兩個進程通過各自的套接字(socket)發送和接收消息彼此通信。(可以把套接字看作相應進程上的“門”)

套接字是單臺主機內應用層和傳輸層之間的接口。

應用程序開發人員可以完全控制套接字的應用層一側,對于傳輸層一側卻只能控制:(1)傳輸協議的選擇;(2)諸如最大緩沖區大小和最大片段大小等有限幾個傳輸層參數的調整。

應用程序進程、套接字及底層的傳輸協議

4.進程尋址

為了讓發送進程能夠識別接收進程,用于標識接收進程的消息有兩個:(1)接收主機的主機名或主機地址;(2)在接收主機內部識別接收進程的標識符(接收進程的端口號)

5.用戶代理(user agent)

用戶代理是一個位于用戶和網絡應用之間的接口。

例如Web應用的用戶代理是瀏覽器,瀏覽器使得用戶可以看web頁面,提供表單輸入,與Java小程序交互等等。

2.應用所需的服務

1.可靠性(無數據丟失)

2.帶寬(以特定的持續速率傳送數據)

3.實時性

一些網絡應用的服務需求

3.由因特網傳輸協議提供的服務

1.TCP服務

TCP服務模型包括面向連接的服務和可靠的數據傳輸服務。TCP還包括一個擁塞控制機制。

面向連接的服務指客戶端和服務器端的TCP在開始傳輸應用層消息之前,先交換傳輸層控制信息。(TCP連接:全雙工連接/松散方式)

可靠的傳輸服務指的是彼此通信的進程可以依賴TCP無錯地順序遞送所有數據。

TCP沒有提供的服務:(1)不保證最小傳輸率,不允許發送進程以想要的任意速率發送;(2)不提供任何延遲保證

2.UDP服務

不提供非必要服務/輕量級傳輸協議/無連接的/沒有握手過程/提供不可靠數據傳輸服務/不保證消息最終到達接收套接字的順序/不包含擁塞控制機制/不提供定時保證

流行的因特網應用及它們的應用層協議和用以支撐的傳輸協議

二、Web:HTTP

1.HTTP概貌

Web頁面由多個對象構成,對象是可由單個URL尋址的文件如HTML文件、JPEG圖像等。大多數Web頁面由單個基本HTML文件和若干個所引用的對象構成?;綡TML文件使用相應的URL來引用本頁面的其他對象。每個URL由存放該對象的服務器主機名和該對象的路徑名兩部分構成。

HTTP定義Web客戶如何從Web服務器請求頁面,以及服務器如何把Web頁面傳送給客戶。

(1)1997年底,實現了RFC 1945中定義的HTTP/1.0版本

(2)1998年底,實現了RFC 2616中定義的HTTP/1.1版本

HTTP把TCP作為底層傳輸協議。

HTTP是一個無狀態的協議(stateless protocol),HTTP服務器不維護客戶的狀態信息。

2.非持久連接和持久連接

非持久連接:每次服務器發出一個對象后,相應的TCP連接就被關閉,也就是說每個連接都沒有持續到可用于傳送其他對象。每個TCP連接只用于傳輸一個請求消息和一個響應消息。

請求并接收一個HTML文件所需的時間估算

非持久連接每個對象都有2個RTT(round-trip time)的響應延長,每個對象都遭受TCP緩啟動(slow start)。

持久連接:服務器在發出響應后讓TCP連接繼續打開著,同一對客戶/服務器之間的后續請求和響應可以通過這個連接發送。通常,HTTP服務器在某個連接閑置一段特定時間后關閉它。(緩啟動延遲比較小)

不帶流水線(without pipelining)的持久連接:客戶只在收到前一個請求的響應后才發出新的請求。(每個對象都有1個RTT的響應延長、空等請求)

帶流水線(with pipelining)的持久連接(HTTP/1.1默認):HTTP客戶每碰見一個引用就立即發出一個請求。(所有引用對象一共只經歷1個RTT的延遲)

3.HTTP消息格式

HTTP請求消息

請求消息的一般格式

HTTP響應消息

響應消息的一般格式

4.用戶-服務器交互:身份認證和cookie

HTTP提供了兩種幫助服務器標識用戶的機制:身份認證和cookie。

用戶認證:Web站點要求用戶提供一個用戶名-口令對才能訪問存放在其服務器中的文檔。HTTP提供特殊的狀態碼和頭部來幫助Web站點執行身份認證。

cookie:cookies是一種可由Web站點用來跟蹤用戶的候選機制。

一個客戶首次聯系一個使用cookie的Web站點。服務器會在其響應中吧phan一個Set-Cookie:頭部??蛻羰盏竭@個響應消息,往存放在客戶主機中的某個特殊的cookie文件中添加一行,這一行一般包含服務器主機的主機名和這個與用戶關聯的標識數。一段時間后請求同一個服務器時,由同一個用戶啟動的新客戶會在請求消息中包含一個Cookie:頭部,其值為早先由該服務器產生的標識數。

用cookie保持用戶狀態

目的:用戶認證時不用每次都輸入用戶名和口令/記住用戶偏好以便投放廣告/建立虛擬購物車

5.帶條件的GET

在允許客戶進行高速緩存的同時,仍確保傳遞給瀏覽器的所有對象都是最新的。

滿足(1)使用GET方法(2)包含If-Modified-Since:頭部的HTTP請求消息就是所謂的帶條件的GET消息。

6.Web高速緩存服務器

Web高速緩存服務器是具有高速緩存功能的Web代理服務器,它們在代表客戶執行HTTP請求的同時,在自己的硬盤空間中保存進來請求到的對象的一個拷貝。

優勢:(1)可以充分縮短客戶請求的響應時間(特別是在客戶與目標服務器之間的瓶頸帶寬比它與高速緩存服務器之間的瓶頸帶寬小得多時);(2)顯著降低因特網得總體Web流量;(3)可提供一個用于迅速散布內容得基礎設施。

三、文件傳送:FTP


FTP在本地和遠程文件系統間傳送文件

FTP也運行在TCP之上。FTP使用兩個并行得TCP連接來傳送文件,(1)控制連接,用于在客戶主機和服務器主機之間發送控制信息,如用戶名和口令、改變遠程目錄得命令、取或放文件的命令;(2)數據連接用于真正發送文件。

帶外(out-of-band)發送控制信息:FTP/RTSP

帶內(in-band)發送控制信息:HTTP/SMTP

在整個會話期間,控制連接一直打開著,FTP服務器必須維護關于用戶的狀態,必須把控制連接與特定的用戶關聯起來,必須隨用戶在遠程目錄樹中的游動跟蹤其當前目錄。而數據連接則有可能為每次文件傳送請求重新打開一次。

FTP命令:由4個大寫的ASCII字符構成(如USER/PASS/LIST/RETR/STOR)

FTP應答:一個3位數值(如331/125/425/452)

4.電子郵件

1.SMTP

郵件服務器構成了電子郵件系統的核心。每個收信人都有一個位于某個郵件服務器上的郵箱,用于管理和維護已經發送給他的郵件消息。

Alice發送一個郵件給Bob

SMTP通常不使用中間的郵件服務器主機中轉郵件,即便源端和目的端郵件服務器主機位于地球上相反的位置也一樣。

SMTP命令:HELO , ? ? ?MAIL FROM ?, ?RCPT TO ?, ?DATA , ?QUIT

2.與HTTP的比較

相同:(1)都用于一臺主機向另一臺主機傳送文件(2)都使用持久連接

不同:(1)HTTP是內拉式協議(pull protocol)---TCP連接是想接收文件的主機發起的(拉過來);SMTP是外推式協議(push protocol)---TCP連接是想發送文件的主機發起的(推出去)(2)SMTP要求包括信體部分在內的每個郵件信息都是7位ASCII文本格式(二進制數據應以一定的方式先編碼成ASCII文本)(3)處理包含文本和圖像或其他媒體類型的文檔:HTTP是把每個對象封裝在各自的HTTP響應消息中,SMTP則是把同一個郵件內的各個對象置于同一個郵件消息中。

3.郵件消息格式和MIME

郵件消息的每個信頭必須有一個From:頭部和一個To:頭部,還可以有一個Subject:頭部和其他頭部。

SMTP命令是SMTP握手協議的一部分,郵件消息頭部則屬于郵件消息的一部分。

非ASCII數據的MIME擴展(Multipurpose Internet Mail Extensions)

支持多媒體的兩個關鍵MIME頭部是Content-Type:和Content-Transfer-Encoding:。

Received:頭部(由SMTP接收服務器插到每個郵件消息的頂端),給出了發出本消息的SMTP服務器的主機名(“from”)、收取本消息的SMTP服務器的主機名(“by”)以及接收服務器收取本消息的時間。

4.郵件訪問協議

用戶代理不可能使用SMTP從郵件服務器獲取郵件消息,因為郵件消息的獲取是一個內拉操作,SMTP是一個外推協議。

電子郵件協議及其通信實體

POP3

POP3服務器與郵件服務器運行在相同的服務器主機上,前者從用戶的郵箱中讀取并可能刪除郵件消息,后者往用戶的郵箱中寫入郵件消息。

TCP連接建立好之后,POP3依次經歷授權認證、處理和更新3個階段。

授權階段兩個基本命令:user <用戶名> 和 pass<口令>

處理階段有兩種模式:(1)下載并刪除(2)下載并保留 ? list,retr,dele,quit 命令

在POP3會話期間,用戶代理發出命令,POP3服務器則對每個命令響應一個應答。

在用戶代理和郵件服務器之間的POP3會話期間,POP3服務器維護一定的狀態信息,不過POP3服務器不會跨會話保存狀態信息。

IMAP

為用戶提供了在自己的郵件服務器主機中創建文件夾以及將郵件從一個文件夾移動到另一個文件夾的命令

為用戶提供了在遠程文件夾中查詢郵件的命令,按指定條件去查詢匹配的郵件

維護了會話的用戶狀態信息

允許用戶代理獲取郵件消息部件

基于Web的電子郵件

通過HTTP傳輸郵件

五、DNS--因特網的目錄服務

1.DNS提供的服務

DNS既是一個在由名稱服務器主機構成的層次結構中實現的分布式數據庫,又是一個允許客戶主機和名稱服務器主機通信以使用域名轉換服務的應用層協議。

DNS協議是應用層協議,由其他應用層協議(HTTP、SMTP、FTP)所使用,運行在UDP上。

DNS提供的服務:(1)主機名到IP地址的轉換(2)主機別名(3)郵件服務器別名(4)負載分擔

2.DNS工作機理

集中式設計的問題:單點故障/巨大訪問量/遠距離集中式數據庫/維護

DNS是一個在因特網中實現分布式數據庫的范例。

為了處理擴展性的問題,DNS使用了大量的以層次方式組織的DNS服務器。沒有一臺DNS服務器擁有Internet中所有主機的映射。層級結構中有3種DNS服務器:根DNS服務器、頂級域DNS服務器、權威DNS服務器

遞歸查詢和迭代查詢

遞歸和迭代
遞歸查詢

DNS caching:本地DNS服務器緩存了主機/IP地址對,當再次接受相同請求時可以直接返回請求結果

3.DNS記錄

共同實現了DNS分布式數據庫的所有DNS服務器存儲了資源記錄(Resource Record,RR),每個DNS應答消息攜帶一個或多個資源記錄

資源記錄包含了下列字段:(Name,Value,Type,TTL)

DNS記錄

4.DNS消息

DNS消息格式

六、用TCP進行套接字編程

七、用UDP進行套接字編程

八、構建一個簡單的Web服務器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容