Passa al contenuto principale

4. Messaggi di richiesta e risposta Heartbeat

I messaggi del protocollo Heartbeat consistono del loro tipo, di un payload arbitrario e di un riempimento (padding).

struct {
HeartbeatMessageType type;
uint16 payload_length;
opaque payload[HeartbeatMessage.payload_length];
opaque padding[padding_length];
} HeartbeatMessage;

La lunghezza totale di un HeartbeatMessage NON DEVE (MUST NOT) superare 2^14 o max_fragment_length quando negoziato come definito in [RFC6066].

type: Il tipo di messaggio, heartbeat_request o heartbeat_response.

payload_length: La lunghezza del payload.

payload: Il payload consiste di contenuto arbitrario.

padding: Il riempimento è contenuto casuale che DEVE (MUST) essere ignorato dal ricevitore. La lunghezza di un HeartbeatMessage è TLSPlaintext.length per TLS e DTLSPlaintext.length per DTLS. Inoltre, la lunghezza del campo type è di 1 byte e la lunghezza di payload_length è 2. Pertanto, la padding_length è TLSPlaintext.length - payload_length - 3 per TLS e DTLSPlaintext.length - payload_length - 3 per DTLS. La padding_length DEVE (MUST) essere almeno 16.

Il mittente di un HeartbeatMessage DEVE (MUST) utilizzare un riempimento casuale di almeno 16 byte. Il riempimento di un messaggio HeartbeatMessage ricevuto DEVE (MUST) essere ignorato.

Se la payload_length di un HeartbeatMessage ricevuto è troppo grande, il HeartbeatMessage ricevuto DEVE (MUST) essere scartato silenziosamente.

Quando viene ricevuto un messaggio HeartbeatRequest e l'invio di un HeartbeatResponse non è vietato come descritto altrove in questo documento, il ricevitore DEVE (MUST) inviare un corrispondente messaggio HeartbeatResponse contenente una copia esatta del payload del HeartbeatRequest ricevuto.

Se un messaggio HeartbeatResponse ricevuto non contiene il payload atteso, il messaggio DEVE (MUST) essere scartato silenziosamente. Se contiene il payload atteso, il timer di ritrasmissione DEVE (MUST) essere interrotto.