網站開發快速入門教程3
發布時間:2021-12-07 14:33 瀏覽次數:次
WEB服務器原理
您是否曾經對將此網頁傳送給您的機制感到好奇?假設此刻您正坐在計算機前在瀏覽器中查看這個網頁。在您單擊這個網頁的鏈接或鍵入它的統一資源定位符(URL)時,屏幕后究竟執行了什么樣的過程才把這個網頁傳送到您的屏幕上的?
如果您曾經對這個過程感到好奇,或者希望知道您之所以能在網上沖浪的一些特定機制,那就請繼續閱讀。在本文中,您將了解Web服務器是如何把網頁傳送到您家、您的學?;蜣k公室的。讓我們開始吧!
假設您正坐在計算機前上網,這時接到朋友的電話說:“我剛剛讀了一篇精彩的文章!請鍵入這個URL查看一下。網址是 http://www.howstuffworks.com/Web-server.htm。”于是您將該URL鍵入您的瀏覽器并按下回車鍵。神奇的是,無論這個URL位于世界的哪個角落,該網頁都會出現在您的屏幕上。
以下示意圖盡可能淺顯地顯示了將網頁傳送到屏幕上的步驟:
您的瀏覽器建立了與Web服務器的連接,請求一個網頁并收到了該網頁。
在下一頁中,我們將更深入地探討。
如果您希望更詳細地了解將網頁傳送到計算機屏幕上的過程,下面就是幕后發生的基本步驟:
* 瀏覽器將URL分解為三個部分:
1. 協議(“http”)
2. 服務器名(“www.howstuffworks.com”)
3. 文件名(“Web-server.htm”)
* 瀏覽器與名稱服務器通信,將服務器名“www.howstuffworks.com”轉換成IP地址,服務器使用該地址連接到服務器計算機。
* 之后,瀏覽器以該IP地址在端口80上建立與服務器的連接。(我們將在本文的稍后部分討論端口。)
* 瀏覽器按照HTTP協議向服務器發送GET請求,請求“http://www.howstuffworks.com/Web-server.htm.”文件(請注意,使用GET請求時,可能會從瀏覽器向服務器發送Cookie,有關詳細信息,請參見網絡Cookie工作原理。)
* 之后,服務器會將該網頁的HTML文本發送到瀏覽器。(Cookie也可能通過網頁的標頭從服務器發送到瀏覽器。)
* 瀏覽器讀取HTML標記并設置網頁的格式,最后顯示在屏幕上。
如果您以前從來沒有研究過這個過程,那么您將會遇到很多新詞匯。要詳細理解整個過程,您需要學習有關IP地址、端口、協議等內容。后面的章節將為您提供完整的說明。
那么什么是“互聯網”?互聯網是由千百萬臺計算機組成的龐大集合,所有的計算機都在計算機網絡上鏈接在一起。該網絡能讓所有的計算機互相通信。家庭計算機可以使用能與互聯網服務提供商(ISP)通信的電話線調制解調器、DSL或電纜調制解調器與互聯網鏈接。企業或大學里的計算機通常有網絡接口卡(NIC),可以將該計算機連接到企業內的局域網(LAN)。之后,企業可以使用如T1線路這樣的高速電話線路將其LAN連接到ISP。T1線路每秒鐘可以處理大約150萬比特的數據,而使用調制解調器的普通電話線路通常每秒鐘可以處理3至5萬比特的數據。
ISP之后再與更大的ISP連接,而最大的ISP維護整個國家或地區的光纖“構架”。世界各地的構架通過光纖、海底電纜或衛星鏈接而連接起來。這樣,互聯網上的每臺計算機就可以與互聯網上的每臺其他計算機連接起來。
一般說來,互聯網上的所有計算機可以分成兩種類型:服務器和客戶端。向其他計算機提供服務(如Web服務器或FTP服務器)的計算機是服務器。而連接到服務器上獲取服務的計算機稱為客戶端。當您連接到雅虎閱讀一個網頁時,雅虎將提供一臺計算機(很可能是很大的計算機群集)在互聯網上使用,以便為您的請求提供服務。而雅虎提供的這臺計算機就是服務器。另一方面,您的計算機有可能沒向互聯網上的其他人提供任何服務。因此,它是一臺用戶計算機,也稱為客戶端。一臺計算機既是服務器也是客戶端的情況是可能的,也是常見的,但出于本文的目的,您可以姑且認為大多數計算機不是服務器就是計算機。
服務器計算機可以在互聯網上提供一種或多種服務。例如,服務器計算機上運行的軟件可以使該服務器計算機成為Web服務器、電子郵件服務器和FTP服務器。帶著特定目的訪問服務器計算機的客戶端也是如此,因此,客戶端會將其請求定向到總體服務器計算機上運行的特定軟件服務器。例如,如果您正在計算機上運行Web瀏覽器,那么您的計算機很可能是要與服務器計算機上的Web服務器通信。您的Telnet應用程序將要與Telnet服務器通信,您的電子郵件應用程序將要與電子郵件服務器通信,如此等等。
為了能直接找到這些計算機,互聯網上的每臺計算機均指定有一個唯一的地址,稱為IP地址。IP代表互聯網協議,這些地址都是32位數字,通常用4個由帶小數點的十進制數字組成的“八位字節”來表示。典型的IP地址如下所示:
IP地址中的4個數字稱為八位字節,這是因為它們可能是從0到255之間的值,即每個八位字節有28種可能性。
互聯網上的每臺計算機都有一個唯一的IP地址。服務器具有靜態IP地址,不會經常變化。通過調制解調器撥號連接的家庭計算機的IP地址通常是在該計算機撥入時由ISP指定的。該IP地址對于該次會話是唯一的,但是在該計算機下次撥入時,這個地址可能會不同。這樣,ISP就只需為每個支持的調制解調器分配一個IP地址,而不是為每個客戶都分配一個IP地址。
如果您使用的是Windows計算機,則可以通過WINIPCFG.EXE(對于Windows 2000/XP則是IPCONFIG.EXE)命令查看有關計算機的大量互聯網信息,包括您當前的IP地址和主機名。在UNIX計算機上,在命令提示符下鍵入nslookup和類似www.howstuffworks.com這樣的計算機名(例如“nslookup www.howstuffworks.com”)即可顯示該計算機的IP地址。您也可以使用hostname命令來了解您的計算機的名稱。(有關IP地址的更多信息,請參見IANA。)
至于互聯網上的計算機,要與服務器通信,只要有IP地址就夠了。在某些服務器上,僅有IP地址是不夠的,但多數大型服務器均是如此——請繼續閱讀以了解詳細信息。
216.27.61.137
因為大多數人很難記住組成IP地址的一大串數字,又因為IP地址有時需要更改,所以互聯網上所有的服務器還有易讀的名稱,稱為域名。例如,www.howstuffworks.com就是一個永久性的易讀名稱。對我們中的大多數人來說,記憶www.howstuffworks.com要比記憶209.116.69.66更容易。
www.howstuffworks.com這個名稱實際上分為3部分:
1. 主機名(“www”)
2. 域名(“howstuffworks”)
3. 頂級域名(“com”)
在“.com”域內的域名由名為VeriSign的注冊公司管理。VeriSign也管理“.net”域名。其他的注冊器(如RegistryPro、NeuLevel和Public Interest Registry)則管理其他的域(如.pro、.biz和.org)VeriSign創建頂級域名并保證在一個頂級域內的所有域名都是唯一的。VeriSign還維護每個網站的聯系信息并運行“whois”數據庫。主機名是由托管該域的公司創建的。“www”是很常見的主機名,但是現在很多地方將其省略,或者用一個指示該網站特定領域的不同的主機名來取代。例如在encarta.msn.com中,將Microsoft的Encarta電子百科全書的域名“encarta”指定為主機名以取代“www”。 一組稱為域名服務器(DNS)的服務器可以將易讀的域名映射到IP地址。這些服務器是可以將域名映射到IP地址的簡單數據庫,它們分布在互聯網上的各個地方。多數單獨的公司、ISP和大學均維護小型的名稱服務器,以將主機名映射到IP地址。還有中央名稱服務器,它們使用VeriSign提供的數據將域名映射到IP地址。
如果您將URL“http://www.howstuffworks.com/Web-server.htm”鍵入到瀏覽器中,瀏覽器會提取名稱“www.howstuffworks.com”并將其傳遞給域名服務器,域名服務器將返回www.howstuffworks.com的正確IP地址。要得到正確的IP地址,可能需要使用多個名稱服務器。例如,在www.howstuffworks.com的例子中,用于“.com”頂級域的名稱服務器能夠辨別知道主機名的名稱服務器的IP地址,而由HowStuffWorks ISP操作的、對該名稱服務器的查詢,則可以為HowStuffWorks服務器計算機提供實際的IP地址。
在UNIX計算機上,您可以使用nslookup命令來訪問同樣的服務。只要在命令行中鍵入一個名稱,如“www.howstuffworks.com”,該命令即會查詢名稱服務器并向您提供相應的IP地址。
因此歸結如下:互聯網由無數臺計算機組成,每臺計算機各自具有唯一的IP地址。這些計算機中有許多是服務器計算機,也就是說它們能向互聯網上的其他計算機提供服務。您可能已經聽說過這些服務器:電子郵件服務器、Web服務器、FTP服務器、Gopher服務器和Telnet服務器等,這里僅舉幾個例子。所有這些都是由服務器計算機提供的。
任何服務器計算機都使用編號的端口向互聯網提供其服務,服務器上可用的每項服務對應于一個端口。例如,如果一臺服務器計算機同時運行Web服務器和FTP服務器,則Web服務器通常位于端口80上,而 FTP 服務器位于端口21上??蛻舳耸褂锰囟ǖ腎P地址和特定的端口來連接服務。
人們熟知的每項服務都在一個為人熟知的端口號上提供。下面是一些常用的端口號:
* echo 7
* daytime 13
* qotd 17(日期的引用)
* ftp 21
* telnet 23
* smtp 25(簡單郵件傳送,即電子郵件)
* time 37
* nameserver 53
* nicname 43 (Who Is)
* gopher 70
* finger 79
* WWW 80
如果服務器計算機在一個端口上接受來自外部世界的連接,并且防火墻未保護此端口,那么您可以從互聯網上的任何地方連接到此端口并使用此項服務。請注意,這里并未強制Web服務器必須使用端口80。如果您要設置自己的計算機并在其上加載Web服務器軟件,那么您也可以將Web服務器放在端口918上,如果需要,您還可以將它放在任何其他未使用的端口上。之后,如果您的計算機名為xxx.yyy.com,互聯網上的其他人可以使用http://xxx.yyy.com:918這個URL連接到您的服務器上。“:918”顯式指定了端口號,其他人如果要訪問您的服務器,就必須將它包括在URL內。如果沒有指定端口號,則瀏覽器將將假定服務器使用的是人們熟知的端口80。
客戶端與某個端口的服務程序連接以后,會使用一個特定協議獲得服務。協議是想要使用某一服務的某一方與該服務之間進行通信的一種預定義方式。“某一方”可能是一個人,但在更多的情況下,它是一個計算機程序,例如Web瀏覽器。協議通常是文本,簡單說明客戶端和服務器進行會話的方式。
也許最簡單的協議是日期時間協議。如果您在一臺支持日期時間服務器的計算機上連接到端口13,該服務器將為您發送它的當前日期和時間,然后關閉連接。協議是“如果你連接到我,我將為你發送日期和時間,然后斷開連接”。大多數UNIX計算機都支持此服務器。如果您想嘗試一下,可以用Telnet應用程序連接到此服務器。在UNIX中,會話過程如下所示:
%telnet Web67.ntx.net 13
Trying 216.27.61.137...(正在嘗試 216.27.61.137...)
Connected to Web67.ntx.net.(已連接到 Web67.ntx.net。)
Escape character is '^]'.(轉義字符為“^]”。)
Sun Oct 25 08:34:06 1998(1998年10月25日星期日 08:34:06)
Connection closed by foreign host.(連接已被外部主機關閉。)
在Windows計算機上,您可以通過在MSDOS提示符下鍵入“telnet Web67.ntx.net 13”來訪問此服務器。
在本示例中,Web67.ntx.net是該服務器的UNIX計算機,13是日期時間服務的端口號。Telnet應用程序連接到端口13(telnet會自然連接到端口23,但您可以將其定向為連接到任何端口),之后,服務器會發送日期和時間并斷開連接。Telnet的大多數版本均允許您指定端口號,所以您可以使用您的計算機上可用的任何版本的Telnet來嘗試。
大多數協議涉及的內容并不僅限于日期時間,并在公開可用的“征求意見(RFC)文檔中進行指定(有關所有RFC的完整存檔,請訪問http://sunsite.auc.dk/RFC/)?;ヂ摼W上的每個Web服務器都遵循HTTP協議,該協議在1991年定義的原始HTTP中進行了精辟的總結。HTTP服務器可以理解的最基本的協議形式只包括一個命令:GET。如果您連接到一個能理解HTTP協議的服務器并讓它“GET文件名”,該服務器將做出相應的反應,為您發送指定文件的內容,然后斷開連接。下面是一個典型的會話:
%telnet www.howstuffworks.com 80
Trying 216.27.61.137...(正在嘗試 216.27.61.137...)
Connected to howstuffworks.com.(已連接到 howstuffworks.com。)
Escape character is '^]'.(轉義字符為“^]”。)
GET http://www.howstuffworks.com/
()
...
Connection closed by foreign host.(連接已被外部主機關閉。)
在原始HTTP協議中,您所要發送的只是實際文件名,比如“/”或“/Web-server.htm”。經過后來的修改后,它可以發送完整的URL。這使得托管虛擬域(許多域存在于單一的計算機上)的公司可以為他們托管的所有的域使用一個IP地址。其結果是數百個域都托管在209.116.69.66上,而這正是HowStuffWorks的IP地址。
本文來源于網絡,若有侵權請聯系3449817223#qq.com,將在第一時間刪除。