15. Validazione dei Messaggi
15. Validazione dei Messaggi (Message Validation)
I client e i server DOVREBBERO (SHOULD) scartare qualsiasi messaggio che contenga opzioni che non sono consentite per apparire nel messaggio ricevuto. Ad esempio, un'opzione IA non è consentita per apparire in un messaggio Information-request. I client e i server POSSONO (MAY) scegliere di estrarre informazioni da tale messaggio se le informazioni sono utili per il destinatario.
Un server DEVE (MUST) scartare qualsiasi messaggio Solicit, Confirm, Rebind o Information-request che riceve con un indirizzo di destinazione unicast.
La validazione dei messaggi basata sull'autenticazione DHCP è discussa nella sezione 21.4.2.
Se un server riceve un messaggio che contiene opzioni che non dovrebbe contenere (come un messaggio Information-request con un'opzione IA), manca di opzioni che dovrebbe contenere, o non è altrimenti valido, PUÒ (MAY) inviare un Reply (o Advertise se appropriato) con un'opzione Identificatore Server, un'opzione Identificatore Client se una era inclusa nel messaggio e un'opzione Codice di Stato con stato UnSpecFail.
15.1. Uso degli ID di Transazione (Use of Transaction IDs)
Il campo "transaction-id" contiene un valore utilizzato da client e server per sincronizzare le risposte del server ai messaggi del client. Un client DOVREBBE (SHOULD) generare un numero casuale che non può essere facilmente indovinato o previsto da utilizzare come ID di transazione per ogni nuovo messaggio che invia. Si noti che se un client genera identificatori di transazione facilmente prevedibili, potrebbe diventare più vulnerabile a certi tipi di attacchi da intrusi fuori percorso. Un client DEVE (MUST) lasciare l'ID di transazione invariato nelle ritrasmissioni di un messaggio.
15.2. Messaggio Solicit (Solicit Message)
I client DEVONO (MUST) scartare tutti i messaggi Solicit ricevuti.
I server DEVONO (MUST) scartare tutti i messaggi Solicit che non includono un'opzione Identificatore Client o che includono un'opzione Identificatore Server.
15.3. Messaggio Advertise (Advertise Message)
I client DEVONO (MUST) scartare qualsiasi messaggio Advertise ricevuto che soddisfa una delle seguenti condizioni:
- il messaggio non include un'opzione Identificatore Server.
- il messaggio non include un'opzione Identificatore Client.
- il contenuto dell'opzione Identificatore Client non corrisponde al DUID del client.
- il valore del campo "transaction-id" non corrisponde al valore che il client ha utilizzato nel suo messaggio Solicit.
I server e gli agenti relay DEVONO (MUST) scartare tutti i messaggi Advertise ricevuti.
15.4. Messaggio Request (Request Message)
I client DEVONO (MUST) scartare tutti i messaggi Request ricevuti.
I server DEVONO (MUST) scartare qualsiasi messaggio Request ricevuto che soddisfa una delle seguenti condizioni:
- il messaggio non include un'opzione Identificatore Server.
- il contenuto dell'opzione Identificatore Server non corrisponde al DUID del server.
- il messaggio non include un'opzione Identificatore Client.
15.5. Messaggio Confirm (Confirm Message)
I client DEVONO (MUST) scartare tutti i messaggi Confirm ricevuti.
I server DEVONO (MUST) scartare tutti i messaggi Confirm ricevuti che non includono un'opzione Identificatore Client o che includono un'opzione Identificatore Server.
15.6. Messaggio Renew (Renew Message)
I client DEVONO (MUST) scartare tutti i messaggi Renew ricevuti.
I server DEVONO (MUST) scartare qualsiasi messaggio Renew ricevuto che soddisfa una delle seguenti condizioni:
- il messaggio non include un'opzione Identificatore Server.
- il contenuto dell'opzione Identificatore Server non corrisponde all'identificatore del server.
- il messaggio non include un'opzione Identificatore Client.
15.7. Messaggio Rebind (Rebind Message)
I client DEVONO (MUST) scartare tutti i messaggi Rebind ricevuti.
I server DEVONO (MUST) scartare tutti i messaggi Rebind ricevuti che non includono un'opzione Identificatore Client o che includono un'opzione Identificatore Server.
15.8. Messaggi Decline (Decline Messages)
I client DEVONO (MUST) scartare tutti i messaggi Decline ricevuti.
I server DEVONO (MUST) scartare qualsiasi messaggio Decline ricevuto che soddisfa una delle seguenti condizioni:
- il messaggio non include un'opzione Identificatore Server.
- il contenuto dell'opzione Identificatore Server non corrisponde all'identificatore del server.
- il messaggio non include un'opzione Identificatore Client.
15.9. Messaggio Release (Release Message)
I client DEVONO (MUST) scartare tutti i messaggi Release ricevuti.
I server DEVONO (MUST) scartare qualsiasi messaggio Release ricevuto che soddisfa una delle seguenti condizioni:
- il messaggio non include un'opzione Identificatore Server.
- il contenuto dell'opzione Identificatore Server non corrisponde all'identificatore del server.
- il messaggio non include un'opzione Identificatore Client.
15.10. Messaggio Reply (Reply Message)
I client DEVONO (MUST) scartare qualsiasi messaggio Reply ricevuto che soddisfa una delle seguenti condizioni:
- il messaggio non include un'opzione Identificatore Server.
- il campo "transaction-id" nel messaggio non corrisponde al valore utilizzato nel messaggio originale.
Se il client ha incluso un'opzione Identificatore Client nel messaggio originale, il messaggio Reply DEVE (MUST) includere un'opzione Identificatore Client e il contenuto dell'opzione Identificatore Client DEVE (MUST) corrispondere al DUID del client; OPPURE, se il client non ha incluso un'opzione Identificatore Client nel messaggio originale, il messaggio Reply NON DEVE (MUST NOT) includere un'opzione Identificatore Client.
I server e gli agenti relay DEVONO (MUST) scartare tutti i messaggi Reply ricevuti.
15.11. Messaggio Reconfigure (Reconfigure Message)
I server e gli agenti relay DEVONO (MUST) scartare tutti i messaggi Reconfigure ricevuti.
I client DEVONO (MUST) scartare qualsiasi messaggio Reconfigure che soddisfa una delle seguenti condizioni:
- il messaggio non è stato inviato in unicast al client.
- il messaggio non include un'opzione Identificatore Server.
- il contenuto dell'opzione Identificatore Server non corrisponde al DUID del server.
- il messaggio non include un'opzione Identificatore Client che contiene il DUID del client.
- il messaggio non contiene un'opzione Messaggio Reconfigure e il msg-type deve essere un valore valido.
- il messaggio include opzioni IA e il msg-type nell'opzione Messaggio Reconfigure è INFORMATION-REQUEST.
- il messaggio non include l'autenticazione DHCP:
- il messaggio non contiene un'opzione di autenticazione.
- il messaggio non supera la validazione di autenticazione eseguita dal client.
15.12. Messaggio Information-request (Information-request Message)
I client DEVONO (MUST) scartare tutti i messaggi Information-request ricevuti.
I server DEVONO (MUST) scartare qualsiasi messaggio Information-request ricevuto che soddisfa una delle seguenti condizioni:
- Il messaggio include un'opzione Identificatore Server e il DUID nell'opzione non corrisponde al DUID del server.
- Il messaggio include un'opzione IA.
15.13. Messaggio Relay-forward (Relay-forward Message)
I client DEVONO (MUST) scartare tutti i messaggi Relay-forward ricevuti.
15.14. Messaggio Relay-reply (Relay-reply Message)
I client e i server DEVONO (MUST) scartare tutti i messaggi Relay-reply ricevuti.