來源:jliang981 發(fā)布時間:2018-12-08 14:54:23 閱讀量:1028
web服務(wù)器實現(xiàn)
web服務(wù)器實現(xiàn)了http和相關(guān)的tcp連接處理,負責(zé)管理web服務(wù)器提供的資源,
以及對web服務(wù)器的配置、控制、及擴展方面的管理。
1
2
通用的軟件web服務(wù)器 有很多種,大多來自三個公司,apache,微軟和sun的iplant。
web服務(wù)器設(shè)備 就是預(yù)先包裝好的軟硬件解決方案,廠商在他們選擇的計算機平臺上預(yù)先安裝好軟件服務(wù)器,并將軟件配置好。
嵌入式web服務(wù)器 可以嵌入到電子消費品中去。
實際的web服務(wù)器會做什么
建立連接 如果不希望與這個客戶端建立連接,就關(guān)閉
接受請求
處理請求
訪問資源 訪問報文中指定的資源
構(gòu)建響應(yīng) 創(chuàng)建具有正確響應(yīng)首部的http報文。
發(fā)送響應(yīng)
記錄事務(wù)處理過程
接受客戶端連接
客戶端請求一條到服務(wù)器的tcp連接時,web服務(wù)器會建立連接,并將接連添加到現(xiàn)存的web服務(wù)器連接列表中去,做好監(jiān)視連接上的數(shù)據(jù)。web服務(wù)器可以隨意的拒絕或者關(guān)閉任意一條連接。
客戶端主機名識別:web服務(wù)器將客戶端主機名用于**詳細的訪問控制和日志記錄**。但是請求過來的時候,只有客戶端ip,可以通過方向dns來查找主機名,但是可能會很慢。通過ident協(xié)議來確定客戶端用戶。如果客戶端支持ident協(xié)議,就在tcp端口113上堅挺ident請求。這種方式在因特網(wǎng)上,并不常用。
1
2
3
接受請求報文
解析請求行,獲取請求方法,和資源標(biāo)識符。獲取首部。如果有的話,還需要讀取請求主體。
1
報文內(nèi)部表示法 有些web服務(wù)器使用內(nèi)部數(shù)據(jù)結(jié)構(gòu)來存儲請求報文。將首部放到一個快速查詢表中。
連接輸入輸出的處理結(jié)構(gòu) 因為有的請求,會在任意時刻到達,web服務(wù)器會不停的觀察有無新的web請求。不同的web服務(wù)器結(jié)構(gòu)會以不同的方式為請求服務(wù):單線程web服務(wù)器,多進程及多線程web服務(wù)器,復(fù)用的io服務(wù)器(異步io),復(fù)用的多線程web服務(wù)器。
對資源的映射和訪問
負責(zé)發(fā)送預(yù)先創(chuàng)建好的內(nèi)容,或者服務(wù)器上程序動態(tài)生成內(nèi)容。
1
docroot 最簡單的資源映射,就是使用uri作為名字訪問web服務(wù)器文件系統(tǒng)中的文件。web服務(wù)器會有一個特殊的文件夾專門存放web內(nèi)容。稱為文檔根目錄。把請求中的uri放在根目錄后面找到對應(yīng)的資源。
虛擬托管的docroot 就是一臺服務(wù)器上提供多個web站點,每個站點在服務(wù)器上有自己的獨有文檔根目錄。虛擬托管web服務(wù)器根據(jù)uri或者host首部的主機名或者ip識別正確的文檔根目錄。
用戶的主目錄docroot web服務(wù)器上為人們提供私有的站點,通常把那些一斜杠和波浪線開始/~。私有的docroot通常都是用戶主目錄下那個名為public_html的目錄。
目錄列表 如果客戶端請求的是一個目錄,而不是一個資源,那么會有以下幾種方式處理:返回一個錯誤;不返回目錄,返回一個特殊的默認的索引文件;掃描目錄,返回一個包含目錄內(nèi)容的html頁面。大多數(shù)服務(wù)器會去目錄下查找index.html文件來代替此目錄。這都是可以配置的。
動態(tài)內(nèi)容資源映射 web服務(wù)器還可以將uri映射為動態(tài)資源。映射到按需動態(tài)生成內(nèi)容的程序上去。web服務(wù)器要能分辨出資源什么時候是動態(tài)的,動態(tài)內(nèi)容生成程序位于何處。apache允許用戶把uri映射為可執(zhí)行文件目錄。
訪問控制 對特定的資源,進行訪問控制
構(gòu)建響應(yīng)
響應(yīng)實體 mime類型,content-length(不一定需要,如果服務(wù)器響應(yīng)了這次請求之后,就把連接關(guān)了就不需要這個,整個流,都屬于這個主題),主體的實際內(nèi)容。
mime類型 web服務(wù)器可以使用文件擴展名來說明mime類型。web服務(wù)器會為每個資源掃描一個包含了所有擴展名的mime類型文件。 -魔法分類 掃描內(nèi)容,確定mime。 -顯式分類 根據(jù)目錄 -類型協(xié)商
重定向 適用于以下幾種情況:永久刪除的資源(301),臨時刪除的資源(303),url增強(303,307),負責(zé)均衡,服務(wù)器關(guān)聯(lián),規(guī)范目錄名。
發(fā)送響應(yīng)
要注意此次響應(yīng)發(fā)送完之后,是否要關(guān)閉連接。
---------------------