Tomcat工作原理(第一章)【自己翻譯的,應該有很多不當之處,見笑了,呵呵】...

web服務器,通常也被稱爲HTTP服務器。web服務器通過HTTP協議與客戶端進行通信,而客戶端通常是web瀏覽器。基於Java的web 服務器,用了兩個非常重要的類:java.net.Socket和java.net.ServerSocket。通信是通過HTTP消息來完成的。所以本章就以HTTP協議和兩個非常重要的類開始。
HTTP協議,允許web服務器和瀏覽器在Internet上發送和接收信息。它是一個請求(request)和迴應(response)的協議。客戶端請求一些文件,服務器迴應請求。HTTP使用可靠的TCP鏈接,TCP的默認端口是80。HTTP的最初版本是0.9、之後是1.0、還有1.1。
在HTTP 協議中,通常都是通過客戶端來建立一個鏈接併發送一個HTTP請求來啓動一個事務的,web服務器是不會和客戶端聯繫或者是創建一個回調鏈接(服務器是不會主動和客戶端聯繫的)。不管是客戶端還是服務器都可以提前終止一次鏈接。
一個HTTP request請求由四個部分組成:
(1)Method-URI-Protocol/Version
(2)Request headers
(3)Entity body.
(4)空白行:在HTTP頭和HTTP體之間

每一個HTTP請求可以使用HTTP標準中定義的多種請求方法中的任意一種。請求的方法有:GET、POST、HEAD、DELETE、TRACE、OPTIONS、PUT。GET和POST是在互聯網中最常用的請求方式。

一個HTTP Response的組成類似與一個HTTP Request,Response體是response的html內容本身。

Socket
一個socket就是一次網絡鏈接的終端,socket允許從網絡上讀和向網絡上寫數據。兩個位於不同機器上的軟件應用程序,可以通過建立鏈接,然後發送和接收字節流而實現彼此的通信,你需要知道對方應用程序的socket的ip和端口。在java中socket的表現形式是java.net.Socket類。
你可以用Socket類中的任意一個構造器,去創建一個socket,其中一個構造器。其中一個構造器,接收主機的名字和端口。
public Socket (java.lang.String host, int port);host是遠程應用機器的名字或ip地址,端口是遠程應用程序的端口,比如通過80端口去連接yahoo.com,我們可以建立如下Socket對象:
new Socket ("yahoo.com", 80); 一旦建立了socket對象,就可以用它來發送和
接收字節流。
去發送字節流,首先必須調用Socket 類的getOutputStream方法,去獲得一個java.io.OutputStream對象。發送文本信息給遠程應用程序,可以從返回的OutputStream對象中建立一個java.io.PrinWriter對象。
接收另一端返回的字節流,可以調用Socket class的getInputStream方法,返回了一個java.io.InputStream.
要從web 服務器上獲取一個正確的response,需要發送一個符合http協議的請求.
ServerSocket class
Socket類代表了一個客戶端的socket。ie,就是一個你可以隨時創建的socket,不論是什麼只要你想連接到遠程服務。現在如果你想實現一個服務器,比如HTTP服務器,或者FTP服務器,你需要一個不同的途徑。因爲你的服務必須永遠的健壯,它不知道客戶端什麼時候會試圖鏈接服務器。爲了讓你的服務器在任何時候都處於待命狀態。ServerSocket是一個 server socket的實現。server socket 的職責是等待客戶端的鏈接請求。一旦服務器端的socket 得到一個鏈接請求,它就會創建一個Socket實例去處理和客戶端的通信。
要建立一個server socket,我們需要用ServerSocket中提供的四個構造器中的一個。定義server socket監聽的ip和端口。
一旦你擁有了一個ServerSocket, 你就可以讓他不斷地監聽從被監測的機器上發來的請求。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章