winpcap man page에서 "pcap_pkthdr" 이란 구조체를 봤습니다.

 

확실하진 않지만 winpcap을 사용하면 LAN으로 들어오는 데이터들을 Packet 단위로 읽을 수 있는 것 같습니다.

 

이 때, 각 Packet은 "헤더 + 페이로드" 로 분류가 되고

 

"pcap_pkthdr" (packet capture - packet header) 는 그 이름처럼 헤더에 대한 정보를 받아옵니다.

 

이 구조체에는 아래처럼 딱 세가지 멤버가 있습니다.

 



struct timeval ts;
bpf_u_int32 caplen;
bpf_u_int32 len;

 

여기서 caplen과 len의 차이가 뭘까? 궁금해서 찾아봤습니다. 출처

 

결론만 말하자면 caplen은 captured length 실제 읽은 길이를 뜻하고

 

len은 이번에 capture한 packet의 length를 뜻하는 것 같습니다.

 

 

무슨 말인고... 영어는 잘못하지만 나름 해석을 해보니

 

packet을 받기전에 앞으로 받을 packet의 최대 길이를 설정할 수 있다는 것 같습니다.

 

 

예를 들면, pcap은 packet 단위로 데이터를 가져다 주는데 이번에 들어온 packet은 길이가 100입니다.

 

그런데 처음에 한 번에 읽을 최대 길이를 60으로 설정했다면

 

실제 읽은 데이터 길이 (caplen) 은 60이 되고 capture한 packet의 실제 길이 (len)은 100이 됩니다.

'개발 > c' 카테고리의 다른 글

[백준] 17822 원판 돌리기  (0) 2020.04.22
[백준] 3111 검열  (0) 2019.03.05
[백준] 4179 불!  (0) 2018.12.13
ffmpeg 라이브러리 사용법  (2) 2018.11.16
ffmpeg 이란?  (1) 2018.11.02

+ Recent posts