日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

http https http2.0

發(fā)布時間:2023/12/2 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 http https http2.0 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.http狀態(tài)碼

  • 1xx(信息性狀態(tài)碼,接受的請求正在處理)
  • 2xx(成功狀態(tài)碼,請求正常處理完畢)
    200 OK
    204 No Content:請求成功但沒有資源返回
    206 Partial Content:范圍請求
  • 3xx(重定向狀態(tài)碼,需要進行附加操作以完成請求)
    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
  • 4xx(客戶端錯誤狀態(tài)碼,服務(wù)器無法處理請求)
    400 Bad Request:請求報文存在語法錯誤
    401 Unanuthority:請求需要通過認證,若之前以請求過1次,表示認證失敗
    403 Forbidden:不允許訪問
    404 Not Found:服務(wù)器無請求資源
  • 5xx(服務(wù)端錯誤狀態(tài)碼,服務(wù)器處理請求出錯)
    500 Internal Server Error:服務(wù)器在執(zhí)行請求是發(fā)生錯誤
    503 Service Unavailable:現(xiàn)在在忙無法處理請求
  • 301和302狀態(tài)碼都是瀏覽器在拿到服務(wù)器返回的這個狀態(tài)碼后會自動跳轉(zhuǎn)到一個新的url,這個url可以從響應(yīng)的Location頭部中獲取(用戶看到的效果就是他輸入的地址A瞬間變成了另一個地址B)。區(qū)別在于301表示舊地址A的資源已經(jīng)被永久地移除了(這個資源不可訪問了),搜索引擎在抓取新內(nèi)容的同時也將舊的網(wǎng)址交換為重定向之后的網(wǎng)址;302表示舊地址A的資源還在(仍然可以訪問),這個重定向只是臨時地從舊地址A跳轉(zhuǎn)到地址B,搜索引擎會抓取新的內(nèi)容而保存舊的網(wǎng)址。
    302可能會導(dǎo)致url被劫持。
  • 二. http與https

  • http不足:

    通信使用明文(不加密),內(nèi)容可能會被竊聽;
    不驗證通信方的身份,因此有可能遭遇偽裝;
    無法證明報文的完整性,所以有可能已遭篡改;

  • https(用SSL建立安全通信線路之后,就可以在這條路上進行http通信了):
    https = http 加密 認證 完整性保護
  • SSL 不僅提供加密處理,而且還使用了一種被稱為證書的手段,可用于確定通信方的身份;
    SSL采用公開密鑰加密,非對稱的密鑰(私有密鑰和公開密鑰),發(fā)送方使用對方的公開密鑰進行加密,對方再用自己的私有密鑰解密;
  • https采用混合加密機制,公開密鑰加密相比于共享密鑰加密處理速度要慢;
    ① 使用公開密鑰加密方式安全地交換在稍后的共享密鑰加密中要使用的密鑰,
    ② 確保交換的密鑰是安全的前提下,使用共享密鑰加密方式進行通信;
  • https提供了對服務(wù)器的身份認證,保護交換數(shù)據(jù)的隱私和完整性,針對http的問題,https解決方案:數(shù)據(jù)加密、客戶端服務(wù)端都攜帶證書,對數(shù)據(jù)進行摘要處理(即使改也沒用);
  • https工作原理:
    ?[ 1 ] 客戶端給出協(xié)議的版本號、一個客戶端生成的隨機數(shù)和客戶端支持的加密算法;
    ?[ 2 ] 服務(wù)端在客戶端給出的加密算法列表中選出一種,并給出數(shù)字證書和一個服務(wù)端生成的額隨機數(shù);
    ?[ 3 ] 客戶端確認數(shù)字證書的有效性,然后生成一個新的隨機數(shù),并使用數(shù)字證書中的公鑰加密這個隨機數(shù);
    ?[ 4 ] 服務(wù)端使用私鑰解密,獲取客戶端發(fā)來的隨機數(shù);
    ?[ 5 ] 客戶端和服務(wù)端根據(jù)約定的加密方法,使用之前的三個隨機數(shù),生成對話密鑰,這個密鑰會用來加密接下來的整個通信過程
  • https不足:握手費時,證書費錢,https連接緩存不如http高效,加密范圍有限,解密慢;
  • https協(xié)議原理:
    [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

  • http1.1支持長連接;
  • HTTP 1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接,瀏覽器的每次請求都需要與服務(wù)器建立一個TCP連接,服務(wù)器完成請求處理后立即斷開TCP連接,服務(wù)器不跟蹤每個客戶也不記錄過去的請求。
  • HTTP 1.1則支持持久連接Persistent Connection, 并且默認使用persistent connection. 在同一個tcp的連接中可以傳送多個HTTP請求和響應(yīng). 多個請求和響應(yīng)可以重疊,多個請求和響應(yīng)可以同時進行. 更加多的請求頭和響應(yīng)頭(比如HTTP1.0沒有host的字段).
  • 緩存處理
  • 增加一些錯誤狀態(tài)碼;
  • 四. http2.0 vs http 1.1

  • 多路復(fù)用允許單一的 HTTP/2 連接同時發(fā)起多重的請求-響應(yīng)消息
  • 二進制分幀層 在 應(yīng)用層(HTTP/2)和傳輸層(TCP or UDP)之間。HTTP/2并沒有去修改TCP協(xié)議而是盡可能的利用TCP的特性
  • 單連接多資源的方式,減少服務(wù)端的鏈接壓力,內(nèi)存占用更少,連接吞吐量更大;由于減少TCP 慢啟動時間,提高傳輸?shù)乃俣?/li>
  • 首部壓縮
  • HTTP2支持服務(wù)器推送
  • 五. 三次握手

  • syn=j --> ack=j 1 syn=k --> ack=k 1 (三次握手)
  • 六. 四次揮手

  • tcp客戶端發(fā)送一個fin,用來關(guān)閉客戶端到服務(wù)器的傳送(fin=1 ack=z seq=x)
  • 服務(wù)器收到fin,發(fā)回一個ack,確認序號為收到序號加1,和syn一樣,一個fin占用一個序號(ack=x 1 seq=z)
  • 服務(wù)器關(guān)閉客戶端連接,發(fā)送fin(fin=1 ack=x seq=y)
  • 客戶端發(fā)回ack確認,并將確認序號設(shè)為收到序號加1(ack=y seq=x )
  • 七. tcp / udp

  • 面向連接的tcp和面向非連接的udp
  • tcp可靠穩(wěn)定,數(shù)據(jù)傳送完斷開連接節(jié)約資源,大量數(shù)據(jù),缺點是慢,應(yīng)用http、ftp
  • udp快,少量數(shù)據(jù),不可靠,網(wǎng)絡(luò)不好容易丟包,應(yīng)用qq、長視頻
  • 八. ws

  • ajax輪詢:每隔幾秒發(fā)送請求一次
  • long pull:也是輪詢,不過是阻塞模型
  • ws是右http建立連接,全雙工通道,實現(xiàn)持久化
  • 九. spdy

  • 多路復(fù)用降低了延遲同時提高了帶寬的利用率;
  • 每個請求設(shè)置請求優(yōu)先級防止重要請求被阻塞;
  • header壓縮;
  • 基于https;
  • 服務(wù)端推送;
  • http-> spdy -> ssl -> tcp
  • 十. spdy vs http2.0

  • http2.0?支持明文 HTTP 傳輸,而 SPDY 強制使用 HTTPS
  • http2.0 消息頭的壓縮算法采用?HPACK,而非 SPDY 采用的?DEFLATE

  • 十一. 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ù)
  • 應(yīng)用程序?qū)懭氲臄?shù)據(jù)大于套接字緩沖區(qū)大小,這將會發(fā)生拆包。
  • 應(yīng)用程序?qū)懭霐?shù)據(jù)小于套接字緩沖區(qū)大小,網(wǎng)卡將應(yīng)用多次寫入的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,這將會發(fā)生粘包。
  • 進行mss(最大報文長度)大小的TCP分段,當TCP報文長度-TCP頭部長度>mss的時候?qū)l(fā)生拆包。
  • 接收方法不及時讀取套接字緩沖區(qū)數(shù)據(jù),這將發(fā)生粘包。
    • 由于tcp是無界的數(shù)據(jù)流,且協(xié)議本身無法避免粘包,拆包的發(fā)生,那我們只能在應(yīng)用層數(shù)據(jù)協(xié)議上,加以控制。通常在制定傳輸數(shù)據(jù)時,可以使用如下方法:

  • 使用帶消息頭的協(xié)議、消息頭存儲消息開始標識及消息長度信息,服務(wù)端獲取消息頭的時候解析出消息長度,然后向后讀取該長度的內(nèi)容。
  • 設(shè)置定長消息,服務(wù)端每次讀取既定長度的內(nèi)容作為一條完整消息。
  • 設(shè)置消息邊界,服務(wù)端從網(wǎng)絡(luò)流中按消息編輯分離出消息內(nèi)容。

  • 更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com

    總結(jié)

    以上是生活随笔為你收集整理的http https http2.0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。