應用層(二)

四、萬維網 WWW

萬維網是一個大規模的、聯機式的信息儲藏所。用鏈接的方法能非常方便地從因特網上的一個站點訪問另一個站點,從而主動地按需獲取豐富的信息。

萬維網是分佈式 超媒體(hypermedia)系統,它是超文本(hypertext)系統的擴充。
一個超文本由多個信息源鏈接成。利用一個鏈接可使用戶找到另一個文檔。這些文檔可以位於世界上任何一個接在因特網上的超文本系統中。超文本是萬維網的基礎。
超媒體與超文本的區別是文檔內容不同。超文本文檔僅包含文本信息,而超媒體文檔還包含其他表示方式的信息,如圖形、圖像、聲音、動畫,甚至活動視頻圖像。

統一資源定位符 URL

統一資源定位符 URL 是對可以從因特網上得到的資源的位置和訪問方法的一種簡潔的表示。

8992321-db91708601cf0b0b.png

超文本傳送協議 HTTP

從層次的角度看,HTTP 是面向事務的(transaction-oriented)應用層協議,它是萬維網上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎。

特點:
HTTP 是面向事務的客戶服務器協議。
HTTP 1.0 協議是無狀態的(stateless)。
HTTP 協議本身也是無連接的,雖然它使用了面向連接的 TCP 向上提供的服務。

8992321-accef4971bcf0e70.png

用戶點擊鼠標後所發生的事件
(1) 瀏覽器分析超鏈指向頁面的 URL。
(2) 瀏覽器向 DNS 請求解析 www.tsinghua.edu.cn 的 IP 地址。
(3) 域名系統 DNS 解析出清華大學服務器的 IP 地址。
(4) 瀏覽器與服務器建立 TCP 連接
(5) 瀏覽器發出取文件命令:GET /chn/index.htm HTTP/1.1。
(6) 服務器給出響應,把文件 index.htm 發給瀏覽器。
(7) TCP 持續連接或釋放連接。
(8) 瀏覽器顯示「清華大學院系設置」文件 index.htm 中的所有文本。

8992321-795905c2f4599c7a.png
  • 持續連接
    HTTP/1.1 協議使用持續連接。
    萬維網服務器在發送響應後仍然在一段時間內保持這條連接,使同一個客戶(瀏覽器)和該服務器可以繼續在這條連接上傳送後續的 HTTP 請求報文和響應報文。
    這並不侷限於傳送同一個頁面上鍊接的文檔,而是隻要這些文檔都在同一個服務器上就行。
    • 非流水線方式:
      客戶在收到前一個響應後才能發出下一個請求。這比非持續連接的兩倍 RTT 的開銷節省了建立 TCP 連接所需的一個 RTT 時間。但服務器在發送完一個對象後,其 TCP 連接就處於空閒狀態,浪費了服務器資源。
    • 流水線方式:
      客戶在收到 HTTP 的響應報文之前就能夠接着發送新的請求報文。一個接一個的請求報文到達服務器後,服務器就可連續發回響應報文。使用流水線方式時,客戶訪問所有的對象只需花費一個 RTT時間,使 TCP 連接中的空閒時間減少,提高了下載文檔效率。

代理服務器(proxy server)

代理服務器(proxy server)又稱爲萬維網高速緩存(Web cache),它代表瀏覽器發出 HTTP 請求。
萬維網高速緩存把最近的一些請求和響應暫存在本地設備(磁盤)中。
當與暫時存放的請求相同的新請求到達時,萬維網高速緩存就把暫存的響應發送出去,而不需要按 URL 的地址再去因特網訪問該資源。

8992321-e581ee7eb1605afe.png
  1. 瀏覽器訪問因特網的服務器時,要先與校園網的高速緩存建立 TCP 連接,並向高速緩存發出 HTTP 請求報文
  2. 若高速緩存已經存放了所請求的對象,則將此對象放入 HTTP 響應報文中返回給瀏覽器。
  3. 否則,高速緩存就代表發出請求的用戶瀏覽器,與因特網上的源點服務器建立 TCP 連接,併發送 HTTP 請求報文。
  4. 源點服務器將所請求的對象放在 HTTP 響應報文中返回給校園網的高速緩存。
  5. 高速緩存收到此對象後,先複製在其本地存儲器中(爲今後使用),然後再將該對象放在 HTTP 響應報文中,通過已建立的 TCP 連接,返回給請求該對象的瀏覽器。

HTTP 的報文結構

HTTP 有兩類報文:
請求報文——從客戶向服務器發送請求報文。
響應報文——從服務器到客戶的回答。
由於 HTTP 是面向正文的(text-oriented),因此在報文中的每一個字段都是一些 ASCII 碼串,因而每個字段的長度都是不確定的。

8992321-13255010b338c27c.png
8992321-17adfdcaec63933a.png

通用網關接口 CGI(Common Gateway Interface)

CGI 是一種標準,它定義了動態文檔應如何創建,輸入數據應如何提供給應用程序,以及輸出結果應如何使用。萬維網服務器與 CGI 的通信遵循 CGI 標準。
「通用」:CGI 標準所定義的規則對其他任何語言都是通用的。
「網關」:CGI 程序的作用像網關。
「接口」:有一些已定義好的變量和調用等可供其他 CGI 程序使用。

CGI 程序的正式名字是 CGI 腳本(script)。
「腳本」指的是一個程序,它被另一個程序(解釋程序)而不是計算機的處理機來解釋或執行。腳本運行起來要比一般的編譯程序要慢,因爲它的每一條指令先要被另一個程序來處理(這就要一些附加的指令),而不是直接被指令處理器來處理。

活動文檔(active document)技術把所有的工作都轉移給瀏覽器端。
每當瀏覽器請求一個活動文檔時,服務器就返回一段程序副本在瀏覽器端運行。
活動文檔程序可與用戶直接交互,並可連續地改變屏幕的顯示。由於活動文檔技術不需要服務器的連續更新傳送,對網絡帶寬的要求也不會太高。

用 Java 技術創建活動文檔
在 Java 技術中使用 「小應用程序」(applet)來描述活動文檔程序。用戶從萬維網服務器下載嵌入了 Java 小應用程序的 HTML 文檔後,可在瀏覽器的屏幕上點擊某個圖像,就可看到動畫效果,或在下拉式菜單中點擊某個項目,就可看到計算結果。Java 技術是活動文檔技術的一部分。

8992321-e56e764bac758c8c.png
  • HTML 解釋程序是必不可少的,而其他的解釋程序則是可選的。
    解釋程序把 HTML 規格轉換爲適合用戶顯示硬件的命令來處理版面的細節。
    許多瀏覽器還包含 FTP 客戶程序,用來獲取文件傳送服務。一些瀏覽器也包含電子郵件客戶程序,使瀏覽器能夠發送和接收電子郵件。
  • 瀏覽器將它取回的每一個頁面副本都放入本地磁盤的緩存中。
    當用戶用鼠標點擊某個選項時,瀏覽器首先檢查磁盤的緩存。若緩存中保存了該項,瀏覽器就直接從緩存中得到該項副本而不必從網絡獲取,這樣就明顯地改善瀏覽器的運行特性。
    但緩存要佔用磁盤大量的空間,而瀏覽器性能的改善只有在用戶再次查看緩存中的頁面時纔有幫助。許多瀏覽器允許用戶調整緩存策略。

萬維網的信息檢索系統

在萬維網中用來進行搜索的程序叫做搜索引擎。

  • 全文檢索搜索引擎是一種純技術型的檢索工具。它的工作原理是通過搜索軟件到因特網上的各網站收集信息,找到一個網站後可以從這個網站再鏈接到另一個網站。然後按照一定的規則建立一個很大的在線數據庫供用戶查詢。
    用戶在查詢時只要輸入關鍵詞,就從已經建立的索引數據庫上進行查詢(並不是實時地在因特網上檢索到的信息)。
  • 分類目錄搜索引擎並不採集網站的任何信息,而是利用各網站向搜索引擎提交的網站信息時填寫的關鍵詞和網站描述等信息,經過人工審覈編輯後,如果認爲符合網站登錄的條件,則輸入到分類目錄的數據庫中,供網上用戶查詢。
    分類目錄搜索也叫做分類網站搜索。
  • 垂直搜索引擎(Vertical Search Engine)針對某一特定領域、特定人羣或某一特定需求提供搜索服務。垂直搜索也是提供關鍵字來進行搜索的,但被放到了一個行業知識的上下文中,返回的結果更傾向於信息、消息、條目等。

應用編程接口 API(Application Programming Interface)

應用進程的控制權和操作系統的控制權進行轉換的一個接口,即應用編程接口 API。

8992321-dfaec4c5e79aefc3.png

1、當應用進程需要使用網絡進行通信時就發出系統調用,請求操作系統爲其創建「套接字」,以便把網絡通信所需要的系統資源分配給該應用進程。
2、操作系統爲這些資源的總和用一個叫做套接字描述符的號碼來表示,並把此號碼返回給應用進程。應用進程所進行的網絡操作都必須使用這個號碼。
3、通信完畢後,應用進程通過一個關閉套接字的系統調用通知操作系統回收與該「號碼」相關的所有資源。

連接建立階段
1、當套接字被創建後,它的端口號和 IP 地址都是空的,因此應用進程要調用 bind(綁定)來指明套接字的本地地址。在服務器端調用 bind 時就是把熟知端口號和本地IP地址填寫到已創建的套接字中。這就叫做把本地地址綁定到套接字。
2、服務器在調用 bind 後,還必須調用 listen(收聽)把套接字設置爲被動方式,以便隨時接受客戶的服務請求。UDP服務器由於只提供無連接服務,不使用 listen 系統調用。
3、服務器緊接着就調用 accept(接受),以便把遠地客戶進程發來的連接請求提取出來。系統調用 accept 的一個變量就是要指明從哪一個套接字發起的連接。

五、電子郵件eMail

電子郵件把郵件發送到收件人使用的郵件服務器,並放在其中的收件人郵箱中,收件人可隨時上網到自己使用的郵件服務器進行讀取。

  • 發送郵件的協議:
    SMTP(簡單郵件傳送協議)
    MIME (通用因特網郵件擴充)擴充了SMTP協議,可在郵件中同時傳送多種類型的數據(如文本、聲音、圖像、視像等) 。
  • 讀取郵件的協議:
    POP3(郵局協議)
    IMAP(網際報文存取協議)功能強於POP3
8992321-aa11b44a88b62f89.png

用戶代理 UA (User Agent)

  • 用戶代理 UA :
    是用戶與電子郵件系統的接口,是電子郵件客戶端軟件。
    用戶代理的功能:撰寫、顯示、處理和通信。
  • 郵件服務器:
    發送和接收郵件,同時還要向發信人報告郵件傳送的情況(已交付、被拒絕、丟失等)。郵件服務器按照客戶/服務器方式工作。
    發送郵件用SMTP/MIME協議
    讀取郵件用POP3/IMAP協議。

簡單郵件傳送協議 SMTP

SMTP 所規定的就是在兩個相互通信的 SMTP 進程之間應如何交換信息。
由於 SMTP 使用客戶服務器方式,因此負責發送郵件的 SMTP 進程就是 SMTP 客戶,而負責接收郵件的 SMTP 進程就是 SMTP 服務器。

SMTP 規定了 14 條命令和 21 種應答信息。每條命令用 4 個字母組成,而每一種應答信息一般只有一行信息,由一個 3 位數字的代碼開始,後面附上(也可不附上)很簡單的文字說明。

郵局協議 POP 3

郵局協議 POP 是一個非常簡單、但功能有限的郵件讀取協議,現在使用的是它的第三個版本 POP3。
POP 也使用客戶服務器的工作方式。
POP的監聽端口號:110。
在接收郵件的用戶 PC 機中必須運行 POP 客戶程序,而在用戶所連接的 ISP 的郵件服務器中則運行 POP 服務器程序。

IMAP 協議(Internet Message Access Protocol)

IMAP 也是按客戶服務器方式工作,現在較新的是版本 4,即 IMAP4。
用戶在自己的 PC 機上就可以操縱 ISP 的郵件服務器的郵箱,就像在本地操縱一樣。
因此 IMAP 是一個聯機協議。當用戶 PC 機上的 IMAP 客戶程序打開 IMAP 服務器的郵箱時,用戶就可看到郵件的首部。若用戶需要打開某個郵件,則該郵件才傳到用戶的計算機上。

不要將郵件讀取協議 POP 或 IMAP 與郵件傳送協議 SMTP 弄混
發信人的用戶代理向源郵件服務器發送郵件,以及源郵件服務器向目的郵件服務器發送郵件,都是使用 SMTP 協議。
而 POP 協議或 IMAP 協議則是用戶從目的郵件服務器上讀取郵件所使用的協議。

通用因特網郵件擴充 MIME

  • MIME 並沒有改動 SMTP 或取代它,只是補足SMTP功能的不足,例如SMTP不支持許多其他非英語國家的文字(如中文、俄文等)的傳輸,SMTP 服務器會拒絕超過一定長度的郵件等。
  • MIME 的意圖是繼續使用目前的[RFC 822]格式,但增加了郵件主體的結構,並定義了傳送非 ASCII 碼的編碼規則。
8992321-95c1b7ae132057d8.png

六、動態主機配置協議 DHCP

  1. 爲了將軟件協議做成通用的和便於移植,協議軟件的編寫者把協議軟件參數化。這就使得在很多臺計算機上使用同一個經過編譯的二進制代碼成爲可能。
  2. 一臺計算機和另一臺計算機的區別,都可通過一些不同的參數來體現。在軟件協議運行之前,必須給每一個參數賦值。
  3. 在協議軟件中給這些參數賦值的動作叫做協議配置。
    一個軟件協議在使用之前必須是已正確配置的;具體的配置信息有哪些則取決於協議棧。
  4. 需要配置的項目
    (1) IP 地址
    (2) 子網掩碼
    (3) 默認路由器的 IP 地址
    (4) 域名服務器的 IP 地址
    這些信息通常存儲在一個配置文件中,計算機在引導過程中可以對這個文件進行存取。

動態主機配置協議 DHCP(Dynamic Host Configuration Protocol) 提供了即插即用連網(plug-and-play networking)的機制。這種機制允許一臺計算機加入新的網絡和獲取IP地址而不用手工參與。

運行過程:

  1. 需要 IP 地址的主機在啓動時就向 DHCP 服務器廣播發送發現報文(DHCPDISCOVER),這時該主機就成爲 DHCP 客戶。
    本地網絡上所有主機都能收到此廣播報文,但只有 DHCP 服務器纔回答此廣播報文。
  2. DHCP 服務器先在其數據庫中查找該計算機的配置信息。若找到,則返回找到的信息。若找不到,則從服務器的 IP 地址池(address pool)中取一個地址分配給該計算機。DHCP 服務器的回答報文叫做提供報文(DHCPOFFER)。
8992321-e2b93e9ff5db8f97.png

並不是每個網絡上都有 DHCP 服務器,這樣會使 DHCP 服務器的數量太多。現在是每一個網絡至少有一個DHCP 中繼代理,它配置了 DHCP 服務器的 IP 地址信息。
當 DHCP 中繼代理收到主機發送的發現報文後,就以單播方式向 DHCP 服務器轉發此報文,並等待其回答。收到 DHCP 服務器回答的提供報文後,DHCP 中繼代理再將此提供報文發回給主機

8992321-ff5e41a70479581f.png

DHCP 服務器分配給 DHCP 客戶的 IP 地址的臨時的,因此 DHCP 客戶只能在一段有限的時間內使用這個分配到的 IP 地址。DHCP 協議稱這段時間爲租用期
租用期的數值應由 DHCP 服務器自己決定。
DHCP 客戶也可在自己發送的報文中(例如,發現報文)提出對租用期的要求。

8992321-f87385dcca7e8a36.png
  1. DHCP 服務器被動打開 UDP 端口 67,等待客戶端發來的報文。
  2. DHCP 客戶從 UDP 端口 68發送 DHCP 發現報文。
  3. 凡收到 DHCP 發現報文的 DHCP 服務器都發出 DHCP 提供報文,因此 DHCP 客戶可能收到多個 DHCP 提供報文。
  4. DHCP 客戶從幾個 DHCP 服務器中選擇其中的一個,並向所選擇的 DHCP 服務器發送 DHCP 請求報文。
  5. 被選擇的 DHCP 服務器發送確認報文DHCPACK,進入已綁定狀態,並可開始使用得到的臨時 IP 地址了。
    DHCP 客戶現在要根據服務器提供的租用期 T 設置兩個計時器 T1 和 T2,它們的超時時間分別是 0.5T 和 0.875T。當超時時間到就要請求更新租用期
  6. 租用期過了一半(T1 時間到),DHCP 發送請求報文 DHCPREQUEST 要求更新租用期。
  7. DHCP 服務器若同意,則發回確認報文DHCPACK。DHCP 客戶得到了新的租用期,重新設置計時器。
  8. DHCP 服務器若不同意,則發回否認報文DHCPNACK。這時 DHCP 客戶必須立即
    停止使用原來的 IP 地址,而必須重新申請 IP 地址(回到步驟2)。
    若DHCP服務器不響應步驟6 的請求報文DHCPREQUEST,則在租用期過了 87.5% 時,DHCP 客戶必須重新發送請求報文 DHCPREQUEST(重複步驟6 ),然後又繼續後面的步驟
  9. DHCP 客戶可隨時提前終止服務器所提供的租用期,這時只需向 DHCP 服務器發送釋放報文 DHCPRELEASE 即可。