A temperature reading on a spacecraft has to become radio symbols, cross millions of kilometres, and turn back into a number on a screen. Several protocols do that job in sequence, each solving one problem and handing the result to the next.
This page is the map. Every protocol page links back here rather than re-explaining it.
The downlink, top to bottom
22.5 °C the reading
│
▼
┌──────────────────┐
│ Space Packet │ pkg/spp "this is from application 100"
└──────────────────┘
│ 1 to 65536 bytes, variable
▼
┌──────────────────┐
│ TM Frame │ pkg/tmdl "this is spacecraft 42, channel 0,
└──────────────────┘ frame number 137"
│ fixed length, chosen once per mission
▼
┌──────────────────┐
│ Reed-Solomon │ pkg/tmsc "here is enough parity to fix
│ + randomize │ 16 bad bytes" (radio; a
│ │ laser link uses pkg/ocsc)
└──────────────────┘
│
▼
┌──────────────────┐
│ ASM -> CADU │ pkg/tmsc "a frame starts HERE"
└──────────────────┘
│
▼
radio symbols the physical layer, not Astro's jobThe ground runs the same thing backwards.
What each layer is for
The packet layer answers whose data is this? A Space Packet carries an APID naming the application that produced it, and a counter so you can tell when one goes missing. Packets are whatever size the data is.
The data link layer answers how do I find one thing in a continuous stream? Frames are a fixed size, so a receiver always knows where the next one starts. Because packets and frames are different sizes, a packet can span several frames. The First Header Pointer in the frame header is how the receiver finds packet boundaries again after a loss.
The coding layer answers what about bit errors? There is no asking for a resend when the round trip is an hour. Reed-Solomon parity lets the receiver fix errors where they land. Randomization keeps the receiver's clock locked. The Attached Sync Marker is a known pattern that says a frame begins here.
Which protocol for which job
| Downlink | Uplink | |
|---|---|---|
| Packets | SPP, EPP | SPP, EPP |
| Frames | TM, AOS | TC |
| Both directions | USLP | USLP |
| Coding | TMSC, OCSC | TCSC |
| Reliability | - | COP-1 |
| Security | SDLS | SDLS |
TM or AOS? TM for a normal downlink. AOS when the data rate is high enough that TM's 8-bit frame counter wraps too fast to be useful, Earth observation, deep space. AOS also carries a raw bitstream or opaque blocks, which TM cannot. Guide: a high-rate downlink with AOS.
Why is the uplink different? Commands must arrive correctly and in order, because a wrong one can end the mission. TC frames are variable length so a ten-byte command costs ten bytes, and COP-1 sits on top to retransmit anything that goes missing. The downlink has no equivalent: it detects loss but cannot ask again.
That makes the two directions one system rather than two, because COP-1's acknowledgement travels back in the Operational Control Field of a telemetry frame. Guide: a full-duplex link.
Security is not optional in practice. A downlink is readable by anyone with a dish and an uplink is forgeable by anyone with a transmitter, so SDLS encrypts or authenticates the frame data field. Guide: encrypt and authenticate a link.
USLP does both directions with one frame format. It is the newer answer to running three stacks at once.
Above and beyond the link
Some protocols do not sit in that stack at all.
Between ground systems. SLE moves frames between a ground station and a control centre over the internet. It is the only protocol here that never touches a spacecraft. Guide: pull frames from a ground station.
Between spacecraft. Proximity-1 is the short-range link, a rover to an orbiter overhead, which then relays to Earth on a completely separate downlink. It has its own coding layer, PXSC, which wraps frames in PLTUs the way TMSC wraps them in CADUs.
Over a laser. OCSC is the coding layer for optical links. It replaces Reed-Solomon with SCPPM and works in bits rather than octets, because a codeblock's length is not a whole number of them.
Files and networking. CFDP moves files. LTP and BP do delay-tolerant networking for multi-hop paths. Guides: downlink a file and store and forward.
Inside the packet. PUS defines what a telemetry or telecommand packet's payload actually means, housekeeping reports, event notifications, command acknowledgements. Time codes are how timestamps are written. XTCE is the database that says which bytes are which parameter. Guides: PUS services, time correlation and a mission database.
Before transmission. LDC and RHC compress data losslessly, because downlink is the scarcest thing a mission has. Guide: compress before you downlink.
A worked path
Follow one housekeeping reading end to end:
- A thermistor reads 22.5 °C. PUS ST[03] says how that goes into a housekeeping report, and a time code stamps it.
- The report becomes the payload of a Space Packet on APID 100.
- The VCP service packs that packet into a TM frame on virtual channel 0, along with whatever else fits.
- TMSC adds Reed-Solomon parity, randomizes the bits, and prepends the sync marker. That is a CADU.
- The radio sends it. Some bits arrive wrong.
- The ground finds the sync marker, de-randomizes, and lets Reed-Solomon fix the errors.
- The frame's counters show whether anything was lost. The First Header Pointer finds the packet boundary.
- The packet's APID says it is housekeeping. XTCE says byte 4 is the temperature.
- Someone sees 22.5 °C.
The downlink guide builds steps 2 through 7 in real code. Step 1 is the PUS guide, step 8 is the mission database guide, and debug a real capture runs steps 6 to 8 backwards from a binary file.