Zusammenfassung

  • URG und der Urgent-Zeiger schaffen keinen zweiten Datenkanal; die dringenden Informationen bleiben im gewöhnlichen TCP-Sequenzraum.
  • RFC 793 enthielt zwei widersprüchliche Grenzregeln. RFC 1122 wählte das „letzte dringende Byte“, bevor RFC 6093 die Norm an die verbreitete Praxis des „Bytes nach den dringenden Daten“ anglich.
  • RFC 9293 behält die heutige Regel und die Implementierungspflicht bei, macht daraus aber weder eine Prioritätsspur noch eine Empfehlung für neue Anwendungen.

Ist URG gesetzt, wird der 16-Bit-Urgent-Zeiger als positiver Versatz zur Sequenznummer des Segments ausgewertet. Er gehört damit in denselben Sequenzraum wie die normalen Daten. Der Empfänger bleibt im Urgent-Modus, solange der markierte Punkt im Sequenzraum weiter als RCV.NXT liegt, und kehrt in den Normalmodus zurück, wenn der Empfangsfortschritt ihn erreicht. Die Bytes bleiben also im Datenstrom. Dass manche Socket-APIs standardmäßig ein Byte als „out of band“ präsentieren, ist API-Verhalten und kein zweiter Transportdienst.

Der ursprüngliche Widerspruch war klein, aber folgenreich. Die Headerbeschreibung in RFC 793 setzte den Zeiger auf das Byte nach den dringenden Daten; die SEND-Verarbeitung setzte SND.UP dagegen auf SND.NXT-1 und deutete damit auf das letzte dringende Byte. RFC 1122 entschied sich für die letzte-Byte-Auslegung und verlangte beliebig lange dringende Sequenzen sowie eine asynchrone Benachrichtigung der Anwendung. RFC 6093 stellte jedoch fest, dass die untersuchten verbreiteten Implementierungen der folgende-Byte-Auslegung folgten. Deshalb aktualisierte sie RFC 793, RFC 1011 und RFC 1122 auf diese Praxis. RFC 9293 führt sie als heutige Muss-Regel fort.

Mehrere Aktualisierungen des Zeigers während eines bestehenden Urgent-Modus müssen nicht mehrere Anwendungsbenachrichtigungen erzeugen. Die Zahl der Urgent-Aufrufe des Senders kann daher von der Zahl der Empfängerhinweise abweichen. RFC 6093 dokumentierte außerdem einige Middleboxes, die URG löschten und den Zeiger auf null setzten; sie behauptete nicht, dass alle Geräte so arbeiten. Die Quellen belegen weder heutige Nutzungsanteile noch aktuelle Betriebssystem-Defaults oder Angriffshäufigkeiten.

Quellen