TsgcQUICClient › Eigenschaften › QUICOptions
Transport-Feinabstimmung für die QUIC-Verbindung, bereitgestellt über ein einzelnes Settings-Unterobjekt.
TsgcQUICClient_Options
property QUICOptions: TsgcQUICClient_Options read FQUICOptions write SetQUICOptions;
Wird automatisch vom Konstruktor der Komponente erstellt. Siehe die Standardwerte der einzelnen Felder unten.
TsgcQUICClient_Options hat genau eine Eigenschaft, Settings, vom Typ TsgcQUICSettings. Alles, was Sie einstellen können, liegt unter QUICOptions.Settings.
| Name | Typ | Hinweise | Beschreibung |
|---|---|---|---|
PMTU | Integer | 1200 | Path MTU in Bytes, das größte QUIC-Paket, das der Client erzeugt. 1200 ist die konservative Untergrenze, die RFC 9000 als ohne Fragmentierung routbar garantiert. Erhöhen Sie sie nur in einem Netzwerk, das Sie kontrollieren und in dem Sie wissen, dass die Path MTU größer ist, ein Wert oberhalb der tatsächlichen Path MTU führt dazu, dass Pakete stillschweigend verworfen werden. |
MaxData | Integer | 10000000 | Flusssteuerungs-Guthaben auf Verbindungsebene in Bytes, das dem Peer als Gesamtmenge angekündigt wird, die er über alle Streams senden darf. |
MaxStreamData | Integer | 78125 | Flusssteuerungs-Guthaben pro Stream in Bytes, also die Menge, die der Peer auf einem einzelnen Stream senden darf, bevor er warten muss, bis der Client das Fenster erweitert. |
MaximumStreamId | Integer | 128 | Obergrenze für die Stream-Bezeichner, die der Client verfolgt, was begrenzt, wie viele Streams eine Verbindung tragen kann. |
MaximumConnectionIds | Integer | 8 | Wie viele Verbindungsbezeichner der Client gleichzeitig vorhält. QUIC verwendet zusätzliche Connection-IDs, um einen Wechsel der IP-Adresse oder des Ports zu überstehen. |
MaximumFramesPerPacket | Integer | 10 | Wie viele QUIC-Frames der Client in einem einzelnen Paket zusammenfasst, bevor er ein neues beginnt. |
MaximumInitialPacketNumber | Integer | 100 | Obergrenze für die während des Handshakes verwendete Paketnummer (Initial-Paketnummernraum). |
CanAcceptInitialClientConnectionId | Boolean | False | Ob eine von der Client-Seite gewählte Connection-ID für die Initial-Pakete akzeptiert wird statt derjenigen, die der Server wählt. |
ShouldBufferPacketsBeforeConnection | Boolean | False | Bei True werden Pakete, die vor dem vollständigen Aufbau der Verbindung erzeugt werden, gepuffert und abgesendet, sobald sie bereit ist, statt verworfen zu werden. |
Passen Sie die Untereigenschaften an, bevor Sie die Verbindung öffnen. Insbesondere PMTU wird beim Erstellen auf das Verbindungsobjekt kopiert, eine Änderung an einer aktiven Verbindung wird daher nicht übernommen. Die TLS-bezogene Konfiguration befindet sich in SSLQUICOptions, nicht hier.
Der Writer dieser Eigenschaft ersetzt das Objekt nicht, er weist die Quelle in die vorhandene Instanz zu. QUICOptions := SomeOtherOptions kopiert die Werte hinüber, es übernimmt nicht den Besitz des anderen Objekts, und dasselbe gilt in .NET.
Welche Einstellungen tatsächlich gelten, hängt von der QUIC-Engine ab. Diese Felder steuern die benutzerdefinierte, in reinem Pascal geschriebene QUIC-Engine (qmCustom), die ihren eigenen Paket-Builder und ihre eigene Flusssteuerung besitzt. Unter der integrierten OpenSSL-QUIC-Engine (qmBuiltin) werden die Transportparameter von OpenSSL selbst ausgehandelt und die meisten dieser Werte werden nicht herangezogen. Die Engine wird beim Laden automatisch ausgewählt, siehe TsgcQUICClient. In der .NET-Implementierung wird das gesamte Einstellungsobjekt aus Gründen der API-Parität beibehalten, aber der verwaltete System.Net.Quic-Stack handelt den Transport selbst aus, sodass nur PMTU auf das Verbindungsobjekt übertragen wird.
Die Standardwerte in der obigen Tabelle sind die von Delphi. Der .NET-Build initialisiert PMTU auf 1200, MaximumConnectionIds auf 8 und MaximumStreamId auf 128 wie gezeigt, belässt jedoch MaxData, MaxStreamData, MaximumFramesPerPacket und MaximumInitialPacketNumber bei 0, da der verwaltete Stack sie nicht liest.
Die Standardwerte sind sicher und interoperabel. Ändern Sie sie nur, wenn Sie einen messbaren Grund dafür haben.
oClient := TsgcQUICClient.Create(nil);
oClient.Host := 'www.example.com';
oClient.Port := 443;
// raise the per-stream window for a bulk transfer on a known network
oClient.QUICOptions.Settings.MaxStreamData := 1000000;
oClient.QUICOptions.Settings.MaxData := 20000000;
oClient.Connect;