HTTP協(xié)議
HTTPS與網(wǎng)絡(luò)安全
TCP/UDP
DNS
session和cookie
HTTP協(xié)議
超文本傳輸協(xié)議
- 請求/響應(yīng)報文
- 連接建立流程
- HTTP特點
請求報文
get沒有主體 post有主體
響應(yīng)報文
HTTP的請求方式有哪些逗爹?
GET POST HEAD PUT DELETE OPTIONS
GET和POST方式的區(qū)別黑界?
- GET請求參數(shù)以?分割拼接到URL后面的玉吁,post請求參數(shù)在主體里面呀舔。
- GET請求長度是2048個字符害幅,POST一般沒有限制
- GET請求安全留搔,POST不安全
標(biāo)準(zhǔn)答案 = 從語義的角度
- GET : 獲取資源
安全的 冪等的 可緩存的 - POST: 處理資源
不安全的 不冪等的 不可緩存的
安全性
不引起server推斷的任何狀態(tài)變化
GET HEAD POST
冪等性
同一個請求方法執(zhí)行多次和執(zhí)行一次效果是完全相同的
GET PUT DELETE
可緩存性
請求能否被緩存
GET HEAD
狀態(tài)碼
- 1xx
- 2xx: 成功
- 3xx :重定向
- 4xx :客戶端請求有問題
- 5xx: server端有異常
HTTP協(xié)議連接流程
- 三次握手建立連接
- 在連接上面進(jìn)行HTTP數(shù)據(jù)的請求和HTTP響應(yīng)傳遞
- 四次揮手釋放連接
為什么是三次握手和四次揮手惰匙?
HTTP的特點
- 無連接
HTTP的持久連接連接方案補(bǔ)償 - 無狀態(tài)
同一個用戶译红,server是不知道的
Coojie/Session技術(shù)補(bǔ)償
持久連接
為了提升效率预茄,重復(fù)使用連接- 頭部字段
connection: Keep-alive
time:20
max: 10 - 怎么判斷一個球球是否結(jié)束?
content-length:1024客戶端響應(yīng)理由
chunked侦厚,多個塊每個報文有一個chunked耻陕,結(jié)束后最后一個是空的chunked
Charles抓包原理
中間人攻擊HTTPS與網(wǎng)絡(luò)安全
HTTP與HTTPS區(qū)別
HTTPS = HTTP + SSL/TLS(安全模塊)
HTTPS是安全的HTTP是SSL/TLS應(yīng)用層之下傳輸層之上 這個模塊保證
會話秘鑰
會話秘鑰 = random S + random C + 預(yù)主秘鑰
HTTPS用了那些加密手段淮蜈?為什么斋攀?
- 連接建立過程中用非對稱加密,非對稱加密是很耗時的
公鑰 私鑰 - 后續(xù)傳遞過程中是用對稱加密的
非對稱加密
對稱加密
對稱加密會被中間人截獲梧田,因為要傳遞
TCP和UDP
傳輸層的協(xié)議
TCP是傳輸層控制協(xié)議
UDP是用戶數(shù)據(jù)報協(xié)議
UDP (戶數(shù)據(jù)報協(xié)議)
- 無連接: 發(fā)送數(shù)據(jù)報淳蔼,不用建立和釋放連接
- 盡最大努力交付: 不保證可靠傳輸
- 面向報文
UDP用戶數(shù)據(jù)報功能
-
復(fù)用、分用
-
差錯檢測
TCP
TCP特點
- 面向連接
- 可靠傳輸
- 面向字節(jié)流
- 流量控制
- 擁塞控制
TCP面向連接
傳輸前建立連接
三次握手
傳輸后釋放連接
四次揮手
- 為什么不是兩次呢裁眯?
SYN同步報文超時或者丟失后鹉梨,超時之后逗留在網(wǎng)絡(luò)環(huán)境中,這個時候會發(fā)生超時重傳穿稳,收到后server會回復(fù)一個確認(rèn)的報文存皂。如果是兩次握手,這個時候TCP連接已經(jīng)建立了逢艘,假設(shè)剛才逗留的超時報文過來了旦袋,這個時候Server會以為又要建立一個。通過ACK就能辨別是不是超時重復(fù)的請求它改。 -
為什么是四次揮手
因為通道是全雙通的疤孕,雙向可以發(fā)送回復(fù),才需要雙方面的關(guān)閉央拖。
TCP 可靠傳輸
- 無差錯
- 不丟失
- 不重復(fù)
-
按序到達(dá)
TCP面向字節(jié)流
對比UDP面向報文
TCP流量控制
滑動窗口協(xié)議
TCP擁塞控制
慢開始祭阀、擁塞避免
快恢復(fù)、快重傳
快恢復(fù)专控、快重傳不回到慢開始的步驟
DNS解析
你了解DNS解析嗎?過程是怎么樣的遏餐?
域名到IP地址的一個映射伦腐,DNS解析請求采用UDP數(shù)據(jù)報,而且是明文的
DNS解析的查詢方式
-
遞歸查詢
“我去給你問一下”
-
迭代查詢
“我告訴你誰可能知道”
-
DNS劫持
明文被竊聽
DNS劫持和HTTP關(guān)系沒有關(guān)系的
DNS解析發(fā)生在HTTP建立之前
DNS解析請求使用UDP數(shù)據(jù)報境输,端口號是53
DNS解析轉(zhuǎn)發(fā)
怎么解決DNS劫持蔗牡?
-
httpDNS
使用HTTP協(xié)議向DNS服務(wù)器的53端口進(jìn)行請求
使用DNS協(xié)議向DNS服務(wù)器的53端口進(jìn)行請求
??
- 長連接
避免公網(wǎng)
Session/Cookie
HTTP無狀態(tài)特點補(bǔ)償
HTTP Cookie
-
Cookie是用來記錄用戶狀態(tài)的,用來區(qū)分用戶的嗅剖,狀態(tài)保存在客戶端
怎么修改cookie呢?
新cookie覆蓋舊cookie
覆蓋規(guī)則:name嘁扼、path信粮、domain等要和原cookie一致怎么刪除cookie呢?
新cookie覆蓋舊cookie
覆蓋規(guī)則:name趁啸、path强缘、domain等要和原cookie一致
設(shè)置cookie的expires = 過去的某個時間 或者 maxAge = 0怎么保證Cookie的安全
對cookie進(jìn)行加密處理 (加密也會被腳本共計)
只在https上攜帶cookie
設(shè)置cookie為httpOnly督惰,防止腳本工資
HTTP Session
- Cookie是用來記錄用戶狀態(tài)的,用來區(qū)分用戶的旅掂,狀態(tài)保存在服務(wù)端
- Session要以來cookie機(jī)制
網(wǎng)絡(luò)相關(guān)面試總結(jié)
HTTP的get和set的區(qū)別赏胚?(語義角度)
HTTPS建立的流程是什么樣的?(時序圖 機(jī)密和證書)
TCP和UDP的區(qū)別商虐?(特點)
TCP慢開始觉阅?(擁塞控制)
怎么避免DNS劫持?(兩種)