一,HTTP協議
HTTP協議是超文本傳輸協議的縮寫,是用于從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議,
(超文本是用超鏈接的方法,將各種不同空間的文字資訊組織在一起的網狀文本)
HTTP是一個基于TCP/IP通信協議來傳遞資料(HTML檔案,圖片檔案,查詢結果等)
HTTP是一個屬于應用層的面向物件的協議,作業于客戶端-服務器端架構為上,
瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求,Web服務器根據接受到請求后,向客戶端發送回應資訊,
二,HTTP協議特點
1,簡單快速
客戶向服務器請求服務時,只需傳送請求方法和路徑,
請求方法常有的有GET,HEAD,POST,每種方法規定了客戶與服務器聯系的型別不同
由于HTTP協議簡單,使得HTTP服務器的程式規模小,因而通信速度很快
2,靈活
HTTP允許傳輸任意型別的資料物件,正在傳輸的型別由Content-Type加以標記
3,無連接
無連接的含義是限制每次連接只處理一個請求,服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接,采用這種方式可以節省傳輸時間
TCP的面向連接是傳輸層的,而HTTP的無連接則是應用層的 ,
簡單點講就是,比如發快遞,我只需要知道對方地址,然后把包裹給快遞公司發送過去就行,我自己不用清除對面在哪,再寄包裹時,又要重新郵寄,比如HTTP只需要知道源地址和目的地址就行了,
而有狀態就比如TCP,需要兩個人同時在線,可以互相聯系,發送時需要先建立連接
4,無狀態
HTTP協議是無狀態協議,無狀態是指協議對于事物處理沒有記憶能力,
缺少狀態意味著如果后續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連接傳送的資料量增大,
另一方面,在服務器不需要先前資訊時它的應答就較快,
就是沒有記憶,一件事完成后,就忘記了,即下一次的http請求與上一次的http
5,支持B/S及C/S模式
6,默認埠80
7,基于TCP協議
三,HTTP程序概述
HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端,
HTTP協議采用了請求/回應模型,
客戶端向服務器發送一個請求報文,請求報文包含請求的方法,URL,協議版本,請求頭部和請求資料,
服務器以一個狀體行作為回應,回應的內容包括協議的版本,成功或者錯誤代碼,服務器資訊,回應頭部和回應資料,
HTTP請求/回應的步驟如下:
- 客戶端連接到Web服務器
一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP埠(默認為80)建立一個TCP套接字連接 - 發送HTTP請求
通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行,請求頭部,空行和請求資料4部分組成 - 服務器接收請求并回傳HTTP回應
Web服務器決議請求,定位請求資源,
服務器將資源復本寫到TCP套接字,由客戶端讀取,一個回應由狀態行,回應頭部,空行和回應資料4部分組成 - 釋放連接TCP連接
若connection模式為close,則服務器主動關閉Tcp連接;
若connection模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求 - 客戶端瀏覽器決議HTML內容
客戶端瀏覽器首先決議狀態行,查看表明請求是否成功的狀態代碼,
然后決議每一個回應頭,回應頭告知以下為若干位元組的HTML檔案和檔案的字符集,
客戶端瀏覽器讀取回應資料HTML,根據HTML的語法對其進行格式化,并在瀏覽器視窗中顯示
舉例:
在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程:
- 瀏覽器向DNS服務器請求決議該URL中的域名所對應的IP地址;
- 決議出IP地址后,根據該IP地址和默認埠80,和服務器建立TCP連接;
- 瀏覽器發出讀取檔案(URL中域名后面部分對應的檔案)的HTTP請求,該請求報文作為TCP三次握手的第三個報文的資料發送給服務器;
- 服務器對瀏覽器請求做出回應,并把對應的html文本發送給瀏覽器;
- 釋放Tco連接;
- 瀏覽器將該html文本顯示內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/256835.html
標籤:其他
上一篇:springBoot入門
下一篇:單調堆疊演算法筆記
