Passa al contenuto principale

4. Ordine dei byte, allineamento e formato temporale

Tutti i campi interi sono trasmessi nell'ordine dei byte di rete, cioè il byte più significativo (ottetto) per primo. Questo ordine dei byte è comunemente noto come big-endian. L'ordine di trasmissione è descritto in dettaglio in [3]. Salvo diversa indicazione, le costanti numeriche sono in decimale (base 10).

Tutti i dati dell'intestazione 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 valore zero.

L'ora dell'orologio a muro (data e ora assolute) è rappresentata utilizzando il formato 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 in cui è appropriata una rappresentazione più compatta, vengono utilizzati solo i 32 bit centrali; cioè i 16 bit inferiori della parte intera e i 16 bit superiori della parte frazionaria. I 16 bit superiori della parte intera devono essere determinati indipendentemente.

Un'implementazione non è tenuta a eseguire il Network Time Protocol per utilizzare RTP. Possono essere utilizzate altre sorgenti temporali, o nessuna (vedere la descrizione del campo timestamp NTP nella sezione 6.4.1). Tuttavia, l'esecuzione di NTP può essere utile per sincronizzare i flussi trasmessi da host separati.

Il timestamp NTP tornerà a zero in un momento del 2036, ma per gli scopi di RTP vengono utilizzate solo le differenze tra coppie di timestamp NTP. Finché si può presumere che le coppie di timestamp siano entro 68 anni l'una dall'altra, l'uso dell'aritmetica modulare per sottrazioni e confronti rende irrilevante il riavvolgimento.