一臺(tái)Web服務(wù)器可搭建多個(gè)獨(dú)立域名的Web網(wǎng)站,也可作為通信路徑上的中轉(zhuǎn)服務(wù)器提升傳輸效率。
1.HTTP1.1規(guī)范允許一臺(tái)HTTP服務(wù)器搭建多個(gè)Web站點(diǎn)
提供Web托管服務(wù)的供應(yīng)商,可以用一臺(tái)服務(wù)器為多位客戶服務(wù),也可以以每位客戶持有的域名運(yùn)行各自不同的網(wǎng)站。這是因?yàn)槔昧颂摂M主機(jī)的功能。即使物理層面只有一臺(tái)服務(wù)器,但只要使用虛擬主機(jī)的功能,則可以假想已具有多臺(tái)服務(wù)器。
在互聯(lián)網(wǎng)上,域名通過DNS服務(wù)映射到IP地址之后訪問目標(biāo)網(wǎng)站。可見,當(dāng)請(qǐng)求發(fā)送到服務(wù)器時(shí),已經(jīng)時(shí)以IP地址形式訪問了。所以,如果一臺(tái)服務(wù)器內(nèi)托管了www.tricorder.jp和www.hackr.jp這兩個(gè)域名,當(dāng)收到請(qǐng)求時(shí)就需要弄清楚究竟要訪問哪個(gè)域名。在相同的IP地址下,由于虛擬主機(jī)可以寄存多個(gè)不同主機(jī)名和域名的Web網(wǎng)站,因此在發(fā)送HTTP請(qǐng)求時(shí),必須在Host首部?jī)?nèi)完整指定主機(jī)名或域名的URI。
2.通信數(shù)據(jù)轉(zhuǎn)發(fā)程序:代理、網(wǎng)關(guān)、隧道
HTTP通信時(shí),除客戶端和服務(wù)器以外,還有一些用于通信數(shù)據(jù)轉(zhuǎn)發(fā)的應(yīng)用程序,例如代理、網(wǎng)關(guān)和隧道。這些應(yīng)用程序和服務(wù)器可以將請(qǐng)求轉(zhuǎn)發(fā)給通信線路上的下一站服務(wù)器,并且能接收從那臺(tái)服務(wù)器發(fā)送的響動(dòng)再轉(zhuǎn)發(fā)給客戶端。
代理:是一種由轉(zhuǎn)發(fā)功能的應(yīng)用程序,它扮演了位于服務(wù)器和客戶端“中間人”的角色,接收由客戶端發(fā)送的請(qǐng)求并轉(zhuǎn)發(fā)給服務(wù)器,同時(shí)也接收服務(wù)器返回的響應(yīng)并轉(zhuǎn)發(fā)給客戶端。轉(zhuǎn)發(fā)時(shí),需要附加Via首部字段以標(biāo)記出經(jīng)過的主機(jī)信息。使用代理服務(wù)器的理由有:利用緩存技術(shù)減少網(wǎng)絡(luò)帶寬的流量,組織內(nèi)部針對(duì)特定網(wǎng)站的訪問控制,以獲取訪問日志為主要目的。代理有多種使用方法,按兩種基準(zhǔn)分類,一種是使用緩存,另一種是是否會(huì)修改報(bào)文。
緩存代理:代理轉(zhuǎn)發(fā)響應(yīng)時(shí),緩存代理會(huì)預(yù)先將資源的副本保存在代理服務(wù)器上。當(dāng)代理再次接收到對(duì)相同資源的請(qǐng)求時(shí),就可以不從源服務(wù)器那里獲取資源,而是將之前緩存的資源作為響應(yīng)返回。
透明代理:轉(zhuǎn)發(fā)請(qǐng)求或響應(yīng)時(shí),不對(duì)報(bào)文做任何加工的代理類型被稱為透明代理。反之,對(duì)報(bào)文內(nèi)容進(jìn)行加工的代理被稱為非透明代理。
網(wǎng)關(guān):是轉(zhuǎn)發(fā)其他服務(wù)器通信數(shù)據(jù)的服務(wù)器,接收從客戶端發(fā)送來的請(qǐng)求時(shí),它就像自己擁有資源的源服務(wù)器一樣對(duì)請(qǐng)求進(jìn)行更新,有時(shí)客戶端可能都不會(huì)察覺,自己的通信目標(biāo)時(shí)一個(gè)網(wǎng)關(guān)。網(wǎng)關(guān)與代理的工作機(jī)制類似,但網(wǎng)關(guān)能使通信線路上的服務(wù)器提供非HTTP協(xié)議服務(wù)。利用網(wǎng)關(guān)能提高通信的安全性,因?yàn)榭梢栽诳蛻舳伺c網(wǎng)關(guān)之間的通信線路上加密以確保連接的安全。比如,在Web購(gòu)物網(wǎng)站上進(jìn)行信用卡結(jié)算時(shí),網(wǎng)關(guān)可以和信用卡結(jié)算系統(tǒng)聯(lián)動(dòng)。
隧道:隧道是在相隔甚遠(yuǎn)的客戶端和服務(wù)器兩者之間進(jìn)行中轉(zhuǎn),并保持雙方通信連接的應(yīng)用程序。隧道的目的是確??蛻舳撕头?wù)端進(jìn)行安全的通信。隧道本身不會(huì)去解析HTTP請(qǐng)求,請(qǐng)求保持原樣中轉(zhuǎn)到之后的服務(wù)器,在通信雙方斷開連接時(shí)結(jié)束。
3.保存資源的緩存
緩存是指代理服務(wù)器或客戶端本地磁盤內(nèi)保存的資源副本。利用緩存可減少對(duì)源服務(wù)器的訪問,因此節(jié)省了通信流量和通信時(shí)間。即便緩存服務(wù)器內(nèi)有緩存,也不能保證每次都返回對(duì)同資源的請(qǐng)求。因?yàn)檫@關(guān)系到被緩存資源的有效性問題。當(dāng)遇到源服務(wù)器上的資源更新時(shí),如果還是使用不變的緩存,那就會(huì)演變成返回更新前的“舊”資源了。所以即便存在緩存,也會(huì)因?yàn)榭蛻舳说囊?,緩存的有效性等因素,向源服?wù)器確認(rèn)資源的有效性。若緩存失效,則再次從源服務(wù)器上獲取新資源。緩存不僅可以存在于緩存服務(wù)器內(nèi),還可以存在客戶端瀏覽器中。如果瀏覽器緩存有效,就不必再向服務(wù)器請(qǐng)求相同資源了,可以直接從本地磁盤內(nèi)讀取。