====== std.net.quic ====== QUIC (RFC 9000) ist ein modernes Transportprotokoll auf UDP-Basis, das von Google entwickelt und durch die IETF standardisiert wurde. Gegenüber TCP+TLS bietet QUIC integrierte TLS 1.3-Verschlüsselung, Stream-Multiplexing ohne Head-of-Line-Blocking und schnellere Verbindungsaufbauzeiten (0-RTT/1-RTT Handshake). QUIC ist die Transportschicht von HTTP/3. Die Unit implementiert den QUIC-Handshake, Stream-Management (öffnen/schließen/lesen/schreiben), alle Frame-Typen (STREAM, ACK, PADDING, CRYPTO, CONNECTION_CLOSE) und variable-length Integer-Codierung (Varint). Einsatzbereiche sind hochperformante verschlüsselte Kommunikation und HTTP/3-Implementierungen. ---- ===== Imports ===== * ''std.net.socket'' * ''std.net.dns'' * ''std.net.types'' ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''QUIC_PORT'' | ''int64'' | ''443'' | pub | | ''QUIC_VERSION_1'' | ''int64'' | ''$00000001'' | pub | | ''QUIC_PKT_INITIAL'' | ''int64'' | ''0'' | pub | | ''QUIC_PKT_0RTT'' | ''int64'' | ''1'' | pub | | ''QUIC_PKT_HANDSHAKE'' | ''int64'' | ''2'' | pub | | ''QUIC_PKT_RETRY'' | ''int64'' | ''3'' | pub | | ''QUIC_PKT_1RTT'' | ''int64'' | ''4'' | pub | | ''QUIC_FRAME_PADDING'' | ''int64'' | ''$00'' | pub | | ''QUIC_FRAME_PING'' | ''int64'' | ''$01'' | pub | | ''QUIC_FRAME_ACK'' | ''int64'' | ''$02'' | pub | | ''QUIC_FRAME_ACK_ECN'' | ''int64'' | ''$03'' | pub | | ''QUIC_FRAME_RESET_STREAM'' | ''int64'' | ''$04'' | pub | | ''QUIC_FRAME_STOP_SENDING'' | ''int64'' | ''$05'' | pub | | ''QUIC_FRAME_CRYPTO'' | ''int64'' | ''$06'' | pub | | ''QUIC_FRAME_NEW_TOKEN'' | ''int64'' | ''$07'' | pub | | ''QUIC_FRAME_STREAM_BASE'' | ''int64'' | ''$08'' | pub | | ''QUIC_FRAME_MAX_DATA'' | ''int64'' | ''$10'' | pub | | ''QUIC_FRAME_MAX_STREAM_DATA'' | ''int64'' | ''$11'' | pub | | ''QUIC_FRAME_MAX_STREAMS_BIDI'' | ''int64'' | ''$12'' | pub | | ''QUIC_FRAME_MAX_STREAMS_UNI'' | ''int64'' | ''$13'' | pub | | ''QUIC_FRAME_DATA_BLOCKED'' | ''int64'' | ''$14'' | pub | | ''QUIC_FRAME_STREAM_DATA_BLOCKED'' | ''int64'' | ''$15'' | pub | | ''QUIC_FRAME_STREAMS_BLOCKED_BIDI'' | ''int64'' | ''$16'' | pub | | ''QUIC_FRAME_STREAMS_BLOCKED_UNI'' | ''int64'' | ''$17'' | pub | | ''QUIC_FRAME_NEW_CONNECTION_ID'' | ''int64'' | ''$18'' | pub | | ''QUIC_FRAME_RETIRE_CONNECTION_ID'' | ''int64'' | ''$19'' | pub | | ''QUIC_FRAME_PATH_CHALLENGE'' | ''int64'' | ''$1A'' | pub | | ''QUIC_FRAME_PATH_RESPONSE'' | ''int64'' | ''$1B'' | pub | | ''QUIC_FRAME_CONNECTION_CLOSE'' | ''int64'' | ''$1C'' | pub | | ''QUIC_FRAME_CONNECTION_CLOSE_APP'' | ''int64'' | ''$1D'' | pub | | ''QUIC_FRAME_HANDSHAKE_DONE'' | ''int64'' | ''$1E'' | pub | | ''QUIC_ERR_NO_ERROR'' | ''int64'' | ''$00'' | pub | | ''QUIC_ERR_INTERNAL_ERROR'' | ''int64'' | ''$01'' | pub | | ''QUIC_ERR_CONNECTION_REFUSED'' | ''int64'' | ''$02'' | pub | | ''QUIC_ERR_FLOW_CONTROL_ERROR'' | ''int64'' | ''$03'' | pub | | ''QUIC_ERR_STREAM_LIMIT_ERROR'' | ''int64'' | ''$04'' | pub | | ''QUIC_ERR_STREAM_STATE_ERROR'' | ''int64'' | ''$05'' | pub | | ''QUIC_ERR_FINAL_SIZE_ERROR'' | ''int64'' | ''$06'' | pub | | ''QUIC_ERR_FRAME_ENCODING_ERROR'' | ''int64'' | ''$07'' | pub | | ''QUIC_ERR_TRANSPORT_PARAMETER_ERROR'' | ''int64'' | ''$08'' | pub | | ''QUIC_ERR_CONNECTION_ID_LIMIT_ERROR'' | ''int64'' | ''$09'' | pub | | ''QUIC_ERR_PROTOCOL_VIOLATION'' | ''int64'' | ''$0A'' | pub | | ''QUIC_ERR_INVALID_TOKEN'' | ''int64'' | ''$0B'' | pub | | ''QUIC_ERR_APPLICATION_ERROR'' | ''int64'' | ''$0C'' | pub | | ''QUIC_ERR_CRYPTO_BUFFER_EXCEEDED'' | ''int64'' | ''$0D'' | pub | | ''QUIC_ERR_KEY_UPDATE_ERROR'' | ''int64'' | ''$0E'' | pub | | ''QUIC_ERR_AEAD_LIMIT_REACHED'' | ''int64'' | ''$0F'' | pub | | ''QUIC_ERR_NO_VIABLE_PATH'' | ''int64'' | ''$10'' | pub | | ''QUIC_TP_ORIGINAL_DESTINATION_CONNECTION_ID'' | ''int64'' | ''0'' | pub | | ''QUIC_TP_MAX_IDLE_TIMEOUT'' | ''int64'' | ''1'' | pub | | ''QUIC_TP_STATELESS_RESET_TOKEN'' | ''int64'' | ''2'' | pub | | ''QUIC_TP_MAX_UDP_PAYLOAD_SIZE'' | ''int64'' | ''3'' | pub | | ''QUIC_TP_INITIAL_MAX_DATA'' | ''int64'' | ''4'' | pub | | ''QUIC_TP_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL'' | ''int64'' | ''5'' | pub | | ''QUIC_TP_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE'' | ''int64'' | ''6'' | pub | | ''QUIC_TP_INITIAL_MAX_STREAM_DATA_UNI'' | ''int64'' | ''7'' | pub | | ''QUIC_TP_INITIAL_MAX_STREAMS_BIDI'' | ''int64'' | ''8'' | pub | | ''QUIC_TP_INITIAL_MAX_STREAMS_UNI'' | ''int64'' | ''9'' | pub | | ''QUIC_TP_ACK_DELAY_EXPONENT'' | ''int64'' | ''10'' | pub | | ''QUIC_TP_MAX_ACK_DELAY'' | ''int64'' | ''11'' | pub | | ''QUIC_TP_DISABLE_ACTIVE_MIGRATION'' | ''int64'' | ''12'' | pub | | ''QUIC_TP_PREFERRED_ADDRESS'' | ''int64'' | ''13'' | pub | | ''QUIC_TP_ACTIVE_CONNECTION_ID_LIMIT'' | ''int64'' | ''14'' | pub | | ''QUIC_TP_INITIAL_SOURCE_CONNECTION_ID'' | ''int64'' | ''15'' | pub | | ''QUIC_TP_RETRY_SOURCE_CONNECTION_ID'' | ''int64'' | ''16'' | pub | | ''QUIC_MAX_PACKET_SIZE'' | ''int64'' | ''1452'' | pub | | ''QUIC_MIN_INITIAL_SIZE'' | ''int64'' | ''1200'' | pub | | ''QUIC_CONN_ID_LEN'' | ''int64'' | ''8'' | pub | ---- ===== Typen ===== ==== QUICConn (struct) ==== ^ Feld ^ Typ ^ ==== QUICStream (struct) ==== ^ Feld ^ Typ ^ ==== QUICPacketHeader (struct) ==== ^ Feld ^ Typ ^ ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''QUICRandomBytes(buf: int64, len: int64)'' | pub | Kryptografisch zufällige Bytes erzeugen | | ''QUICWriteVarint(buf: int64, pos: int64, value: int64): int64'' | pub | Variable-Length-Integer in Puffer schreiben | | ''QUICReadVarint(buf: int64, pos: int64): int64'' | pub | Variable-Length-Integer aus Puffer lesen | | ''QUICVarintSize(buf: int64, pos: int64): int64'' | pub | Byte-Größe eines Varint bestimmen | | ''QUICBuildInitialPacket(destConnId: int64, destLen: int64, srcConnId: int64, srcLen: int64): int64'' | pub | QUIC-Initial-Paket für Handshake aufbauen | | ''QUICBuildStreamFrame(streamId: int64, data: int64, dataLen: int64, fin: int64): int64'' | pub | STREAM-Frame aufbauen | | ''QUICBuildPaddingFrame(len: int64): int64'' | pub | PADDING-Frame aufbauen | | ''QUICBuildAckFrame(largestAcked: int64, ackDelay: int64): int64'' | pub | ACK-Frame aufbauen | | ''QUICBuildConnectionClose(errorCode: int64, reason: int64): int64'' | pub | CONNECTION_CLOSE-Frame aufbauen | | ''QUICConnect(host: int64, port: int64): QUICConn'' | pub | QUIC-Verbindung aufbauen | | ''QUICOpenStream(conn: QUICConn): QUICStream'' | pub | Neuen Stream in Verbindung öffnen | | ''QUICStreamWrite(stream: QUICStream, data: int64, len: int64): int64'' | pub | Daten in Stream schreiben | | ''QUICStreamRead(stream: QUICStream, buf: int64, bufsize: int64): int64'' | pub | Daten aus Stream lesen | | ''QUICCloseStream(stream: QUICStream)'' | pub | Stream schließen | | ''QUICDisconnect(conn: QUICConn)'' | pub | QUIC-Verbindung trennen |