国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

為什么HTTP/3要引入UDP?(快速了解QUIC)

這篇具有很好參考價值的文章主要介紹了為什么HTTP/3要引入UDP?(快速了解QUIC)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

筆者前段時間參加銀行技術(shù)面時被問到了這個問題,特來整理資料以供記錄分享

HTTP/3:引入UDP的原因與QUIC協(xié)議的努力

HTTP/3是HTTP協(xié)議的最新版本,它的誕生是為了解決HTTP/1和HTTP/2在性能和效率上的問題。在HTTP/3之前,HTTP協(xié)議使用的是TCP作為傳輸層協(xié)議。然而,隨著互聯(lián)網(wǎng)的發(fā)展,TCP的性能瓶頸逐漸顯現(xiàn)出來。為了解決這個問題,Google提出了QUIC協(xié)議,并將其引入到了HTTP/3中。

TCP與UDP的區(qū)別

TCP是一種面向連接、可靠的傳輸協(xié)議,它通過三次握手建立連接,然后進行數(shù)據(jù)的可靠傳輸。TCP為了保證數(shù)據(jù)的可靠性,會進行數(shù)據(jù)的確認、重傳等操作,但這也會導致性能的下降。

UDP則是一種無連接、不可靠的傳輸協(xié)議,它不會建立連接,也不會進行數(shù)據(jù)的確認和重傳。UDP的優(yōu)點是速度快,但缺點是不能保證數(shù)據(jù)的可靠性。

HTTP/3引入UDP的原因

HTTP/3引入UDP的原因主要有兩個:
一是為了提高性能,二是為了實現(xiàn)更好的網(wǎng)絡適應性。

TCP的性能瓶頸主要在于其握手過程和重傳機制,而QUIC協(xié)議通過改進這些機制,實現(xiàn)了更高的性能。此外,UDP在網(wǎng)絡適應性上也有優(yōu)勢,因為它可以更好地處理網(wǎng)絡波動和丟包等問題。

QUIC協(xié)議在傳輸層的努力

QUIC協(xié)議在傳輸層做了很多努力,以實現(xiàn)可靠傳輸。首先,它改變了數(shù)據(jù)包的底層編碼格式,使得數(shù)據(jù)包更小、更高效。其次,QUIC協(xié)議實現(xiàn)了快速握手和連接遷移,減少了建立連接的時間和網(wǎng)絡延遲。此外,QUIC協(xié)議還引入了流量控制和擁塞控制機制,以應對網(wǎng)絡擁塞的問題。最后,QUIC協(xié)議還實現(xiàn)了丟包恢復和重傳機制,以保證數(shù)據(jù)的可靠性。

QUIC協(xié)議之所以能夠提供更好的性能,其中一個重要的原因就是它實現(xiàn)了快速握手和連接遷移。

可靠傳輸

可靠傳輸要保證兩點:

  • 完整性:發(fā)送端發(fā)出的數(shù)據(jù)包,接收端都能收到
  • 有序性:接收端能按序組裝數(shù)據(jù)包,解碼得到有效的數(shù)據(jù)

對于完整性的處理:通過包號(PKN)和確認應答(SACK)
對于有序行的處理:通過數(shù)據(jù)偏移量 offset

(本小節(jié)感興趣可以看擴展閱讀中的內(nèi)容)

快速握手

在TCP中,建立連接需要進行三次握手。首先,客戶端發(fā)送一個SYN請求給服務器,表示它想要建立一個連接。服務器收到SYN請求后,會回復一個SYN-ACK請求,表示它同意建立連接。最后,客戶端再回復一個ACK請求,表示它收到了服務器的SYN-ACK請求。這樣,TCP連接就建立成功了。

相比之下,QUIC協(xié)議只需要進行一次握手就可以建立連接。在QUIC中,客戶端發(fā)送一個包含客戶端初始信息的包給服務器,服務器收到后,會立即回復一個包含服務器初始信息的包。這樣,QUIC連接就建立成功了。

連接遷移

在TCP中,如果客戶端想要從一個服務器切換到另一個服務器,就需要先斷開原來的連接,然后再重新建立一個新的連接。這個過程被稱為“連接遷移”。

而在QUIC中,客戶端可以無縫地從一個服務器切換到另一個服務器,而不需要斷開原來的連接。這個過程被稱為“連接遷移”。QUIC的連接遷移是通過在客戶端和服務器之間維護一個全局的狀態(tài)來實現(xiàn)的。當客戶端想要切換到另一個服務器時,它會向新的服務器發(fā)送一個包含當前連接狀態(tài)信息的包,新的服務器收到后,就可以立即開始處理客戶端的請求。

觸發(fā)場景

QUIC的連接遷移可以在以下場景中觸發(fā):

  • 服務器負載均衡:當客戶端連接到一個服務器時,如果該服務器的負載過高,客戶端可以自動切換到另一個負載較低的服務器。
  • 網(wǎng)絡切換:當客戶端從一個網(wǎng)絡切換到另一個網(wǎng)絡時,它可以無縫地切換到新的網(wǎng)絡上,而不需要重新建立連接。
  • DNS變更:當客戶端的DNS記錄發(fā)生變化時,它可以自動切換到新的服務器上,而不需要重新建立連接。

總之,QUIC的快速握手和連接遷移都是通過改進TCP的握手和連接管理過程來實現(xiàn)的。這些改進使得QUIC能夠提供更快的連接建立和更靈活的連接管理,從而提高了網(wǎng)絡性能和用戶體驗。

實際應用場景與案例分析

QUIC協(xié)議在實際應用中具有廣泛的前景。

例如,在游戲和實時通信領(lǐng)域,QUIC協(xié)議可以提供更低的網(wǎng)絡延遲和更高的性能。在視頻流和文件傳輸領(lǐng)域,QUIC協(xié)議可以提供更好的網(wǎng)絡適應性和更高的傳輸效率。此外,QUIC協(xié)議還可以用于WebAssembly和Web性能優(yōu)化等領(lǐng)域。

總結(jié)與展望

HTTP/3和QUIC協(xié)議的出現(xiàn),為互聯(lián)網(wǎng)帶來了新的機遇和挑戰(zhàn)。雖然QUIC協(xié)議目前還處于發(fā)展階段,但它已經(jīng)展現(xiàn)出了巨大的潛力。在未來,我們可以期待HTTP/3和QUIC協(xié)議在更多的領(lǐng)域中得到應用,為互聯(lián)網(wǎng)帶來更快的速度和更好的體驗。


參考資料:

QUIC 協(xié)議詳解文章來源地址http://www.zghlxwxcb.cn/news/detail-798675.html

到了這里,關(guān)于為什么HTTP/3要引入UDP?(快速了解QUIC)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • SpringBoot有的時候引入依賴為什么不用加版本號

    有的小伙伴做項目時候,引入新的包時候,會有疑問,為什么有些依賴需要加版本號,有些依賴不需要加版本號?不加版本號的依賴,版本號都寫在哪里了呢? 內(nèi)置的依賴可以不加版本號 這是因為SpringBoot內(nèi)置了很多依賴,引入這些內(nèi)置的依賴時不需要加版本號,相反,如果

    2024年01月19日
    瀏覽(26)
  • 為什么DNS使用UDP而不是TCP詳解!

    DNS(Domain Name System)使用UDP(User Datagram Protocol)而不是TCP(Transmission Control Protocol)的主要原因是出于性能和效率的考慮。下面詳細解釋為什么DNS選擇使用UDP協(xié)議: 小型請求和快速響應:DNS查詢通常是小型請求,僅需要幾個字節(jié)的數(shù)據(jù)傳輸。UDP是無連接的協(xié)議,它不需要在通

    2024年02月02日
    瀏覽(38)
  • 在Vue中動態(tài)引入圖片為什么要用require

    在Vue中動態(tài)引入圖片為什么要用require

    靜態(tài)資源和動態(tài)資源 靜態(tài)資源 動態(tài)的添加src 動態(tài)資源 我們通過網(wǎng)絡請求從后端獲取的資源 動態(tài)的添加src會被當成靜態(tài)資源 動態(tài)的添加src最終會被打包成: 動態(tài)的添加圖片最會會被編譯成一個靜態(tài)的字符串,然后再瀏覽器運行中會去項目中查找這個資源, 靜態(tài)資源編譯 默

    2024年02月13日
    瀏覽(28)
  • C靜態(tài)庫的創(chuàng)建與使用--為什么要引入靜態(tài)庫?

    C靜態(tài)庫的創(chuàng)建與使用--為什么要引入靜態(tài)庫?

    C源程序需要經(jīng)過預處理、編譯、匯編幾個階段,得到各自源文件對應的 可重定位目標文件 ,可重定位目標文件就是各個源文件的二進制機器代碼,一般是.o格式。比如:util1.c、util2.c及main.c三個C源文件,經(jīng)過預處理器、編譯器、匯編器的處理,就可以得到各自的目標文件u

    2024年02月08日
    瀏覽(23)
  • 什么是 http 代理,為什么需要 http 代理?

    什么是 http 代理,為什么需要 http 代理?

    ? 在我們進行軟件測試工作的時候,會有很多地方需要去設置代理的。 比如:fiddler抓包,jmeter錄制腳本等等。 甚至于,在某些公司,去訪問某些內(nèi)部網(wǎng)址的時候,都需要通過連接vpn才能成功訪問。 那到底什么是代理?我們?yōu)槭裁匆褂么砟兀?代理也稱網(wǎng)絡代理,是一種

    2024年02月05日
    瀏覽(23)
  • Redis——關(guān)于它為什么快?使用場景?以及使用方式?為何引入多線程?

    Redis——關(guān)于它為什么快?使用場景?以及使用方式?為何引入多線程?

    目錄 1.既然redis那么快,為什么不用它做主數(shù)據(jù)庫,只用它做緩存? 2.Redis 一般在什么場合下使用? ?3.redis為什么這么快? 4.Redis為什么要引入了多線程? redis設計者的初衷,就只是為了存儲 小量級的共享數(shù)據(jù) 。 所以,他敢直接單線程直接干上去,因為數(shù)據(jù)量小,所以夠快

    2024年01月25日
    瀏覽(23)
  • 為什么要去了解javascript的底層?

    JavaScript的基本數(shù)據(jù)類型包括:數(shù)字、字符串、布爾值、null、undefined。其中,數(shù)字類型可以是整數(shù)或浮點數(shù),字符串類型用單引號或雙引號表示,布爾值只有true和false兩個取值,null表示一個空值,undefined表示一個未定義的值。 在JavaScript底層實現(xiàn)中,每種數(shù)據(jù)類型都有相應的

    2024年02月01日
    瀏覽(21)
  • 一文了解以太坊為什么合并及未來升級規(guī)劃

    一文了解以太坊為什么合并及未來升級規(guī)劃

    一、什么是以太坊升級 以太坊升級最初被稱為「ETH 2.0」或「寧靜(Serenity)」,是一次規(guī)劃已久的以太坊網(wǎng)絡重大升級,將使以太坊網(wǎng)絡具有更好的可擴展性、安全性和可持續(xù)性。 二、為什么要進行升級 眾所周知,以太坊正面臨著網(wǎng)絡擁堵、運行節(jié)點門檻高、能源損耗大等

    2023年04月08日
    瀏覽(26)
  • 分布式 - 談談你對分布式的理解,為什么引入分布式?

    分布式 - 談談你對分布式的理解,為什么引入分布式?

    不啰嗦,我們直接開始! 真正了解分布式系統(tǒng)的概念,日后工作中具有分布式系統(tǒng)設計思想。 能否在設計中對系統(tǒng)穩(wěn)定性方面考慮周全。 能構(gòu)建高 QPS 健壯的系統(tǒng)架構(gòu)。 問題分析: 各種分布式框架層出不窮,Spring Cloud,阿里的 Dubbo,無論使用哪一個,原理都相同,考察下基

    2024年02月15日
    瀏覽(28)
  • 面試題:為什么要合并 HTTP 請求?有什么好處?

    面試題:為什么要合并 HTTP 請求?有什么好處?

    為什么要實現(xiàn)batch call? - 減少網(wǎng)絡中的傳輸損耗 - 如何減少的? - 通過合并HTTP請求 - 合并HTTP請求是如何減少網(wǎng)絡損耗的? 本文將解決這個問題。一起看看單個請求攜載大量信息和多個請求攜載小量信息對于整個時間的影響。 可以保持長連接,但是每個不同的請求之間,clien

    2024年01月19日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包