客戶機與服務器建立連接后,發送一個請求給服務器,請求格式為:統一資源標識符、協議版本號。服務器收到請求的信息(包括請求行,請求頭,請求體)。服務器接收到請求后,給予相應的響應信息,格式為一個狀態行(包括響應行,響應頭,響應體)。
在internet上,http通訊通常發生在TCP/IP連接之上。缺省端口是TCP的80端口。
基於HTTP協議的客戶/服務器模式的信息交換過程,分為四個過程:建立連接、發送請求信息、發送響應信息、關閉連接。
服務器可能同時接受多個請求,這時就會產生多個sessoin,每個session分別處理各自的請求。
HTTP的工作過程
一次HTTP操作稱為一個事務,其工作整個過程如下:
1)、地址解析
如用客戶端瀏覽器請求這個頁面:http://localhost.com:8080/index.htm
從中分解出協議名、主機名、端口、對象路徑等部分,對於我們的這個地址,解析得到的結果如下:
協議名:http
主機名:localhost.com
端口:8080
對象路徑:/index.html
在這一步,需要域名系統DNS解析域名localhost.com,得主機的IP地址。
2)、封裝HTTP請求數據包
把以上部分結合本機自己的信息,封裝成一個HTTP請求數據包
3)封裝成TCP包,建立TCP連接(TCP的三次握手)
在HTTP工作開始之前,客戶機(Web瀏覽器)首先要通過網絡與服務器建立連接,該連接是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網絡。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之后才能,才能進行更層協議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號是80。這里是8080端口
4)客戶機發送請求命令
建立連接后,客戶機發送一個請求給服務器,請求方式的格式為:統一資源標識符(URL)、協議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可內容。
5)服務器響應
服務器接到請求后,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務器信息、實體信息和可能的內容。
實體消息是服務器向瀏覽器發送頭信息后,它會發送一個空白行來表示頭信息的發送到此為結束,接着,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據
6)服務器關閉TCP連接
一般情況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼
Connection:keep-alive
TCP連接在發送后將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了為每個請求建立新連接所需的時間,還節約了網絡帶寬。
服務器將響應信息傳給客戶端,響應體中的內容可能是一個html頁面,也可能是一張圖片,通過輸入流將其讀出,並寫回到顯示器上。