Sto scrivendo un filtro di rete molto semplice e sto arrivando a dove voglio analizzare le intestazioni IPv6 per abbinare cose come i tipi ICMPv6, i numeri di porta TCP / UDP, ecc.
Quindi sto leggendo approfonditamente il formato del pacchetto IPv6 , e sono tipo ... beh ... ho dovuto leggerlo più e più volte per assicurarmi di averlo letto correttamente. Mi sembra che devi iniziare con l'intestazione fissa di 40 byte e guardare il suo prossimo campo di intestazione. Quindi devi guardare il campo di intestazione successivo dell'intestazione successiva e così via, come un elenco collegato, fino a raggiungere la fine. Se c'è un carico utile, seguirà.
Il problema è che non c'è alcun campo di lunghezza né nell'intestazione fissa né nelle intestazioni di estensione. Devi avere una tabella dei tipi di intestazione delle estensioni e delle loro dimensioni in modo da poter inseguire questo elenco collegato fino alla fine.
Questo mi colpisce come un disegno strano, forse persino da cervello di lepre. E se riscontro un tipo di intestazione di estensione non riconosciuto? Cosa faccio? Non ne conosco la lunghezza. Immagino di dover eliminare il pacchetto e bloccarlo, poiché in un filtro di rete consentire il passaggio del pacchetto consentirebbe a un utente malintenzionato di eludere il filtro di rete includendo un tipo di intestazione fasullo. Ma ciò significa che se il protocollo viene esteso, ogni singolo pezzo di software di analisi dell'intestazione IPv6 mai scritto deve essere aggiornato simultaneamente se si desidera utilizzare la nuova estensione.
Quindi come posso analizzare le intestazioni IPv6 se non conosco le estensioni che stanno utilizzando? Come posso saltare un'intestazione per un'estensione sconosciuta, poiché non ne conosco la lunghezza?