成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 網絡
Cloudflare 開源的 Quiche 作為 QUIC 和 HTTP/3 的實現,提供了處理 QUIC 數據包和連接狀態管理的底層 API,允許開發者在他們的應用程序中集成 QUIC 和 HTTP/3 的功能。

大家好,我是漁夫。

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

什么是 Quiche

Quiche 是 Cloudflare 開發的一個開源項目,它是 QUIC 協議的一個實現,用 Rust 語言編寫。

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

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,實現新的功能,并在實踐中學習和進步,拭目以待。

入門使用

使用 quiche 建立 QUIC 連接的第一步是創建一個 Config 對象:

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(),配置對象可以在多個連接之間共享。

連接設置

在客戶端,connect() 實用程序函數可用于創建新連接,而 accept()用于服務器端:

// 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 將用于標識新連接。

應用程序還需要傳遞連接的遠程對等點的地址:對于客戶端來說,這是它嘗試連接的服務器的地址,對于服務器來說,這是發起連接的客戶端的地址連接。

處理傳入數據包

使用連接的 recv()方法,可以處理來自網絡的屬于該連接的傳入數據包:

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() 方法生成的。

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()。

let timeout = conn.timeout();

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

// 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();
}

更多使用,可以到官網進行查閱豐富的文檔。

責任編輯:趙寧寧 來源: 碼農漁夫
相關推薦

2016-10-14 14:10:12

2009-06-15 08:48:23

2020-12-22 15:53:06

比特幣安全人民幣

2021-08-02 23:13:46

比特幣安全私鑰

2022-01-21 00:15:49

區塊鏈比特幣安全

2022-03-30 14:42:10

比特幣安全私鑰

2023-08-23 15:19:58

邊緣計算物聯網

2021-04-26 05:36:59

物聯網

2021-07-27 22:51:22

互聯網災害技術

2023-04-14 15:31:10

2011-08-19 11:33:32

2016-07-25 13:26:40

大型機大機IBM

2022-07-20 10:09:15

AIAISummit智能搜索

2022-07-18 09:56:16

AI推薦搜索

2020-11-03 15:38:13

物聯網安全技術

2018-08-15 09:02:59

產業互聯網工業互聯網物聯網

2023-12-06 09:37:14

接口協議物聯網

2012-08-16 09:15:29

2018-10-18 05:29:04

物聯網設備物聯網安全IOT

2016-01-18 10:52:28

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线观看中文字幕 | 日韩伦理一区二区 | av网站观看 | 午夜影晥 | 国产精品永久在线观看 | 欧洲高清转码区一二区 | 日韩视频在线观看中文字幕 | 综合色播 | 欧美亚洲视频在线观看 | 成人久久久 | 久久综合色综合 | 国产日韩一区二区三区 | 福利片一区二区 | 中文字幕在线电影观看 | 日韩aⅴ片 | 亚洲a级| 成人黄色av网站 | av网站免费 | 亚洲一区二区国产 | 久久专区 | 自拍中文字幕 | 国产精品久久久久久久久久久免费看 | 久久久久久网站 | 国产精品美女久久久久久久久久久 | 亚洲+变态+欧美+另类+精品 | 成人免费网站 | 亚洲一区中文字幕在线观看 | 久久国产一区二区三区 | 日韩理论电影在线观看 | 国产精品69毛片高清亚洲 | 久久国产精品色av免费观看 | 免费簧片视频 | 午夜免费精品视频 | h在线免费观看 | 国产精品久久久久久久久图文区 | 天天操天天玩 | 成年人在线视频 | 国产福利在线小视频 | 成人精品一区二区三区 | 伊人精品久久久久77777 | 欧美激情欧美激情在线五月 |