四、萬維網(wǎng) WWW
萬維網(wǎng)是一個大規(guī)模的歧蕉、聯(lián)機式的信息儲藏所汰蓉。用鏈接的方法能非常方便地從因特網(wǎng)上的一個站點訪問另一個站點,從而主動地按需獲取豐富的信息堂油。
萬維網(wǎng)是分布式 超媒體(hypermedia)系統(tǒng)修档,它是超文本(hypertext)系統(tǒng)的擴充。
一個超文本由多個信息源鏈接成府框。利用一個鏈接可使用戶找到另一個文檔吱窝。這些文檔可以位于世界上任何一個接在因特網(wǎng)上的超文本系統(tǒng)中。超文本是萬維網(wǎng)的基礎迫靖。
超媒體與超文本的區(qū)別是文檔內(nèi)容不同院峡。超文本文檔僅包含文本信息,而超媒體文檔還包含其他表示方式的信息系宜,如圖形照激、圖像、聲音盹牧、動畫俩垃,甚至活動視頻圖像励幼。
統(tǒng)一資源定位符 URL
統(tǒng)一資源定位符 URL 是對可以從因特網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示。
超文本傳送協(xié)議 HTTP
從層次的角度看口柳,HTTP 是面向事務的(transaction-oriented)應用層協(xié)議苹粟,它是萬維網(wǎng)上能夠可靠地交換文件(包括文本、聲音啄清、圖像等各種多媒體文件)的重要基礎六水。
特點:
HTTP 是面向事務的客戶服務器協(xié)議。
HTTP 1.0 協(xié)議是無狀態(tài)的(stateless)辣卒。
HTTP 協(xié)議本身也是無連接的掷贾,雖然它使用了面向連接的 TCP 向上提供的服務。
用戶點擊鼠標后所發(fā)生的事件
(1) 瀏覽器分析超鏈指向頁面的 URL荣茫。
(2) 瀏覽器向 DNS 請求解析 www.tsinghua.edu.cn 的 IP 地址想帅。
(3) 域名系統(tǒng) DNS 解析出清華大學服務器的 IP 地址。
(4) 瀏覽器與服務器建立 TCP 連接
(5) 瀏覽器發(fā)出取文件命令:GET /chn/index.htm HTTP/1.1啡莉。
(6) 服務器給出響應港准,把文件 index.htm 發(fā)給瀏覽器。
(7) TCP 持續(xù)連接或釋放連接咧欣。
(8) 瀏覽器顯示“清華大學院系設置”文件 index.htm 中的所有文本浅缸。
- 持續(xù)連接
HTTP/1.1 協(xié)議使用持續(xù)連接。
萬維網(wǎng)服務器在發(fā)送響應后仍然在一段時間內(nèi)保持這條連接魄咕,使同一個客戶(瀏覽器)和該服務器可以繼續(xù)在這條連接上傳送后續(xù)的 HTTP 請求報文和響應報文衩椒。
這并不局限于傳送同一個頁面上鏈接的文檔,而是只要這些文檔都在同一個服務器上就行哮兰。- 非流水線方式:
客戶在收到前一個響應后才能發(fā)出下一個請求毛萌。這比非持續(xù)連接的兩倍 RTT 的開銷節(jié)省了建立 TCP 連接所需的一個 RTT 時間。但服務器在發(fā)送完一個對象后喝滞,其 TCP 連接就處于空閑狀態(tài)阁将,浪費了服務器資源。 - 流水線方式:
客戶在收到 HTTP 的響應報文之前就能夠接著發(fā)送新的請求報文右遭。一個接一個的請求報文到達服務器后做盅,服務器就可連續(xù)發(fā)回響應報文。使用流水線方式時狸演,客戶訪問所有的對象只需花費一個 RTT時間言蛇,使 TCP 連接中的空閑時間減少,提高了下載文檔效率宵距。
- 非流水線方式:
代理服務器(proxy server)
代理服務器(proxy server)又稱為萬維網(wǎng)高速緩存(Web cache),它代表瀏覽器發(fā)出 HTTP 請求吨拗。
萬維網(wǎng)高速緩存把最近的一些請求和響應暫存在本地設備(磁盤)中满哪。
當與暫時存放的請求相同的新請求到達時婿斥,萬維網(wǎng)高速緩存就把暫存的響應發(fā)送出去,而不需要按 URL 的地址再去因特網(wǎng)訪問該資源哨鸭。
- 瀏覽器訪問因特網(wǎng)的服務器時民宿,要先與校園網(wǎng)的高速緩存建立 TCP 連接,并向高速緩存發(fā)出 HTTP 請求報文
- 若高速緩存已經(jīng)存放了所請求的對象像鸡,則將此對象放入 HTTP 響應報文中返回給瀏覽器活鹰。
- 否則,高速緩存就代表發(fā)出請求的用戶瀏覽器只估,與因特網(wǎng)上的源點服務器建立 TCP 連接志群,并發(fā)送 HTTP 請求報文。
- 源點服務器將所請求的對象放在 HTTP 響應報文中返回給校園網(wǎng)的高速緩存蛔钙。
- 高速緩存收到此對象后锌云,先復制在其本地存儲器中(為今后使用),然后再將該對象放在 HTTP 響應報文中吁脱,通過已建立的 TCP 連接桑涎,返回給請求該對象的瀏覽器。
HTTP 的報文結構
HTTP 有兩類報文:
請求報文——從客戶向服務器發(fā)送請求報文兼贡。
響應報文——從服務器到客戶的回答攻冷。
由于 HTTP 是面向正文的(text-oriented),因此在報文中的每一個字段都是一些 ASCII 碼串遍希,因而每個字段的長度都是不確定的等曼。
通用網(wǎng)關接口 CGI(Common Gateway Interface)
CGI 是一種標準,它定義了動態(tài)文檔應如何創(chuàng)建孵班,輸入數(shù)據(jù)應如何提供給應用程序涉兽,以及輸出結果應如何使用。萬維網(wǎng)服務器與 CGI 的通信遵循 CGI 標準篙程。
“通用”:CGI 標準所定義的規(guī)則對其他任何語言都是通用的枷畏。
“網(wǎng)關”:CGI 程序的作用像網(wǎng)關。
“接口”:有一些已定義好的變量和調(diào)用等可供其他 CGI 程序使用虱饿。
CGI 程序的正式名字是 CGI 腳本(script)拥诡。
“腳本”指的是一個程序,它被另一個程序(解釋程序)而不是計算機的處理機來解釋或執(zhí)行氮发。腳本運行起來要比一般的編譯程序要慢渴肉,因為它的每一條指令先要被另一個程序來處理(這就要一些附加的指令),而不是直接被指令處理器來處理爽冕。
活動文檔(active document)技術把所有的工作都轉(zhuǎn)移給瀏覽器端仇祭。
每當瀏覽器請求一個活動文檔時,服務器就返回一段程序副本在瀏覽器端運行颈畸。
活動文檔程序可與用戶直接交互乌奇,并可連續(xù)地改變屏幕的顯示没讲。由于活動文檔技術不需要服務器的連續(xù)更新傳送,對網(wǎng)絡帶寬的要求也不會太高礁苗。
用 Java 技術創(chuàng)建活動文檔
在 Java 技術中使用 “小應用程序”(applet)來描述活動文檔程序爬凑。用戶從萬維網(wǎng)服務器下載嵌入了 Java 小應用程序的 HTML 文檔后,可在瀏覽器的屏幕上點擊某個圖像试伙,就可看到動畫效果嘁信,或在下拉式菜單中點擊某個項目,就可看到計算結果疏叨。Java 技術是活動文檔技術的一部分潘靖。
- HTML 解釋程序是必不可少的,而其他的解釋程序則是可選的考廉。
解釋程序把 HTML 規(guī)格轉(zhuǎn)換為適合用戶顯示硬件的命令來處理版面的細節(jié)秘豹。
許多瀏覽器還包含 FTP 客戶程序,用來獲取文件傳送服務昌粤。一些瀏覽器也包含電子郵件客戶程序既绕,使瀏覽器能夠發(fā)送和接收電子郵件。 - 瀏覽器將它取回的每一個頁面副本都放入本地磁盤的緩存中涮坐。
當用戶用鼠標點擊某個選項時凄贩,瀏覽器首先檢查磁盤的緩存。若緩存中保存了該項袱讹,瀏覽器就直接從緩存中得到該項副本而不必從網(wǎng)絡獲取疲扎,這樣就明顯地改善瀏覽器的運行特性。
但緩存要占用磁盤大量的空間捷雕,而瀏覽器性能的改善只有在用戶再次查看緩存中的頁面時才有幫助椒丧。許多瀏覽器允許用戶調(diào)整緩存策略。
萬維網(wǎng)的信息檢索系統(tǒng)
在萬維網(wǎng)中用來進行搜索的程序叫做搜索引擎救巷。
-
全文檢索搜索引擎是一種純技術型的檢索工具壶熏。它的工作原理是通過搜索軟件到因特網(wǎng)上的各網(wǎng)站收集信息,找到一個網(wǎng)站后可以從這個網(wǎng)站再鏈接到另一個網(wǎng)站浦译。然后按照一定的規(guī)則建立一個很大的在線數(shù)據(jù)庫供用戶查詢棒假。
用戶在查詢時只要輸入關鍵詞,就從已經(jīng)建立的索引數(shù)據(jù)庫上進行查詢(并不是實時地在因特網(wǎng)上檢索到的信息)精盅。 -
分類目錄搜索引擎并不采集網(wǎng)站的任何信息帽哑,而是利用各網(wǎng)站向搜索引擎提交的網(wǎng)站信息時填寫的關鍵詞和網(wǎng)站描述等信息,經(jīng)過人工審核編輯后叹俏,如果認為符合網(wǎng)站登錄的條件妻枕,則輸入到分類目錄的數(shù)據(jù)庫中,供網(wǎng)上用戶查詢。
分類目錄搜索也叫做分類網(wǎng)站搜索佳头。 - 垂直搜索引擎(Vertical Search Engine)針對某一特定領域鹰贵、特定人群或某一特定需求提供搜索服務晴氨。垂直搜索也是提供關鍵字來進行搜索的康嘉,但被放到了一個行業(yè)知識的上下文中,返回的結果更傾向于信息籽前、消息亭珍、條目等。
應用編程接口 API(Application Programming Interface)
應用進程的控制權和操作系統(tǒng)的控制權進行轉(zhuǎn)換的一個接口枝哄,即應用編程接口 API肄梨。
1、當應用進程需要使用網(wǎng)絡進行通信時就發(fā)出系統(tǒng)調(diào)用挠锥,請求操作系統(tǒng)為其創(chuàng)建“套接字”众羡,以便把網(wǎng)絡通信所需要的系統(tǒng)資源分配給該應用進程。
2蓖租、操作系統(tǒng)為這些資源的總和用一個叫做套接字描述符的號碼來表示粱侣,并把此號碼返回給應用進程。應用進程所進行的網(wǎng)絡操作都必須使用這個號碼蓖宦。
3齐婴、通信完畢后,應用進程通過一個關閉套接字的系統(tǒng)調(diào)用通知操作系統(tǒng)回收與該“號碼”相關的所有資源稠茂。
連接建立階段
1柠偶、當套接字被創(chuàng)建后,它的端口號和 IP 地址都是空的睬关,因此應用進程要調(diào)用 bind(綁定)來指明套接字的本地地址诱担。在服務器端調(diào)用 bind 時就是把熟知端口號和本地IP地址填寫到已創(chuàng)建的套接字中。這就叫做把本地地址綁定到套接字电爹。
2蔫仙、服務器在調(diào)用 bind 后,還必須調(diào)用 listen(收聽)把套接字設置為被動方式藐不,以便隨時接受客戶的服務請求匀哄。UDP服務器由于只提供無連接服務,不使用 listen 系統(tǒng)調(diào)用雏蛮。
3涎嚼、服務器緊接著就調(diào)用 accept(接受),以便把遠地客戶進程發(fā)來的連接請求提取出來挑秉。系統(tǒng)調(diào)用 accept 的一個變量就是要指明從哪一個套接字發(fā)起的連接法梯。
五、電子郵件eMail
電子郵件把郵件發(fā)送到收件人使用的郵件服務器,并放在其中的收件人郵箱中立哑,收件人可隨時上網(wǎng)到自己使用的郵件服務器進行讀取夜惭。
- 發(fā)送郵件的協(xié)議:
SMTP(簡單郵件傳送協(xié)議)
MIME (通用因特網(wǎng)郵件擴充)擴充了SMTP協(xié)議,可在郵件中同時傳送多種類型的數(shù)據(jù)(如文本铛绰、聲音诈茧、圖像、視像等) 捂掰。 - 讀取郵件的協(xié)議:
POP3(郵局協(xié)議)
IMAP(網(wǎng)際報文存取協(xié)議)功能強于POP3
用戶代理 UA (User Agent)
- 用戶代理 UA :
是用戶與電子郵件系統(tǒng)的接口敢会,是電子郵件客戶端軟件。
用戶代理的功能:撰寫这嚣、顯示鸥昏、處理和通信。 - 郵件服務器:
發(fā)送和接收郵件姐帚,同時還要向發(fā)信人報告郵件傳送的情況(已交付吏垮、被拒絕、丟失等)罐旗。郵件服務器按照客戶/服務器方式工作膳汪。
發(fā)送郵件用SMTP/MIME協(xié)議
讀取郵件用POP3/IMAP協(xié)議。
簡單郵件傳送協(xié)議 SMTP
SMTP 所規(guī)定的就是在兩個相互通信的 SMTP 進程之間應如何交換信息尤莺。
由于 SMTP 使用客戶服務器方式旅敷,因此負責發(fā)送郵件的 SMTP 進程就是 SMTP 客戶,而負責接收郵件的 SMTP 進程就是 SMTP 服務器颤霎。
SMTP 規(guī)定了 14 條命令和 21 種應答信息媳谁。每條命令用 4 個字母組成,而每一種應答信息一般只有一行信息友酱,由一個 3 位數(shù)字的代碼開始晴音,后面附上(也可不附上)很簡單的文字說明。
郵局協(xié)議 POP 3
郵局協(xié)議 POP 是一個非常簡單缔杉、但功能有限的郵件讀取協(xié)議锤躁,現(xiàn)在使用的是它的第三個版本 POP3。
POP 也使用客戶服務器的工作方式或详。
POP的監(jiān)聽端口號:110系羞。
在接收郵件的用戶 PC 機中必須運行 POP 客戶程序,而在用戶所連接的 ISP 的郵件服務器中則運行 POP 服務器程序霸琴。
IMAP 協(xié)議(Internet Message Access Protocol)
IMAP 也是按客戶服務器方式工作椒振,現(xiàn)在較新的是版本 4,即 IMAP4梧乘。
用戶在自己的 PC 機上就可以操縱 ISP 的郵件服務器的郵箱澎迎,就像在本地操縱一樣庐杨。
因此 IMAP 是一個聯(lián)機協(xié)議。當用戶 PC 機上的 IMAP 客戶程序打開 IMAP 服務器的郵箱時夹供,用戶就可看到郵件的首部灵份。若用戶需要打開某個郵件,則該郵件才傳到用戶的計算機上哮洽。
不要將郵件讀取協(xié)議 POP 或 IMAP 與郵件傳送協(xié)議 SMTP 弄混
發(fā)信人的用戶代理向源郵件服務器發(fā)送郵件填渠,以及源郵件服務器向目的郵件服務器發(fā)送郵件,都是使用 SMTP 協(xié)議袁铐。
而 POP 協(xié)議或 IMAP 協(xié)議則是用戶從目的郵件服務器上讀取郵件所使用的協(xié)議揭蜒。
通用因特網(wǎng)郵件擴充 MIME
- MIME 并沒有改動 SMTP 或取代它,只是補足SMTP功能的不足剔桨,例如SMTP不支持許多其他非英語國家的文字(如中文、俄文等)的傳輸徙融,SMTP 服務器會拒絕超過一定長度的郵件等洒缀。
- MIME 的意圖是繼續(xù)使用目前的[RFC 822]格式,但增加了郵件主體的結構欺冀,并定義了傳送非 ASCII 碼的編碼規(guī)則树绩。
六、動態(tài)主機配置協(xié)議 DHCP
- 為了將軟件協(xié)議做成通用的和便于移植隐轩,協(xié)議軟件的編寫者把協(xié)議軟件參數(shù)化饺饭。這就使得在很多臺計算機上使用同一個經(jīng)過編譯的二進制代碼成為可能。
- 一臺計算機和另一臺計算機的區(qū)別职车,都可通過一些不同的參數(shù)來體現(xiàn)瘫俊。在軟件協(xié)議運行之前,必須給每一個參數(shù)賦值悴灵。
- 在協(xié)議軟件中給這些參數(shù)賦值的動作叫做協(xié)議配置扛芽。
一個軟件協(xié)議在使用之前必須是已正確配置的;具體的配置信息有哪些則取決于協(xié)議棧积瞒。 - 需要配置的項目
(1) IP 地址
(2) 子網(wǎng)掩碼
(3) 默認路由器的 IP 地址
(4) 域名服務器的 IP 地址
這些信息通常存儲在一個配置文件中川尖,計算機在引導過程中可以對這個文件進行存取。
動態(tài)主機配置協(xié)議 DHCP(Dynamic Host Configuration Protocol) 提供了即插即用連網(wǎng)(plug-and-play networking)的機制茫孔。這種機制允許一臺計算機加入新的網(wǎng)絡和獲取IP地址而不用手工參與叮喳。
運行過程:
- 需要 IP 地址的主機在啟動時就向 DHCP 服務器廣播發(fā)送發(fā)現(xiàn)報文(DHCPDISCOVER),這時該主機就成為 DHCP 客戶缰贝。
本地網(wǎng)絡上所有主機都能收到此廣播報文馍悟,但只有 DHCP 服務器才回答此廣播報文。 - DHCP 服務器先在其數(shù)據(jù)庫中查找該計算機的配置信息揩瞪。若找到赋朦,則返回找到的信息。若找不到,則從服務器的 IP 地址池(address pool)中取一個地址分配給該計算機宠哄。DHCP 服務器的回答報文叫做提供報文(DHCPOFFER)壹将。
并不是每個網(wǎng)絡上都有 DHCP 服務器,這樣會使 DHCP 服務器的數(shù)量太多∶担現(xiàn)在是每一個網(wǎng)絡至少有一個DHCP 中繼代理诽俯,它配置了 DHCP 服務器的 IP 地址信息。
當 DHCP 中繼代理收到主機發(fā)送的發(fā)現(xiàn)報文后承粤,就以單播方式向 DHCP 服務器轉(zhuǎn)發(fā)此報文暴区,并等待其回答。收到 DHCP 服務器回答的提供報文后辛臊,DHCP 中繼代理再將此提供報文發(fā)回給主機
DHCP 服務器分配給 DHCP 客戶的 IP 地址的臨時的仙粱,因此 DHCP 客戶只能在一段有限的時間內(nèi)使用這個分配到的 IP 地址。DHCP 協(xié)議稱這段時間為租用期彻舰。
租用期的數(shù)值應由 DHCP 服務器自己決定伐割。
DHCP 客戶也可在自己發(fā)送的報文中(例如,發(fā)現(xiàn)報文)提出對租用期的要求刃唤。
- DHCP 服務器被動打開 UDP 端口 67隔心,等待客戶端發(fā)來的報文。
- DHCP 客戶從 UDP 端口 68發(fā)送 DHCP 發(fā)現(xiàn)報文尚胞。
- 凡收到 DHCP 發(fā)現(xiàn)報文的 DHCP 服務器都發(fā)出 DHCP 提供報文硬霍,因此 DHCP 客戶可能收到多個 DHCP 提供報文。
- DHCP 客戶從幾個 DHCP 服務器中選擇其中的一個笼裳,并向所選擇的 DHCP 服務器發(fā)送 DHCP 請求報文唯卖。
- 被選擇的 DHCP 服務器發(fā)送確認報文DHCPACK,進入已綁定狀態(tài)侍咱,并可開始使用得到的臨時 IP 地址了耐床。
DHCP 客戶現(xiàn)在要根據(jù)服務器提供的租用期 T 設置兩個計時器 T1 和 T2,它們的超時時間分別是 0.5T 和 0.875T楔脯。當超時時間到就要請求更新租用期 - 租用期過了一半(T1 時間到)撩轰,DHCP 發(fā)送請求報文 DHCPREQUEST 要求更新租用期。
- DHCP 服務器若同意昧廷,則發(fā)回確認報文DHCPACK堪嫂。DHCP 客戶得到了新的租用期,重新設置計時器木柬。
- DHCP 服務器若不同意皆串,則發(fā)回否認報文DHCPNACK。這時 DHCP 客戶必須立即
停止使用原來的 IP 地址眉枕,而必須重新申請 IP 地址(回到步驟2)慢蜓。
若DHCP服務器不響應步驟6 的請求報文DHCPREQUEST,則在租用期過了 87.5% 時钧栖,DHCP 客戶必須重新發(fā)送請求報文 DHCPREQUEST(重復步驟6 ),然后又繼續(xù)后面的步驟 - DHCP 客戶可隨時提前終止服務器所提供的租用期副硅,這時只需向 DHCP 服務器發(fā)送釋放報文 DHCPRELEASE 即可。