筆者前段時間參加銀行技術(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)帶來更快的速度和更好的體驗。
參考資料:文章來源:http://www.zghlxwxcb.cn/news/detail-798675.html
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)!