日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

互聯網中,速度與安全性是永恒追求的,Rust 編寫的 QUIC 協議,到底有多強?

來源: 責編: 時間:2024-05-11 09:19:00 214觀看
導讀大家好,我是漁夫。今天分享主題,Cloudflare 開源的 Quiche 作為 QUIC 和 HTTP/3 的實現,提供了處理 QUIC 數據包和連接狀態管理的底層 API,允許開發者在他們的應用程序中集成 QUIC 和 HTTP/3 的功能。什么是 QuicheQuiche

大家好,我是漁夫。i3N28資訊網——每日最新資訊28at.com

今天分享主題,Cloudflare 開源的 Quiche 作為 QUIC 和 HTTP/3 的實現,提供了處理 QUIC 數據包和連接狀態管理的底層 API,允許開發者在他們的應用程序中集成 QUIC 和 HTTP/3 的功能。i3N28資訊網——每日最新資訊28at.com

i3N28資訊網——每日最新資訊28at.com

什么是 Quiche

Quiche 是 Cloudflare 開發的一個開源項目,它是 QUIC 協議的一個實現,用 Rust 語言編寫。i3N28資訊網——每日最新資訊28at.com

QUIC 是一種新的網絡傳輸協議,由 Google 開發,旨在提高網絡流量的安全性和性能。QUIC 協議默認進行加密,以減少數據傳輸的延遲,并提供更快的連接建立時間。i3N28資訊網——每日最新資訊28at.com

Quiche 的特點

  • 最小化和直觀的 API:quiche 設計了一個簡單直觀的 API,使得應用程序可以輕松地集成 QUIC 協議,同時保持了對底層復雜性的控制。
  • 與現有技術的兼容性:quiche 能夠與現有的網絡棧和加密庫(如 BoringSSL 默認啟用)集成,這使得它可以被嵌入到不同的網絡應用中,包括 Cloudflare 自身的服務。
  • 性能和安全性:通過使用 Rust 的 ring 庫,quiche 實現了快速且安全的加密原語,這對于 QUIC 協議的性能至關重要。
  • ffi:構建 C 語言的 FFI API,方便在 C/C++ 程序中集成 quiche。
  • qlog:啟用 qlog 日志格式支持,用于網絡協議分析。

誰在使用 Quiche?

  • Cloudflare:Quiche 驅動了 Cloudflare 邊緣網絡的 HTTP/3 支持。
  • Android:Android 的 DNS 解析器使用 Quiche 實現了通過 HTTP/3 的 DNS。
  • curl:Quiche 可以集成到 curl 中,以提供對 HTTP/3 的支持。
  • NGINX(非官方):通過使用非官方補丁,Quiche 可以集成到 NGINX 中,以提供對 HTTP/3 的支持。

Quiche 現狀與未來

雖然,quiche 是 QUIC 實現中較新的一個,但它已經能夠與其他更成熟的實現進行互操作,并展示了 QUIC 的許多特性。Quiche 和 QUIC 本身都還在不斷完善中,隨著在互聯網上更廣泛地部署 QUIC,也將不斷發現并修復bug,實現新的功能,并在實踐中學習和進步,拭目以待。i3N28資訊網——每日最新資訊28at.com

入門使用

使用 quiche 建立 QUIC 連接的第一步是創建一個 Config 對象:i3N28資訊網——每日最新資訊28at.com

let mut config = quiche::Config::new(quiche::PROTOCOL_VERSION)?;config.set_application_protos(&[b"example-proto"]);

該 Config 對象控制 QUIC 連接的重要方面,如 QUIC 版本、ALPN ID、流量控制、擁塞控制、空閑超時和其他屬性或功能。Config 還保存 TLS 配置。這可以通過現有對象上的修改器來更改,或者通過手動構建 TLS 上下文并使用with_boring_ssl_ctx_builder(),配置對象可以在多個連接之間共享。i3N28資訊網——每日最新資訊28at.com

連接設置

在客戶端,connect() 實用程序函數可用于創建新連接,而 accept()用于服務器端:i3N28資訊網——每日最新資訊28at.com

// Client connection.let conn =    quiche::connect(Some(&server_name), &scid, local, peer, &mut config)?;// Server connection.let conn = quiche::accept(&scid, None, local, peer, &mut config)?;

在這兩種情況下,應用程序負責生成新的源連接 ID,該 ID 將用于標識新連接。i3N28資訊網——每日最新資訊28at.com

應用程序還需要傳遞連接的遠程對等點的地址:對于客戶端來說,這是它嘗試連接的服務器的地址,對于服務器來說,這是發起連接的客戶端的地址連接。i3N28資訊網——每日最新資訊28at.com

處理傳入數據包

使用連接的 recv()方法,可以處理來自網絡的屬于該連接的傳入數據包:i3N28資訊網——每日最新資訊28at.com

let to = socket.local_addr().unwrap();loop {    let (read, from) = socket.recv_from(&mut buf).unwrap();    let recv_info = quiche::RecvInfo { from, to };    let read = match conn.recv(&mut buf[..read], recv_info) {        Ok(v) => v,        Err(quiche::Error::Done) => {            // Done reading.            break;        },        Err(e) => {            // An error occurred, handle it.            break;        },    };}

生成傳出數據包

傳出數據包是使用連接的 send() 方法生成的。i3N28資訊網——每日最新資訊28at.com

loop {    let (write, send_info) = match conn.send(&mut out) {        Ok(v) => v,        Err(quiche::Error::Done) => {            // Done writing.            break;        },        Err(e) => {            // An error occurred, handle it.            break;        },    };    socket.send_to(&out[..write], &send_info.to).unwrap();}

發送數據包時,應用程序負責維護計時器以對基于時間的連接事件做出反應。可以使用連接的方法獲取計時器到期時間 timeout()。i3N28資訊網——每日最新資訊28at.com

let timeout = conn.timeout();

應用程序負責提供計時器實現,該實現可以特定于所使用的操作系統或網絡框架。當計時器到期時,on_timeout()應調用連接的方法,之后可能需要在網絡上發送其他數據包。i3N28資訊網——每日最新資訊28at.com

// Timeout expired, handle it.conn.on_timeout();// Send more packets as needed after timeout.loop {    let (write, send_info) = match conn.send(&mut out) {        Ok(v) => v,        Err(quiche::Error::Done) => {            // Done writing.            break;        },        Err(e) => {            // An error occurred, handle it.            break;        },    };    socket.send_to(&out[..write], &send_info.to).unwrap();}

更多使用,可以到官網進行查閱豐富的文檔。i3N28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-87971-0.html互聯網中,速度與安全性是永恒追求的,Rust 編寫的 QUIC 協議,到底有多強?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 絕妙 C++ 技巧:輕松掌握數值交換!

下一篇: C# 異常處理與 try-catch-finally 結構

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • 消息稱小米汽車開始篩選交付中心:需至少120個車位

    IT之家 7 月 7 日消息,日前,有微博簡介為“汽車行業從業者、長三角一體化擁護者”的微博用戶 @長三角行健者 發文表示,據經銷商集團反饋,小米汽車目前
  • AMD的AI芯片轉單給三星可能性不大 與臺積電已合作至2nm制程

    據 DIGITIMES 消息,英偉達 AI GPU 出貨逐季飆升,接下來 AMD MI 300 系列將在第 4 季底量產。而半導體業內人士表示,近日傳出 AMD 的 AI 芯片將轉單給
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 聯想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯想此前宣布,將于11月2日19:30召開聯想秋季輕薄新品發布會,推出聯想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
Top 主站蜘蛛池模板: 连州市| 阜平县| 洱源县| 留坝县| 徐闻县| 丰顺县| 石狮市| 左云县| 巍山| 阿尔山市| 富川| 贵溪市| 嘉荫县| 英山县| 襄垣县| 漳平市| 新丰县| 黄骅市| 桐乡市| 舞阳县| 开远市| 辽阳县| 龙江县| 龙泉市| 南通市| 丰城市| 民县| 宁陵县| 沂南县| 石台县| 龙游县| 交城县| 凤庆县| 攀枝花市| 兖州市| 漳浦县| 甘洛县| 吉安县| 新竹县| 津市市| 维西|