首頁 Java Java面試題 java面試之HTTP和HTTPS協議

java面試之HTTP和HTTPS協議

Dec 29, 2020 am 10:25 AM
http https java 協定 面試

java面試之HTTP和HTTPS協議

首先我們來看下阿里和順豐面試題目。

阿里面試題:對HTTP協定了解多少,HTTP和HTTPS有什麼差別,HTTPS的安全性是怎麼實現的

順豐面試題:http說明

(學習影片分享:java影片教學

詳細解答如下:

一、HTTP簡介 

HTTP協定是Hyper Text Transfer Protocol(超文本傳輸協定)的縮寫。 HTTP協定工作於客戶端-服務端架構為上。瀏覽器以HTTP客戶端透過URL向HTTP服務端即WEB伺服器傳送所有請求。 Web伺服器根據接收到的請求後,向客戶端發送回應訊息。
二、HTTP協定特點
無連線:無連線的意義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
無狀態:HTTP協定是無狀態協定。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的訊息,則它必須重傳,這可能導致每次連接傳送的資料量增加。另一方面,在伺服器不需要先前資訊時它的應答就較快。
三、HTTP之狀態碼
1xx:指示訊息–表示請求已接收,繼續處理
2xx:成功–表示請​​求已成功接收、理解、接受
3xx:重定向–要完成請求必須進行更進一步的操作
4xx:客戶端錯誤–請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤–伺服器未能實現合法的請求
常見的狀態碼:

200 OK                     //客户端请求成功400 Bad Request            //客户端请求有语法错误,不能被服务器所理解401 Unauthorized           //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden              //服务器收到请求,但是拒绝提供服务404 Not Found              //请求资源不存在,eg:输入了错误的URL500 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部分組成。
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 文字並顯示內容;

(更多相關面試題請造訪:java面試題目及答案)

#

五、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的安全性是怎麼實現的

java面試之HTTP和HTTPS協議
(1)客戶使用https的URL存取Web伺服器,要求與Web伺服器建立SSL連線。
(2)Web伺服器收到客戶端請求後,會將網站的憑證資訊(憑證中包含公鑰)傳送一份給客戶端。
(3)客戶端的瀏覽器與Web伺服器開始協商SSL連線的安全等級,也就是資訊加密的等級。
(4)用戶端的瀏覽器根據雙方同意的安全等級,建立會話金鑰,然後利用網站的公鑰將會話金鑰加密,並傳送給網站。
(5)Web伺服器利用自己的私鑰解密出會話金鑰。
(6)Web伺服器利用會話金鑰加密與客戶端之間的通訊。
java面試之HTTP和HTTPS協議

相關推薦:java入門教學

#

以上是java面試之HTTP和HTTPS協議的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

在本文中,我們保留了最常被問到的 Java Spring 面試問題及其詳細答案。這樣你就可以順利通過面試。

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

什麼是HTTP,為什麼對Web應用程序至關重要? 什麼是HTTP,為什麼對Web應用程序至關重要? Apr 09, 2025 am 12:08 AM

HTTPS是一種在HTTP基礎上增加安全層的協議,主要通過加密數據保護用戶隱私和數據安全。其工作原理包括TLS握手、證書驗證和加密通信。實現HTTPS時需注意證書管理、性能影響和混合內容問題。

創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

如何在Spring Tool Suite中運行第一個春季啟動應用程序? 如何在Spring Tool Suite中運行第一個春季啟動應用程序? Feb 07, 2025 pm 12:11 PM

Spring Boot簡化了可靠,可擴展和生產就緒的Java應用的創建,從而徹底改變了Java開發。 它的“慣例慣例”方法(春季生態系統固有的慣例),最小化手動設置

See all articles