3. Limitations of the "max_fragment_length" Extension (Einschränkungen der Erweiterung "max_fragment_length“)
3. Limitations of the "max_fragment_length" Extension (Einschränkungen der Erweiterung „max_fragment_length“)
Die Erweiterung max_fragment_length hat mehrere Einschränkungen, die sie für den Einsatz ungeeignet machen.
Ein Client ohne Einschränkungen, die ihn am Akzeptieren großer Datensätze hindern, kann max_fragment_length nicht nutzen, ohne das Risiko einer Verkleinerung der Datensatzgröße einzugehen. Der von der Erweiterung zugelassene Maximalwert ist 2^12, viel kleiner als die maximale vom Protokoll zulässige Datensatzgröße von 2^14.
Bei großen Datenübertragungen können kleine Datensatzgrößen die Leistung spürbar beeinträchtigen. Jeder Datensatz verursacht zusätzliche Kosten, sowohl durch zusätzliche Oktette für Datensatzheader als auch durch Expansion durch Verschlüsselung. Die Verarbeitung weiterer Datensätze erhöht auch Rechenaufwände, die bei größeren Datensatzgrößen effektiver amortisiert werden können. Folglich können Clients, die große Datensätze empfangen können, ungern die Leistung riskieren, indem sie die Erweiterung anbieten, insbesondere wenn die Erweiterung selten benötigt wird.
Dies wäre kein Problem, wenn ein Codepoint für Fragmente von 2^14 Oktetten verfügbar wäre oder hinzugefügt werden könnte. RFC 6066 verlangt jedoch, dass Server den Handshake mit einer illegal_parameter-Warnung abbrechen, wenn sie die Erweiterung mit einem Wert erhalten, den sie nicht verstehen. Dadurch ist es unmöglich, der Erweiterung neue Werte hinzuzufügen, ohne das Risiko fehlgeschlagener Verbindungsversuche.
Ein Server, der max_fragment_length aushandelt, muss den vom Client gewählten Wert zurücksenden. Der Server kann kein niedrigeres Limit als das vom Client angebotene verlangen. Dies ist ein erhebliches Problem, wenn der Server stärker eingeschränkt ist als die Clients, die er bedient.
Die Erweiterung max_fragment_length eignet sich auch schlecht für Fälle, in denen die Fähigkeiten von Client und Server asymmetrisch sind. Einschränkungen der Datensatzgröße sind oft Empfängerbeschränkungen.
Im Vergleich dazu kann eine Implementierung Daten möglicherweise inkrementell senden. Verschlüsselung hat nicht dieselbe Atomaritätsanforderung. Einige Chiffren können verschlüsselt und schrittweise gesendet werden. Daher kann ein Endpunkt bereit sein, Datensätze zu senden, die größer sind als das Limit, das er für empfangene Datensätze bekannt gibt.
Wenn diese Anreize ausreichen, Clients von der Bereitstellung der Erweiterung max_fragment_length abzuhalten, können eingeschränkte Server die Datensatzgrößen nicht begrenzen.