* TCP 헤더 공부 중에 궁금한 점이 있어서 구글링 한 것을 다시 한번 정리하기 위하여 작성!
SIS 공부하면 무조건 공부해야 하는 필수항목 중 하나가 있다.
바로 tcpdump!!! 이 툴 실습을 해보지 않으면 필기에서는 몇문제 정도 틀리고 실기에서는 실무형이나 서술형에서 크나큰 점수를 잃을 수 있기 때문에 SIS 시험을 공부하는 사람이라면 대부분 한번쯤은 다뤄보는 툴이다.
인터넷에 있는 tcpdump 명령어들을 보면 tcp[13] == 2 이러한 명령라인을 봤을 것이다.
난 SIS 시험이 끝났을 때도 이 의미를 모르고 있었다(실기시험에 문제가 안나와서 다행 ㅠㅠ)
하지만 이번에 port scanner 프로젝트를 혼자 진행하면서 TCP 헤더에 대해서 다시 공부하게 되었고, 위 명령어의 의미를 알게 되었다.
일단 저 명령어의 의미는 SYN flag를 뜻한다는 것을 밝혀두고 왜 그런지 한번 알아보도록 하겠다.
아래는 TCP 헤더의 추상적 그림이다.
TCP 헤더 그림을 보면 byte offset이 있다. tcp[13]에서 13이란 byte offset을 뜻하는 것이다.
첫번째 source port 영역은 0 ~ 3 offset 이고,
두번째 SequenceNumber 영역은 4 ~ 7 offset 이고,
세번째 Ack Number 영역은 8 ~ 11 offset 이고,
네번째가 12 ~ 15 offset으로 flag가 있는 영역이다.
12 ~ 15 offset 중 13 offset이 TCP flag에 해당하는 번호인 것이다.
tcp[13]을 다시 해석하자면 tcp offset 13번을 뜻하는 것이다.
이제 왜 2가 SYN flag인지 보면, 그림에도 나와있지만 번호가 2로 정해져있다.
이 번호들에 계산방식은 아래와 같다.
그림을 보면 flag들이 C E U A P R S F 순서로 되어 있는데 이 순서는 다음과 같다.
C E U A P R S F
7 6 5 4 3 2 1 0
여기서 SYN flag를 선택하면 00000010이 되어 16진수로 바꾸면 2가 되는 것이다.
만약 SYN/ACK flag를 원하면
00010010이 되어 16진수로 바꾸면 12가 되는 것이다.
결론적으로 tcp[13] == 2는 우리말로 풀어쓰면 아래와 같다.
"tcp헤더의 13 offset에서 SYN flag를 "
해당 그림에도 flag별 번호가 나와 있으니 참고하면 좋겠다.
시험때는 외워가는 것이 남는 것이기 때문에 외워두면 tcpdump 명령어를 보고 어떠한 패킷을 스니핑 하고 싶은지 금방 파악 할 수 있을 것이다.
SIS 공부하면 무조건 공부해야 하는 필수항목 중 하나가 있다.
바로 tcpdump!!! 이 툴 실습을 해보지 않으면 필기에서는 몇문제 정도 틀리고 실기에서는 실무형이나 서술형에서 크나큰 점수를 잃을 수 있기 때문에 SIS 시험을 공부하는 사람이라면 대부분 한번쯤은 다뤄보는 툴이다.
인터넷에 있는 tcpdump 명령어들을 보면 tcp[13] == 2 이러한 명령라인을 봤을 것이다.
난 SIS 시험이 끝났을 때도 이 의미를 모르고 있었다(실기시험에 문제가 안나와서 다행 ㅠㅠ)
하지만 이번에 port scanner 프로젝트를 혼자 진행하면서 TCP 헤더에 대해서 다시 공부하게 되었고, 위 명령어의 의미를 알게 되었다.
일단 저 명령어의 의미는 SYN flag를 뜻한다는 것을 밝혀두고 왜 그런지 한번 알아보도록 하겠다.
아래는 TCP 헤더의 추상적 그림이다.
TCP 헤더 그림을 보면 byte offset이 있다. tcp[13]에서 13이란 byte offset을 뜻하는 것이다.
첫번째 source port 영역은 0 ~ 3 offset 이고,
두번째 SequenceNumber 영역은 4 ~ 7 offset 이고,
세번째 Ack Number 영역은 8 ~ 11 offset 이고,
네번째가 12 ~ 15 offset으로 flag가 있는 영역이다.
12 ~ 15 offset 중 13 offset이 TCP flag에 해당하는 번호인 것이다.
tcp[13]을 다시 해석하자면 tcp offset 13번을 뜻하는 것이다.
이제 왜 2가 SYN flag인지 보면, 그림에도 나와있지만 번호가 2로 정해져있다.
이 번호들에 계산방식은 아래와 같다.
그림을 보면 flag들이 C E U A P R S F 순서로 되어 있는데 이 순서는 다음과 같다.
C E U A P R S F
7 6 5 4 3 2 1 0
여기서 SYN flag를 선택하면 00000010이 되어 16진수로 바꾸면 2가 되는 것이다.
만약 SYN/ACK flag를 원하면
00010010이 되어 16진수로 바꾸면 12가 되는 것이다.
결론적으로 tcp[13] == 2는 우리말로 풀어쓰면 아래와 같다.
"tcp헤더의 13 offset에서 SYN flag를 "
해당 그림에도 flag별 번호가 나와 있으니 참고하면 좋겠다.
시험때는 외워가는 것이 남는 것이기 때문에 외워두면 tcpdump 명령어를 보고 어떠한 패킷을 스니핑 하고 싶은지 금방 파악 할 수 있을 것이다.
'[+] Information > [-] Network' 카테고리의 다른 글
Naver 뉴스 동영상 주소 파악 프로그램 소스공개 (0) | 2011.07.22 |
---|---|
와이어샤크에서 파일 추출을 해보자! (2) | 2011.07.19 |
Winpcap을 처음 사용하다. (2) | 2009.12.25 |
UDP Foolder~ (8) | 2009.11.11 |