面试必考HTTP协议面试题(含答案)
今天我們整理一下關于前端面試時會問到HTTP協議的問題
注:個人觀點及答案,望大家采納,指教!!
HTTP 簡介:
HTTP 協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議;
HTTP 是一個基于TCP/IP通信協議來傳遞數據(HTML文件、圖片文件、查詢結果等);
HTTP工作原理:
HTTP協議工作于客戶端-服務端架構上,瀏覽器作為HTTP客戶端通過URL向HTTP服務端發送所有請求。
web服務器有:Apache 服務器、lls服務器等;
HTTP默認端口號為80,但是也可以改為8080或者其他端口;
1.HTTP的優點和缺點?
優點:
- 支持客戶/服務器模式:
- 應用廣泛且跨平臺:
- 簡單快速、靈活:
缺點:
- 無連接:
- 無狀態:無狀態可以減輕服務器負擔,但進行關聯操作時繁瑣,Cookie正好可以解決這個問題
- 明文傳輸:調試便利的同時帶來了信息易被竊取
- 不安全:(HTTPS通過引入SSL/TLS層,解決了這個隱患)
2.請求類型Get與Post之間的區別?
區別一:
get重點在從服務器上獲取資源,post重點在向服務器發送數據;
區別二:
get是不安全的,因為URL是可見的,可能會泄露私密信息,如密碼等; post較get安全性較高;
區別三:
get傳輸數據是通過URL請求,以field(字段)= value的形式,置于URL后,并用"?"連接,多個請求數據間用"&"連接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個過程用戶是可見的;
post傳輸數據通過Http的post機制,將字段與對應值封存在請求實體中發送給服務器,這個過程對用戶是不可見的
區別四:
Get傳輸的數據量小,因為受URL長度限制,但效率較高;
Post可以傳輸大量數據,所以上傳文件時只能用Post方式;
區別五:
get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼。
post支持標準字符集,可以正確傳遞中文字符。
3.HTTP與HTTPS的區別?
HTTPS:是以安全為目標的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基礎是 SSL。SSL 協議位于 TCP/IP
協議與各種應用層協議之間,為數據通訊提供安全支持。
區別:
- HTTP 是超文本傳輸協議,信息是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協議。
- HTTP和HTTPS 使用完全不同的連接方式,所用的端口不同,前者是80 端口,后者是 443端口
4.常見HTTP的狀態碼有哪些?
- 200 – 請求成功
- 301 – 資源(網頁等)被永久轉移到其它URL
- 404 – 請求的資源(網頁等)不存在
- 500 – 內部服務器錯誤
補充:
6.HTTP常見的字段有哪些?
-
URI&URL:
URI:統一資源標識符,不僅可以標識http,ftp等其他的網絡資源
URL:統一資源定位符 -
請求頭:
GET :獲取一個資源,同時參數直接跟在URL后面,url長度受限制2048字節
POST:不僅可以獲取資源,還可以提交資源(譬如上傳文件),參數放在請求體中,包大小4G
HEAD:只要響應頭,沒有響應體,通常用于測試URL是否存在
DELETE:刪除一個資源
PUT:通常修改一個資源 -
響應頭:
Content-Length:響應體的長度
Server:服務器的信息
Content-Type:內容的類型,text/html,xml等
Last-Modified :最有的修改日期,通常跟緩存相關 20151108
Location: 新的地址 -
響應碼:
200 OK 訪問正常
206 跟斷點續傳相關
3XX 重定向:Location
304 緩存有效
307 臨時重定向
4XX 客戶端問題
401 代表沒有權限訪問
404 代表訪問的資源不存在
5XX 通常服務器內部處理的問題
7.請談談你對“ ****三次握手與四次揮手**** ”的理解并說說作用?
三次握手:
1、第一次握手:客戶端給服務端發一個 SYN 報文,并指明客戶端的初始化序列號 ISN(c)。此時客戶端處于 SYN_Send 狀態。
2、第二次握手:服務器收到客戶端的 SYN 報文之后,會以自己的 SYN 報文作為應答,并且也是指定了自己的初始化序列號 ISN(s),同時會把客戶端的 ISN + 1 作為 ACK 的值,表示自己已經收到了客戶端的 SYN,此時服務器處于 SYN_REVD 的狀態。
3、第三次握手:客戶端收到 SYN 報文之后,會發送一個 ACK 報文,當然,也是一樣把服務器的 ISN + 1 作為 ACK 的值,表示已經收到了服務端的 SYN 報文,此時客戶端處于 establised 狀態。
服務器收到 ACK 報文之后,也處于 establised 狀態,此時,雙方以建立起了鏈接。
三次握手的作用:
1、確認雙方的接受能力、發送能力是否正常;
2、指定自己的初始化序列號,為后面的可靠傳送做準備;
3、如果是 https 協議的話,三次握手這個過程,還會進行數字證書的驗證以及加密密鑰的生成到。
四次揮手:
1、第一次揮手:客戶端發送一個 FIN 報文,報文中會指定一個序列號。此時客戶端處于FIN_WAIT1狀態。
2、第二次握手:服務端收到 FIN 之后,會發送 ACK 報文,且把客戶端的序列號值 + 1 作為 ACK 報文的序列號值,表明已經收到客戶端的報文了,此時服務端處于 CLOSE_WAIT狀態。
3、第三次揮手:如果服務端也想斷開連接了,和客戶端的第一次揮手一樣,發給 FIN 報文,且指定一個序列號。此時服務端處于 LAST_ACK 的狀態。
4、第四次揮手:客戶端收到 FIN 之后,一樣發送一個 ACK 報文作為應答,且把服務端的序列號值 + 1 作為自己 ACK 報文的序列號值,此時客戶端處于 TIME_WAIT 狀態。需要過一陣子以確保服務端收到自己的 ACK 報文之后才會進入 CLOSED 狀態
服務端收到 ACK 報文之后,就處于關閉連接了,處于 CLOSED 狀態。
總結
以上是生活随笔為你收集整理的面试必考HTTP协议面试题(含答案)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5G网络切片的七种武器(一)
- 下一篇: 电力工程师 计算机英语,电力工程师的英文