web服務器大家都會用,可是它的實現原理是到底如何呢,其實只要讀一下http協議,大家基本也能開發出一個簡單的web服務器出來了。
web請求分為如下幾步
1. 瀏覽器向服務建立TCP/IP連接,Java中通過java.net.Socket實現
2. Web瀏覽器向Web服務器發送請求命令。通過Socket的輸出流向服務器寫如下信息:
GET /uri HTTP/1.1,很顯示第一部分為請求的方法,第二部分為請求的URI,第三部分為請求的協議
3. Web瀏覽器發送請求頭信息。這部分包括瀏覽器的版本信息,接受的格式、編碼等,還有非常有用的一個數據Cookie也是在這里發送的。
4. 頭信息發送完后,發送一個空格表示結束,如果是post請求,則繼續發送Post正文。
5. Web服務器做出應答,如返回"HTTP/1.1 200 OK",表示請求成功,或者返回404,500等狀態信息表示找不到頁面或服務器錯誤。
6. Web服務器發送應答頭信息,這部分表示了返回的內容類型(如是gif還是exe還是html等),返回的數據的編碼,長度,當然還有Cookie(通過set-Cookie來發送)
7. 在發送完應答頭后,則發送一個空行。如果有響應正文,則在后面繼續發送響應內容。
8. 關閉TCP/IP連接
以下代碼簡單的模擬了這一過程。
客戶端代碼:
Powered by: BlogJava Copyright © Gavin.lee