2016-11-09 5 views
0

나는 초의 양을 나타내는 pcap 패킷 헤더에서 처음 4 바이트를 추출합니다. 여기에 그들은 (나는 하스켈 사용하고 있습니다) 바이트 스트림에서 외관의 순서입니다 :PCAP 파일 구문 분석 - 왜이 패킷 헤더 타임 스탬프에 SOH 01이 포함되어 있습니까?

\192 (192) 
\166 (166) 
x  (120) 
SOH  (01) (Start of Header) 

나의 이해는 4 바이트는 32 비트 정수로 읽을 수 있다는 것입니다. 그러나, SOH의 존재는 저를 던지고 있습니다. 4 바이트를 하나의 정수로 해석하면 약 20 억 가지가됩니다. 약 45 년 전에 UNIX 시간이 1970 년에 시작 되었기 때문에 20 억 초 = 63 년 => 유효하지 않습니다.

패킷 헤더도 NUL (00)으로 끝납니다.

왜 4 바이트가 반전되는지, 아마도 스트림에서 바이트를 가져 오는 방법 (Get 함수 및 getInt32 사용)의 부작용이 있는지 잘 모르겠습니다. SOH가 먼저 오면 안됩니까?

+4

아마도 PCAP는 빅 엔디안 ("네트워크"주문) 또는 리틀 엔디안입니까? 라이브러리에'getInt32BE' 또는'LE'가 있는지 확인하십시오. – chi

+1

실제로 Haskell 파서를 작성하는 사람이 동기를 부여하는 형식의 유용한 블로그 워크 - http://www.kroosec.com/2012/10/a-look-at-pcap-file-format.html –

답변