一、HTTP簡介
HTTP協定是Hyper Text Transfer Protocol(超文本傳輸協定)的縮寫。 HTTP協定工作於客戶端-服務端架構為上。瀏覽器以HTTP客戶端透過URL向HTTP服務端即WEB伺服器傳送所有請求。 Web伺服器根據接收到的請求後,向客戶端發送回應訊息。
(影片教學分享:java課程)
二、HTTP協定特點
無連線:無連線的意思是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
無狀態:HTTP協定是無狀態協定。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的訊息,則它必須重傳,這可能導致每次連接傳送的資料量增加。另一方面,在伺服器不需要先前資訊時它的應答就較快。
三、HTTP之狀態碼
1xx:指示訊息–表示請求已接收,繼續處理
2xx:成功–表示請求已成功接收、理解、接受
3xx:重定向–要完成請求必須更進一步的操作
4xx:客戶端錯誤–請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤–伺服器未能實現合法的請求
常見的狀態碼:
200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
四、HTTP工作原理
HTTP協定定義Web客戶端如何從Web伺服器請求Web頁面,以及伺服器如何把Web頁面傳送給客戶端。 HTTP協定採用了請求/回應模型。客戶端向伺服器發送請求報文,請求封包包含請求的方法、URL、協定版本、請求頭部和請求資料。伺服器以一個狀態行作為回應,回應的內容包括協定的版本、成功或錯誤代碼、伺服器資訊、回應頭部和回應資料。
以下是HTTP 請求/回應的步驟:
1、客戶端連線到Web伺服器
一個HTTP客戶端,通常是瀏覽器,與Web伺服器的HTTP連接埠(預設為80)建立TCP套接字連接。例如,http://www.baidu.con。
2、發送HTTP請求
透過TCP套接字,客戶端向Web伺服器發送一個文字的請求報文,一個請求封包由請求行、請求頭部、空白行和請求資料4部分組成。
3、伺服器接受請求並回傳HTTP回應
Web伺服器解析請求,定位請求資源。伺服器將資源複本寫到TCP套接字,由客戶端讀取。一個回應由狀態行、回應頭部、空行和回應資料4部分組成。
(相關面試題推薦:java面試題目及答案)
4、釋放連線TCP連線
若connection 模式為close,則伺服器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式為keepalive,則連接會保持一段時間,在該時間內可以繼續接收請求;
5、客戶端瀏覽器解析HTML內容
客戶端瀏覽器首先解析狀態行,查看顯示請求是否成功的狀態代碼。接著解析每一個回應頭,回應頭告知以下為若干位元組的HTML文件和文件的字元集。客戶端瀏覽器讀取回應資料HTML,根據HTML的語法對其進行格式化,並在瀏覽器視窗中顯示。
例如:在瀏覽器網址列鍵入URL,按下回車之後會經歷以下流程:
1、瀏覽器向DNS 伺服器請求解析該URL 中的網域所對應的IP 位址;
2 、解析出IP 位址後,根據該IP 位址和預設連接埠80,和伺服器建立TCP連線;
3、瀏覽器發出讀取檔(URL 中網域後面部分對應的檔案)的HTTP 請求,該請求報文作為TCP 三次握手的第三個報文的資料傳送給伺服器;
4、伺服器對瀏覽器請求作出回應,並把對應的html 文字傳送給瀏覽器;
5、釋放TCP連線;
6、瀏覽器將該html 文字並顯示內容;
五、HTTP和HTTPS有什麼區別
HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,也就是HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容需要SSL。
HTTPS協定的主要功能可以分為兩種:一種是建立一個資訊安全通道,來確保資料傳輸的安全;另一種就是確認網站的真實性。
HTTPS和HTTP的差異主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,訊息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的連接埠也不一樣,前者是80,後者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。
六、HTTPS的安全性是怎麼實現的
(1)客戶使用https的URL存取Web伺服器,要求與Web伺服器建立SSL連線。
(2)Web伺服器收到客戶端請求後,會將網站的憑證資訊(憑證中包含公鑰)傳送一份給客戶端。
(3)客戶端的瀏覽器與Web伺服器開始協商SSL連線的安全等級,也就是資訊加密的等級。
(4)用戶端的瀏覽器根據雙方同意的安全等級,建立會話金鑰,然後利用網站的公鑰將會話金鑰加密,並傳送給網站。
(5)Web伺服器利用自己的私鑰解密出會話金鑰。
(6)Web伺服器利用會話金鑰加密與客戶端之間的通訊。
相關推薦:java入門
以上是2023年java實習生求職面試題-HTTP和HTTPS協議的詳細內容。更多資訊請關注PHP中文網其他相關文章!