(原諒我,如果我不能夠正確地提出問題,英語不是我的主要語言。)正確的方法來分析網絡數據包用C
我試圖解析對SyncE ESMC包。它是以太網慢速協議包。
方法1: 爲了解析這個數據包,我使用了類似於已經完成的操作的字節字節方法here。
方法2: 解析數據包的其他方法是定義一個「結構」來表示整個數據包並訪問各個字段以檢索特定偏移量的值。然而,在這種方法中,結構填充和對齊可能出現在圖片中(我不確定),但在Linux上,各種分組頭部以結構的形式定義,例如,在ip.h中iphdr。 IP數據包(緩衝區)可以輸入'iphdr'來檢索IP頭字段,所以它必須工作。
哪種方法更好地解析C中的網絡數據包?
在通過方法2解析數據包時,結構填充和對齊是否有所幫助?如果是的話,Linux頭文件如何克服這個問題?
所有編譯器都具有不填充結構或對齊成員字段的功能,並且您還可以使用位字段來縮短字節。 –
@JoachimPileborg - 哪種方法會更好,portabale和高效? – Abhirav
在編譯器,操作系統,硬件或其組合之間是否便攜?使用更少的內存或其他標準可以提高效率嗎?兩種方法都有優點,哪一種是「最好的」取決於你的目標。 –