Valve hat die Netzwerkbibliothek GameNetworkingSockets 1.5.0 veröffentlicht.

Nach vier Jahren Entwicklung hat das Unternehmen Valve die Version 1.5.0 der GameNetworkingSockets-Bibliothek veröffentlicht, die ein Nachrichtensystem über UDP implementiert, das für einen schnellen und zuverlässigen Datenaustausch in Spielen verwendet werden kann. Der Code ist in C++ geschrieben und wird unter einer BSD-Lizenz bereitgestellt.

GameNetworkingSockets implementiert ein über UDP ähnliches Protokoll wie TCP, das die Verbindungseinrichtung ermöglicht, jedoch auf die Übertragung von Nachrichten anstelle von Streams ausgerichtet ist. Über den etablierten Kommunikationskanal können Nachrichten sowohl im Modus der garantierten Zustellung als auch im schnelleren Modus der unzuverlässigen Übertragung gesendet werden.

Das Protokoll unterstützt Funktionen wie die Verarbeitung von Fragmentierungen, die Neubildung von Paketen, die Prognose und Begrenzung der Bandbreite, die Erstellung von P2P-Kommunikationskanälen, die Umgehung von Adressübersetzern (über WebRTC ICE) und die Verschlüsselung. Die Daten in den Paketen werden mit dem AES-Blockverschlüsselungsalgorithmus verschlüsselt, während digitale Signaturen auf der Basis elliptischer Kurven (Ed25519) für den Schlüssel- und Zertifikataustausch verwendet werden. Die Mechanismen zur Schlüsselzustellung und zur Auswahl des Initialisierungsvektors für jedes Paket basieren auf Methoden, die im QUIC-Protokoll angewendet werden.

Zu den Neuerungen in der neuen Version gehören:

  • Die API ISteamNetworkingSockets::SendMessages wurde erweitert, um die Verarbeitung von Fehlern beim Senden und die Initiierung von Lieferversuchen zu erleichtern.
  • Neue Einstellungen für ECN, Jitter, die Bestimmung der lokalen IP (IPLocalHost) und die Deaktivierung der Authentifizierung (AllowWithoutAuth) wurden hinzugefügt.
  • Eine API-Option ISteamNetworkingMessages für die Programmiersprache C wurde hinzugefügt.
  • Eine erste Version einer Bindung für die Programmiersprache Rust wurde implementiert.
  • Fehler in der Implementierung des P2P-Modus wurden behoben.
  • Automatische Anpassungen für Fälle, die mit der Reihenfolge des Eintreffens von Paketen und Nachrichten zu tun haben, wurden realisiert.
  • Die Integration mit den CMake- und vcpkg-Tools wurde verbessert.
  • Die Kompatibilität mit neuen Versionen der Protobuf- und Abseil-Bibliotheken wurde hergestellt.
  • Die Unterstützung für Diagnosen über ETW (Event Tracing for Windows) wurde hinzugefügt.
  • Sicherheitsanfälligkeiten wurden behoben, deren Einzelheiten nicht angegeben werden, aber laut Änderungsprotokoll handelt es sich um Integer-Überläufe in den Paketversandfunktionen und die Möglichkeit, die Zertifikatsprüfung in der Funktion CheckCertPOPID zu umgehen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4