본문으로 바로가기

Packet sniffer develop #About packet

category 카테고리 없음 2018. 4. 16. 16:29

지난 포스팅 까지 우리는 패킷을 받아들이고 해당 데이터를 출력하는데에 성공했다. 그러나 데이터를 16진수로 출력해보고, 문자로 출력해봐도 무슨 뜻인지 알기가 쉽지 않았다. 이러한 데이터를 패킷 구조에 따라 나누면 각 영역의 의미를 알 수 있을 것이다.




이번 포스팅에서는 받아들인 패킷 데이터를 분석하기 위해 필요한 기초 지식과 실제 프로그래밍에서 따로 패킷 구조 분석 기능만 모아둘 헤더를 생성해볼 것이다.




OSI 7 Layer


패킷 데이터를 분석하기 위해서는 OSI 7계층 구조부터 이해해야 한다.


 계층

 계층명

 프로토콜

 7계층

 응용계층

 HTTP, FTP, SMTP, DNS, DHCP, TELNET, ...

 6계층

 표현계층

 SSL, TLS ...

 5계층

 세션계층

 NetBIOS, SAP, ...

 4계층

 전송계층

 TCP, UDP, ...

 3계층

 네트워크계층

 ARP, IP, ICMP, IGMP, ...

 2계층

 데이터 링크계층

 Ethernet, PPP, ...

 1계층

 물리계층

 RS-232, RS-485, ...


위와 같은 구조가 OSI 7계층이다. 데이터 전송시 응용계층에서 물리계층의 방향으로 데이터를 덧붙이게 되고, 데이터 수신시에는 반대로 물리계층부터 덧붙여진 데이터를 하나씩 풀어나간다. 즉, 우리는 받아들인 패킷을 낮은 계층부터 차례대로 해석해 나가면 되는 것이다. 







캡슐화(Encapsulation)


위에서 말한 데이터를 붙이고 푸는 과정이 패킷의 캡슐화와 관련된 내용이다. 패킷 전송시 Encapsulation을 진행하는데 이는 이전 계층에서 받은 패킷에 현재 계층에 대한 정보를 담은 헤더와 풋터를 붙이는 과정이다. 반대로 수신시 수행하는 Decapsulation의 경우는 캡슐화 되어있는 상태에서 해당 계층과 관련된 헤더와 풋터를 겉에서부터 제거한다.


 

응용계층

표현계층 

 

 데이터

세션계층 

 

 TCP헤더

 데이터

전송계층 

 

 IP헤더

 TCP헤더 

 데이터

네트워크계층 

 MAC주소

 IP헤더

 TCP헤더 

 데이터

데이터 링크계층 

 101001111010100010101

물리계층 


위와 같이 이해할 수 있다. 각 계층별로 처리하는 추가정보가 다르기 때문에 각 계층별로 순차적으로 풀어나가 데이터에 접근해야 한다. 각 정보마다 데이터의 크기가 다르기 때문에 계층별, 프로토콜 별로 나누어 구조를 살펴보고 특정 규칙에 맞게 low데이터를 분석해볼 것이다.






TCP/IP


TCP/IP (Transmission Control Protocol / Internet Protocol)란 TCP와 IP 관련 프로토콜을 한꺼번에 지칭하는 군을 말한다. 이는 특정 운영체제에 국한되지 않는 인터넷 기본 통신 프로토콜이다.






TCP/IP의 계층 구조


TCP/IP는 4계층 구조로 이루어져 있으며, OSI 계층모델과 비교하면 비교적 쉽게 이해할 수 있다.


 프로토콜 

 TCP/IP 

 OSI 7 Layer 

 TELNET, FTP, DHCP, ... 

 응용계층

 응용계층

 표현계층

 세션계층

 TCP, UDP, ... 

 전송계층

 전송계층

 ICMP, IGMP, IP, ARP, ... 

 네트워크, 아이피 계층

 네트워크계층

 

 데이터 링크계층

 데이터 링크계층

 

 물리계층

 물리계층






TCP/IP의 주요 프로토콜 관계도



위의 관계도를 통해 패킷 분석을 진행할 것이다.