2.2.3 DXDiag DirectPlay Packets
DirectPlay DXDiag Usage Protocol packets beginning with a zero byte are used to locate game sessions and to test network paths for peer connection attempts. Packets that have a nonzero first byte are part of an actively managed connection and are further divided into command, user data, and ACK packet types.
A packet's purpose is determined by a combination of its command values, extended operation code values, or flag values within the packet header. For user data transport packets, the first byte that follows the 4-byte header declares the type of information included in the packet.
The DirectPlay DXDiag Usage Protocol uses the following packets.
Packet |
Description |
---|---|
Responds to an enumeration request. |
|
Circumvents issues with network address translation (NAT) devices. |
|
Transport packet header that contains command, control, and acknowledgment information. |
|
Sends client connection information to the host. |
|
Relays game session information from the server to the client. |
|
Sent from the client to the server to acknowledge the receipt of connection information. |
|
Instructs a client to connect to a designated client. |
|
Specifies the version number of the name table. |
|
Instructs a client to send name table information to the host. |
|
Transmits name table information from a client to the host. |
|
Requests that the name table version number be resynchronized to the current version number. |
|
Sends a user identification number to another client. |
|
Indicates that a peer in the game session is unable to connect to a new peer. |
|
Indicates that a connection attempt failed. |
|
Instructs a client to disconnect from the game session. |
|
Indicates that a client was unable to carry out a server's instruction to connect to a new client. |
|
Indicates that host migration is enabled and that the host server is terminating. |
|
Informs clients that the game session-hosting responsibilities have successfully migrated from the departing host. |
|
Instructs clients to add the specified client to the game session. |
|
Instructs clients to remove the specified user from the name table. |
|
Signals the disconnection of a user. |
|
Requests that a host determine if a target client is still in the game session. |
|
Requests that a client validate that it is still in the game session. |
|
Response from a client validating that it is still in the game session. |
|
Transmits a chat message to all other users in the game session. |
|
Requests a connection. |
|
Accepts a connection request. |
|
Acknowledges outstanding packets. |
To reduce network traffic, several DirectPlay TRANS_USERDATA packets can be fused into a single packet using a special coalesced payload, as defined in section 2.2.17.1. TRANS_USERDATA packets that have the PACKET_COMMAND_USER1 or PACKET_COMMAND_USER2 flag set in the bCommand field of the TRANS_USERDATA_HEADER packet header can be coalesced.