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 $