(Scusatemi se non sono in grado di mettere correttamente alla domanda. Inglese nella non la mia lingua principale.)modo corretto di analizzare i pacchetti di rete in C
sto cercando di analizzare Synce ESMC pacchetto. È un pacchetto di protocollo lento Ethernet.
Approccio 1: Per analizzare questo pacchetto, ho utilizzato un approccio byte per byte simile a quello che è stato fatto here.
Approccio 2: Un altro modo per analizzare il pacchetto consiste nel definire una "struttura" per rappresentare l'intero pacchetto e accedere ai singoli campi per recuperare il valore in corrispondenza di uno specifico offset. Tuttavia in questo approccio struttura padding e allineamento possono entrare in immagine (che non sono sicuro) ma su Linux varie intestazioni di pacchetti sono definite in forma di struttura, ad es. iphdr in ip.h. I pacchetti IP (buffer) possono essere digitati su 'iphdr' per recuperare i campi dell'header ip, quindi deve funzionare.
Quale approccio è meglio analizzare un pacchetto di rete in C?
Il riempimento e l'allineamento della struttura fanno alcuna differenza durante l'analisi di un pacchetto tramite l'approccio 2? Se sì, in che modo le intestazioni Linux hanno superato questo problema?
Tutti i compilatori dispongono di funzionalità per non eseguire il rilievo delle strutture o allineare i campi dei membri e si possono anche utilizzare campi bit per campi più brevi e un byte. –
@JoachimPileborg - quale approccio sarebbe meglio, portabile ed efficiente? – Abhirav
Portatile tra compilatori, sistemi operativi, hardware o una combinazione di questi? Più efficiente come nel veloce, utilizzando meno memoria o altri criteri? Entrambi gli approcci hanno dei meriti, e quale dipende da "il migliore" dipende molto dai tuoi obiettivi. –