Jpcap: длина заголовка IP-пакета

В JPCap я получаю длину заголовка IP-пакета с помощью следующего кода

   IPPacket IP_pac = (IPPacket) packet;
   System.out.println(IP_pac.len); // header length

я получаю длину данных IP-пакета

    System.out.println(IP_pac.data.length);

Теперь проблема заключается в том, что длина IP-пакета (IPV4) должна составлять 20 байт, когда длина данных IP-пакета равна 0. Но результаты отображают длину заголовка IP-пакета как 60 и 54. Во-вторых, я считаю эти длины IP_pac.data.length как байты по умолчанию?


person Xara    schedule 28.05.2012    source источник


Ответы (1)


Согласно API, длина является коротким:

public short length

packet.data дает вам byte[], поэтому вызов .length возвращает int (как и для всех других массивов).

person Thor    schedule 28.05.2012
comment
Так что я должен преобразовать его в байты из int? (чтобы сказать, что 20,30 и т. д. байт полезной нагрузки). - person Xara; 28.05.2012
comment
если вам нужна длина полезной нагрузки, packet.data.length подойдет. Вы также получаете эту информацию в Общая длина заголовка IP-пакета (а также Длина интернет-заголовка). См. en.wikipedia.org/wiki/IPv4 для получения дополнительной информации. - person Thor; 28.05.2012