lipcap을 이용한 패킷 캡쳐중에서 단편화 계산을 어떻게 해야한
안녕하세요~~ libpcap을 이용하여 패킷을 캡쳐하는 간단한 프로그램을
만들려고 합니다.
그런데, 다른 분이 만든 간단한 패킷 캡쳐소스를 보는데, 이상한 부분이 있어서
글을 올립니다. 아래 단편화 계산부분이 있는데 단편화 계산을 어떻게 하는 것인지 아무리 봐도 모르겠습니다. &연산자와 >> 이 왜 필요한지 고수님들~~부탁드립니다.
iph->ip_v,
iph->ip_hl,
iph->ip_tos,
ntohs(iph->ip_len),
ntohs(iph->ip_id),
###########################
# 단편화 계산부분 (이부분이 모르겠음 #
###########################
(ntohs(iph->ip_off)&IP_RF) >> 15,
(ntohs(iph->ip_off)&IP_DF) >> 14,
(ntohs(iph->ip_off)&IP_MF) >> 14,
(ntohs(iph->ip_off)&0x1fff) * 8,
###########################
###########################
iph->ip_ttl,
iph->ip_p,
iph->ip_sum,
ntohs(tcph->source),
ntohs(tcph->dest),
ntohs(tcph->seq),
ntohs(tcph->ack_seq),
tcph->doff,
tcph->res1,
tcph->res2,
tcph->urg,
tcph->ack,
tcph->psh,
tcph->rst,
tcph->syn,
tcph->fin,
ntohs(tcph->window),
ntohs(tcph->check),
ntohs(tcph->urg_ptr)
기초를 튼튼히....:)
* 일단 IP 프래그먼트(fragment)를 이해 하고 계시다면, C언어도 공부하세요. 기초부분을 튼튼히......
매스크(mask)에 대한 이해가 필요하신것같습니다.
특정 비트가 세팅(1로)이 되어 있는지에 대해 검사하는 방법을 공부하세요.
예를 들어 다음과 같은 경우에 대해 처리하는 방법을 알아야 합니다.
답변이 아니라 문제가 되어버린 느낌이지만, 이문제를 푸시는게 더 나은 접근같습니다.
지금 IP단이라면 TCP단에서도 다시 이문제를 만나게 될것이고, 단순히 pcap
써보는게 아니라 응용을 기획한다면 아주 많이 부딪히게 되는 문제입니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기