CU-SeeMe Header
Overview
The CU-SeeMe header is used by all packets sent and received by CU-SeeMe.
Packet Format
0 8 16 24 31
+--------------+--------------+--------------+--------------+
| Destination Family | Destination Port |
+--------------+--------------+--------------+--------------+
04h | Destination Address |
+--------------+--------------+--------------+--------------+
08h | Source Family | Source Port |
+--------------+--------------+--------------+--------------+
0Ch | Source Address |
+--------------+--------------+--------------+--------------+
10h | Sequence Number |
+--------------+--------------+--------------+--------------+
14h | Message | Data Type |
+--------------+--------------+--------------+--------------+
18h | Packet Length |
+--------------+--------------+
00h - Destination Family (2 bytes - unsigned integer)
Values:
0 - Forward to all who are requesting this Data Type. Sends audio and AuxData
to all participants.
1 - Forward only to the specified Destination Address. Used for private
audio and private AuxData.
2 - Examine contents and then decide how to forward.
[Distinction between 0 & 2 is not useful, but is probably coded into the
reflector. OPENCONTINUE packets may use a value of 2, and
all other packets use 0, except for private audio, aux data hole reports
and aux data retries, which use 1. Clients may not examine this field at
all.]
02h - Destination Port (2 bytes - unsigned integer)
Values: Conference ID for OPENCONTINUE packets. Destination UDP port for
all other packets (7648). Might not be examined by reflector or
client.
04h - Destination Address (4 bytes)
Value: IP address of destination client when Destination Family is 1, otherwise
equal to 0. Client rejects all packets that do not have Destination Address
equal to 0 or its own IP address.
08h - Source Family (2 bytes - unsigned integer)
Values:
0 - May not be currently used
1 - All packets originating at clients
2 - May be used for all packets generated by reflector (except
maybe not for surrogate OPENCONTINUE packets generated on behalf of nv,
vat, etc. clients)
0Ah - Source Port (2 bytes - unsigned integer)
Value: Port number. Not sure if ever examined by client or reflector.
0Ch - Source Address (4 bytes)
Value: IP address of machine. Used as a unique identifier for each client
in a conference.
10h - Sequence Number (4 bytes - unsigned integer)
Used only for OpenContinue packets and video packets. Incremented each time
an OpenContinue or video packet is transmitted. Indicates whether this packet
should be processed and whether packets have been lost. If the sequence
number is greater than the previously saved sequence number, process this
packet and save it's sequence number. This allows packets which arrive out
of order to ignored.
14h - Message (2 bytes - unsigned integer)
Values:
For OpenContinue packets, the valid values are:
1 - open a connection or keep a current connection alive
6 - close connection
For Control packets, the valid values are (I think):
0xffff - used by client to acknowledge an OpenContinue
packet while waiting for user to agree or
disagree to an externally initiated connection.
For video packets, the valid values are:
0 - more packets to come for this frame
20 - Frame end message - update image on screen
16h - Data Type (2 bytes - unsigned integer)
Values:
1 - small video (160x120)
2 - big video (320x240)
3 - audio
100 - used to acknowledge connectivity when there is nothing else to send
(reflector connection only)
101 - OpenContinue packet, used to advertise capabilities and desires
104 - display a text message and then disconnect (used by reflector to kick
clients off)
105 - display a text message (used to display a welcome message from reflector)
106 - exchanged among reflectors for reflector interoperation
107 - carry aux stream data when there is no video to piggy-back on
108 - obsolete; only appeared in some Mac alpha versions
109 - obsolete, only appeared in some Mac alpha versions
110 - used for data rate control
111 - used for data rate control
256 - aux data control messages
257 - aux data packets
18h - Packet Length (2 bytes - unsigned integer)
Length of entire packet. Used as corruption check.