[완료]소켓을 쓸때 ip.h, tcp.h에서 각 구조체의 인자에 대해서 질문있습니다.
글쓴이: uddum / 작성시간: 금, 2008/10/03 - 11:30오전
패킷스니퍼를 만들다가 도대체 소켓에서 어떻게 읽어오는것일까 궁금해서 tcp.h와 ip.h를 보게 되었습니다.
가보니 이러한 것들이 있더라구요.
__u16 doff:4,
res1:4,
cwr:1,
ece:1,
urg:1,
ack:1,
psh:1,
rst:1,
syn:1,
fin:1;
tcp.h의 tcphdr구조체의 일부분입니다. 찾아보니 __u16은 u_int16_t을 typedef한거고
u_int16_t은 unsigned short을 typedef한거더군요.
결국에 unsigned short형태라는건데 각인자명 뒤에 붙어있는 ':'이 콜론은 무엇인지요?
tcp헤더에서 위의 플래그들은 각자 1bit씩 만을 차지하고 있어서 비트수를 뜻하는거 같긴한데
나중에 값을 변경할때는 또
tcp헤더->rst = 1;
이런식으로 변경을 하더군요. 분명 unsigned short에서 1은 16비트를 뜻하는데도 말이지요.
신기한 맘에 int a:1;이런식으로 c파일을 작성해봤는데 에러가 나더군요.
도데체 이게 어찌된 영문인지요?
Forums:
전에 본적있는 것
전에 본적있는 것 같은데, 한번 비트필드 라는걸로 검색해보세요.
다음 페이지를 참고해도 도움이 될것 같습니다.
http://www.winapi.co.kr/clec/cpp1/13-4-1.htm
와우!!
감사합니다! 오늘 새로운걸 보게되네요 ^ㅡ^
댓글 달기