http https http2.0
生活随笔
收集整理的這篇文章主要介紹了
http https http2.0
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一.http狀態(tài)碼
200 OK
204 No Content:請求成功但沒有資源返回
206 Partial Content:范圍請求
301 Moved Permanently:永久性重定向()
302 Found:臨時性重定向
303 See Other:同302,用GET獲取資源
304 Not Modified: 內(nèi)容沒有改,響應(yīng)不包含主體部分
? ? ? ?(請求頭If-None-Match對應(yīng)響應(yīng)頭Etag,請求頭If-Modified-Since對應(yīng)響應(yīng)頭Last-Modified)
307 Temporary Redirect:同302
400 Bad Request:請求報文存在語法錯誤
401 Unanuthority:請求需要通過認證,若之前以請求過1次,表示認證失敗
403 Forbidden:不允許訪問
404 Not Found:服務(wù)器無請求資源
500 Internal Server Error:服務(wù)器在執(zhí)行請求是發(fā)生錯誤
503 Service Unavailable:現(xiàn)在在忙無法處理請求
302可能會導(dǎo)致url被劫持。
二. http與https
通信使用明文(不加密),內(nèi)容可能會被竊聽;
不驗證通信方的身份,因此有可能遭遇偽裝;
無法證明報文的完整性,所以有可能已遭篡改;
https = http 加密 認證 完整性保護
SSL采用公開密鑰加密,非對稱的密鑰(私有密鑰和公開密鑰),發(fā)送方使用對方的公開密鑰進行加密,對方再用自己的私有密鑰解密;
① 使用公開密鑰加密方式安全地交換在稍后的共享密鑰加密中要使用的密鑰,
② 確保交換的密鑰是安全的前提下,使用共享密鑰加密方式進行通信;
?[ 1 ] 客戶端給出協(xié)議的版本號、一個客戶端生成的隨機數(shù)和客戶端支持的加密算法;
?[ 2 ] 服務(wù)端在客戶端給出的加密算法列表中選出一種,并給出數(shù)字證書和一個服務(wù)端生成的額隨機數(shù);
?[ 3 ] 客戶端確認數(shù)字證書的有效性,然后生成一個新的隨機數(shù),并使用數(shù)字證書中的公鑰加密這個隨機數(shù);
?[ 4 ] 服務(wù)端使用私鑰解密,獲取客戶端發(fā)來的隨機數(shù);
?[ 5 ] 客戶端和服務(wù)端根據(jù)約定的加密方法,使用之前的三個隨機數(shù),生成對話密鑰,這個密鑰會用來加密接下來的整個通信過程
[1]客戶端請求(帶有客戶端支持的加密算法列表,隨機數(shù)A)
[2]服務(wù)器端比對支持的加密算法,選出最合適的加密算法?
[3]響應(yīng)(加密算法 公鑰 證書 隨機數(shù)B)
[4]客戶端去驗證證書的有效性,生成一個隨機字符串pre-master,再根據(jù)A B p re-master計算出協(xié)商秘鑰
[5]請求(使用公鑰加密pre-master使用協(xié)商秘鑰加密的數(shù)據(jù))
[6]服務(wù)器端用私鑰解密得到pre-master,使用協(xié)商秘鑰解密數(shù)據(jù)
[7]響應(yīng)(告知客戶端,以后通信就用協(xié)商秘鑰加密)
三. http1.0 vs http1.1
四. http2.0 vs http 1.1
五. 三次握手
六. 四次揮手
七. tcp / udp
八. ws
九. spdy
十. spdy vs http2.0
十一. tcp粘包拆包問題
- 由于tcp是以流動的方式傳輸數(shù)據(jù),傳輸?shù)淖钚挝粸橐粋€報文段(segment)。tcp Header中有個Options標識位,常見的標識為mss(Maximum Segment Size)指的是,連接層每次傳輸?shù)臄?shù)據(jù)有個最大限制MTU(Maximum Transmission Unit),一般是1500比特,超過這個量要分成多個報文段,mss則是這個最大限制減去TCP的header,光是要傳輸?shù)臄?shù)據(jù)的大小,一般為1460比特。換算成字節(jié),也就是180多字節(jié)。
tcp為提高性能,發(fā)送端會將需要發(fā)送的數(shù)據(jù)發(fā)送到緩沖區(qū),等待緩沖區(qū)滿了之后,再將緩沖中的數(shù)據(jù)發(fā)送到接收方。同理,接收方也有緩沖區(qū)這樣的機制,來接收數(shù)據(jù)
-
由于tcp是無界的數(shù)據(jù)流,且協(xié)議本身無法避免粘包,拆包的發(fā)生,那我們只能在應(yīng)用層數(shù)據(jù)協(xié)議上,加以控制。通常在制定傳輸數(shù)據(jù)時,可以使用如下方法:
更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com
總結(jié)
以上是生活随笔為你收集整理的http https http2.0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js来监控复制粘贴
- 下一篇: js实现类名的添加与移除