In der Netzwerkprogrammierung ist die Konstruktion von TCP/IP -Nachrichtenheadern ein wichtiger Schritt bei der Implementierung des zugrunde liegenden Kommunikationsprotokolls. Als flexible Skriptsprache werden wir jedoch mit seinem leistungsstarken Binärdatenverarbeitungsfunktionspack () in der Regel für die Webseitenentwicklung verwendet, sondern können sie auch zum Konstruktion von TCP/IP -Nachrichten -Headern verwenden und sogar das Design benutzerdefinierter Protokolle implementieren.
In diesem Artikel wird detailliert eingeführt, wie die Funktion Pack () von PHP () TCP/IP -Paket verwendet und Beispiele zum Entwerfen eines einfachen benutzerdefinierten Protokolls verwendet werden.
Der TCP -Nachrichtenheader besteht aus mehreren Feldern. Zu den allgemeinen gehören:
Quellport: 2 Bytes
Zielport: 2 Bytes
Sequenznummer: 4 Bytes
Bestätigungsnummer: 4 Bytes
Datenversatz und reservierte Bits: 1 Byte
Flaggen: 1 Byte
Fenstergröße: 2 Bytes
Prüfsumme: 2 Bytes
Dringender Zeiger: 2 Bytes
Der IP -Header besteht aus mehreren Feldern.
Um diese Nachrichtenüberschriften in PHP zu konstruieren, besteht der Kern darin, jedes Feld in eine binäre Zeichenfolge im angegebenen Format zu verpacken, und Pack () ist dieses Schlüsselwerkzeug.
Die Funktion pack () packt die Parameter in binäre Zeichenfolgen ein. Es steuert Verpackungsregeln durch Formatzeichen:
n - nicht signierte kurze Ganzzahl (2 Bytes, Netzwerk Endiangness)
N - Long nicht signiert (4 Bytes, Netzwerk Endiangness)
C - Unsignierte Zeichen (1 Byte)
A - NUL FILL -Saite
Netzwerk-Byte-Bestellung ist die Big-Endian-Byte-Bestellung, die den Bestimmungen des TCP/IP-Protokolls entspricht.