IP & TCP Headers

Byte Bit 0 4 8 12 16 20 24 28
   0 IP Version Hdrlen TOS Datagram (or fragment) length
   4 Identification r D M Fragment offset
   8 TTL Protocol Checksum
  12 Source
  16 Destination
  20 Source port Destination port
  24 Sequence number
  28 Acknowledgement number
  32 Hdrlen (reserved) U A P R S F Window size
  36 Checksum Urgent pointer

RMI Header (follows IP & TCP headers)

Byte Bit 0 4 8 12 16 20 24 28
  40 ? ?
  44 ? ?
  48 ? ?

RMI Message

Byte Bit 0 4 8 12 16 20 24 28
   52 Opcode Stream magic RMI version
   56 RMI version (cont.)
   57+ stream objects
   ... stream objects (continued)

Stream objects

(From java.io.ObjectStreamConstants)
Code	Length	Description
----	----	-----------------------------------------------------
0x70	1	Null
0x71	1	Reference
		4	handle
0x72	1	Classdesc, followed by:
	+var		Name (UTF string)
			2	Length in bytes
			--	String, not null-terminated
	8		suid (serialVersionUID) defines a set of classes
				all with the same name that have evolved from a
				common root class and agree to be serialized
				and deserialized using a common format.
	1		Flag byte:
				0x08 = BlockData
				0x04 = Class is externalizable
				0x02 = Class is serializable
				0x01 = Serializable, defines own writeObject()
	2		Number of fields		
	---		Field definitions
				Type code
					L = replace "." with "/"
					[ = array (component type?)
					all else = the primitive data type
				Name (UTF string)
0x73	?	Object, followed by:
			Null | Reference | ProxyClassdesc | Classdesc
			Data (serializable or externalizable)
0x74	*var	String
0x75	?	Array
0x76	?	Class
0x77	*var	Blockdata
0x78	?	Endblockdata
0x79	?	Reset
0x7a	+var	Blockdata-long
0x7b	+var	Exception
0x7c	+var	LongString
0x7d	?	ProxyClassdesc

	*var: byte following code defines length of variable field, thus
		0x770D means 13 bytes of blockdata.
	+var: short following code defines length of variable field
	?: I still have to figure it out!

DGC UID format: (in java.rmi.server.UID)

14 bytes long:

 0- 3:	int unique
 4-11:	long time
12-13:	short count

$Id: rmiheader.html 10 2004-02-21 00:58:02Z mnadler $