본문 바로가기
Technical/Network

Wireshark를 이용한 protocol 구조 분석

by iblee 2024. 8. 30.

Wireshark는 네트워크 패킷을 분석하는 프로그램으로 LAN 케이블을 지나는 전기 신호를 데이터 형태로 패킷캡처 하여 사용자가 해당 패킷의 내용을 볼 수 있게 도와준다.

이는 네트워크의 흐름을 눈으로 확인할 수 있게 해줌으로써 protocol의 학습 뿐만 아니라  실제 현장에서도 많은 도움을 준다.

 

본문은 이러한 Wireshark를 사용하여 네트워크에서 기본이 되는 protocol(Frame, IP, TCP)의 구조를 파악하는 내용이다.

 

 

■ Frame

Frame은 Layer 2 장비에서 생성되는 전송 메커니즘으로 데이터를 담는 컨테이너 역할을 하며, 동일 네트워크 상의 정보를 전달할 출발 및 목적지 MAC 주소를 갖는다. Frame의 구조는 아래와 같다.

 

1) Frame 구조

IEEE 802.3 Ethernet Frame

- Preamble: Physical 계층에서 전송된 비트패턴으로 송신자와 수신자의 동기를 맞추는 데 사용
- SFD: 프레임의 시작을 알리는 비트패턴
- Destination Address: 프레임을 수신할 호스트의 주소(MAC 주소)
- Source Address: 프레임을 송신한 호스트의 주소(MAC 주소)
- Type: Data에 담겨있는 상위 계층의 프로토콜
- Data: 상위 계층으로부터 전달받은 데이터
- FCS: 수납된 데이터의 에러 검출을 위한 CRC

 
 
2) Wireshark로 보는 Frame 구조
 
www.innern.net 홈페이지에 접속에 대한 패킷 캡처

 

위와 같이 이더넷 프레임 헤더의 구성요소가 출력 되는 것을  확인할 수 있다.
Destination Address(MAC,6Byte), Source Address(MAC,6Byte), Type(2Byte) 이외의 이더넷 프레임 구성은 범위 밖에 필드가 더 존재한다.

 

 

■IPv4

IP주소란 통신을 위해 각각의 디바이스에 부여하는 고유한 조수를 의미한다. 이중 Layer 3 protocol인  IPv4주소는 32비트 길이의 식별자로 최대 12자리의 번호로 이루어져 있다. IPv4 Header의 구조는 아래와 같다.

 

1)IPv4 Header 구조

- Version: 패킷이 지원하는 IP 종류를 표시
- Header Length: Option 항목으로 인해 헤더의 길이는 가변적
- Type of Service: 패킷의 우선순위를 나타내는 값을 표시
- Total Packet Length: 패킷의 총 길이, 전체 패킷의 길이를 Byte 단위로 표시
- Identification: 단편화 된 데이터가 원래 어느 패킷에 있었는지를 숫자로 표시, 한 패킷에서 단편화 된 데이터는 해당 필드의 값이 같음
- Flag: 단편화가 일어났는지 확인하기 위한 값으로, 남은 데이터를 모두 받을 때까지 처리를 미룬 후 다 받은 후 재 조립
- Fragment Offset: 단편화가 일어났을 경우 해당 패킷은 몇 번째인지 나타내는 값을 표시
- Bit Time to Live: 패킷을 전달할 수 있는 횟수의 제한을 표시
- Protocol: 데이터 내용을 해석하는데 사용되는 상위 프로토콜을 표시
- Header Checksum: IPv4헤더의 무결성을 검증하는 값
- Source/Destination IP Address: 패킷의 출발지/목적지 IP 주소

 

2)Wireshark로 보는 IPv4 Header 의 구조

 

www.innern.net 홈페이지에 접속에 대한 패킷 캡처

위와 같이 이더넷 IPv4 Header의 구성요소가 출력 되는 것을  확인할 수 있다.

 

 

■TCP

TCP는 Layer 4에 속하는 protocol로 네트워크 망에 존재하는 서버와 클라이언트 간에 데이터를 순서대로 에러없이 신뢰성을 보장해주며 교환할 수 있게 해주는 역할을 한다. TCP Header의 구조는 아래와 같다.

 

1)TCP Header 구조

- Source Port: 패킷을 송신하는 시스템의 포트번호 표시
- Destination Port: 패킷을 수신할 시스템의 포트번호 표시
- Sequence Number: 세그먼트 데이터의 순서번호를 표시 
- Acknowledge Number: 상대방으로부터 수신한 데이터 바로 다음에 수신할 데이터의 순서번호를 표시
- Header Length: TCP헤더의 전체 길이를 byte단위로 표현
- Reserved: 미래를 위해 예약된 필드로 항상 0으로 설정
- URG, ACK, PSH, RST, SYN, FIN: TCP 세그먼트 전달과 관련되어 TCP 회선 및 데이터 관리 제어 기능을 하는 플래그
- Window Size: 송신 시스템에서 자신이 수용하는 한 버퍼의 크기를 byte단위로 표시
- Checksum: 데이터 전송 중 손실되지 않고 원본과 동일한지 검사
- Urgent Point: TCP 세그먼트에 포함된 긴급 데이터의 마지막 byte에 대한 일련번호, 해당 부분까지 긴급한 처리를 요함

 

2) Wireshark로 보는 TCP Header 의 구조

www.innern.net 홈페이지에 접속에 대한 패킷 캡처

 

위와 같이 이더넷 IPv4 Header의 구성요소가 출력 되는 것을  확인할 수 있다.

 

댓글