2.2.3 TcpMessageHeader

The TcpMessageHeader packet encapsulates MMS messages when they are sent over TCP. A single TcpMessageHeader packet can contain multiple MMS messages. TcpMessageHeader is not used for MMS messages that are sent over UDP.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

rep

version

versionMinor

padding

sessionId

messageLength

seal

chunkCount

seq

MBZ

timeSent

...

MMS message (variable)

...

rep (1 byte): An 8-bit field. It MUST be set to 0x1.

version (1 byte): An 8-bit field. It MUST be set to 0x0.

versionMinor (1 byte): An 8-bit field. It MUST be set to 0x0.

padding (1 byte): An 8-bit field. It SHOULD be set to 0x0, and SHOULD be ignored by receivers.

sessionId (4 bytes): A 32-bit field. It MUST be set to 2953575118.

messageLength (4 bytes): An unsigned 32-bit integer that specifies the size, in bytes, of the MMS message field plus 16.

seal (4 bytes): A 32-bit field. It MUST be set to 0x20534D4D.

chunkCount (4 bytes): An unsigned 32-bit integer. It MUST be set to the total size of the TcpMessageHeader packet in multiples of 8 bytes.

seq (2 bytes): An unsigned 16-bit integer. The TcpMessageHeader packet sequence number. The value of this field MUST increment by 1 for each TcpMessageHeader packet that is sent. The first packet MUST have a seq value of 0x0000.

MBZ (2 bytes): A 16-bit field. It MUST be set to 0x0000.

timeSent (8 bytes): An unsigned 64-bit integer. The value of this field SHOULD be set to the elapsed time since the transmission of the first TcpMessageHeader packet (measured at the time the current TcpMessageHeader packet is sent), expressed in millisecond units. The value of this field MAY be chosen arbitrarily by the sender. Receivers SHOULD ignore this field.<3>

MMS message (variable): A variable-size array of bytes. The size of the field MUST be a multiple of 8 bytes. This field contains zero or more MMS messages, as specified in section 2.2.4.