RFC 3550 - 4. Byte Order, Alignment, and Time Format
-
Ordine dei byte, allineamento e formato temporale (Byte Order, Alignment, and Time Format)
Tutti i campi interi sono trasportati in network byte order, cioè il byte (ottetto) più significativo per primo. Questo ordine dei byte è comunemente noto come big-endian. L'ordine di trasmissione è descritto in dettaglio in [3]. Se non diversamente indicato, le costanti numeriche sono in decimale (base 10).
Tutti i dati di header sono allineati alla loro lunghezza naturale, cioè i campi a 16 bit sono allineati su offset pari, i campi a 32 bit sono allineati su offset divisibili per quattro, ecc. Gli ottetti designati come padding hanno il valore zero.
Il tempo di wallclock (data e ora assolute) è rappresentato usando il formato di timestamp del Network Time Protocol (NTP), che è in secondi relativi alle 0h UTC del 1 gennaio 1900 [4]. Il timestamp NTP a piena risoluzione è un numero a virgola fissa senza segno a 64 bit con la parte intera nei primi 32 bit e la parte frazionaria negli ultimi 32 bit. In alcuni campi dove una rappresentazione più compatta è appropriata, sono usati solo i 32 bit centrali; cioè, i bassi 16 bit della parte intera e gli alti 16 bit della parte frazionaria. Gli alti 16 bit della parte intera devono essere determinati indipendentemente.
Un'implementazione non è richiesta di eseguire il Network Time Protocol per usare RTP. Possono essere usate altre sorgenti di tempo, o nessuna (vedere la descrizione del campo timestamp NTP nella Sezione 6.4.1). Tuttavia, eseguire NTP può essere utile per sincronizzare flussi trasmessi da host separati.
Il timestamp NTP andrà a zero in qualche momento nell'anno 2036, ma ai fini di RTP sono usate solo le differenze tra coppie di timestamp NTP. Purché le coppie di timestamp possano essere presumibilmente entro 68 anni l'una dall'altra, l'uso dell'aritmetica modulare per sottrazioni e confronti rende irrilevante il rollover.