聽到 HTTP/3 基於 UDP 協議的消息,不少人可能都跟我一樣驚呆了。
我們從開始學習網路協議就一定會接觸到 HTTP,而教科書或者老師一直以來說的都是「UDP 不可靠,所以 HTTP 基於 TCP 協議」,雖然偶爾會思考「UDP 與 TCP 都是比較底層的協議,用 TCP 來定義上層的 HTTP 協議,也是需要經過一系列設計和封裝的,那憑什麼 UDP 就不可以試試呢?」、「是成本問題?HTTP 在 TCP 之上設計的成本也不低啊,比如三次握手、四次揮手、滑動窗口等構思精妙的演算法,也都是在經過無數次設計與嘗試之後確定下來的。」……但是總之 HTTP 只能基於 TCP,而不能是 UDP 這一思維還是在一道道試題和一次次編程 request-response 的過程中固定在腦海里。
所以 HTTP/3 不再基於 TCP 而是採用了 UDP,這一消息還是挺讓人驚訝的。
看到這裡可能有人會驚訝於另一個點:什麼?!HTTP 協議都發展到 v3 了?
其實目前正逐漸走向主流的 HTTP 協議是 HTTP/2,它相比於 HTTP/1,大幅度提高了性能,網站只需要升級到新版本協議就可以減少很多之前需要做的性能優化工作,當然兼容問題以及如何優雅降級是比較棘手的問題,這也應該是國內目前還不普遍使用 HTTP/2 的重要原因。
雖然 HTTP/2 帶來了許多優點,但是並不代表它已經是完美的了,HTTP/3 就是為了解決 HTTP/2 所存在的一些問題而被推出來的。