개발자꿈나무

와이어샤크로 패킷 분석하기 본문

CS

와이어샤크로 패킷 분석하기

망재이 2024. 10. 12. 00:27

서론

컴퓨터 네트워킹 하향식 접근 책을 읽으면서 중간중간 실습문제들은 꼭 한번씩 공부를 하고 넘어가고자 한다. 그동안 시간이 없어서 우선순위를 뒤로 뒀던 해당 부분을 공부하고 정리해보려고 한다.

 

 

본론

 

와이어샤크 설치하기

 

와이어샤크는 쉽게 말해 패킷을 캡쳐하고 분석하는 오픈소스 프로그램이다. 

 

https://www.wireshark.org/#download

 

Wireshark · Go Deep

Wireshark: The world's most popular network protocol analyzer

www.wireshark.org

 

위 링크를 통해 각 운영체제에 맞는 설치파일을 설치해주면 된다.

프로그램을 설치해주면 아래와 같은 화면이 뜬다.

 

Wi-Fi: en0을 더블클릭하면 아마 에러가 뜰 것이다. (나는 그랬다) 이때는 터미널을 이용해서 chown 명령어를 이용해준다.

sudo chown 이름 /dev/bpf*

 

sudo 명령어를 이용해 소유자를 변경해주면 정상적으로 실행이 될 것이다. 

 

 

패킷 필터 적용하기

 

내가 원하는 주소만 캡쳐해서 패킷을 분석할 수 있는데 두 가지 방법을 이용해 분석할 수 있다.

 

먼저, 패킷 캡쳐 상태가 정지된 상태에서 미리 특정 패킷을 필터링 하는 방법이다.

두번째는 캡처를 진행하면서 내가 보고 싶은 패킷들만 보는 방법이다. 둘 중에 어느 방법을 사용해도 상관없다.

 

첫번째 방법은 BPF(Berkeley Packet Filter)라고 하는데, 아래와 같이 사용하면 된다.

정지 버튼을 누르면 톱니바퀴 같은 아이콘(caption option)이 활성화 되는데 누르면 아래와 같이 filter를 설정할 수 있다. 물론 이 창 말고 제일 처음 창에서 필터를 설정해도 된다.

 

두번째 방법은 filter bar를 이용하면 된다.

 

 

실습하기

 

나는 구글로 요청을 보내고 패킷 하나를 골라 실습을 진행했다.

구글 ip는 터미널에 아래 명령어를 입력하면 알 수 있다.

 

해당 ip를 filter bar에 입력해서 구글로 요청하고 응답받는 패킷만 캡쳐하도록 설정했다.

 

표시해둔 해당 패킷을 이용해 분석을 해보겠다.

 

1. 해당 프레임은 송신 프레임일까, 수신 프레임일까?

- 사실 Info 정보, Domain Name System만 봐도 예측은 할 수 있지만 현재 수신 ip 주소를 알고 있기 때문에 Source, Destination의 ip 주소를 보면 알 수 있다.  Source에 구글 ip 주소가 적혀있으므로 해당 패킷은 수신 프레임인 것을 알 수 있다.

 

2. 네트워크 계층 헤더의 출발지/목적지 IP 주소 확인하기

- 패킷을 눌렀을 때 왼쪽에 나오는 정보들을 보면 크게 Frame / Ethernet / Internet / User Datagram ... 이 명시되어 있는데 이는 OSI 계층항목이다.

Frame : 물리계층, Ethernet : 데이터링크계층, Internet : 네트워크계층, User Datagram : 전송계층

Internet Protocol Version 4항목을 찾아 확장해보면 Source Address, Destination Address가 나와있다.

 

3. 프레임 전체의 총 바이트 수 확인하기

- 제일 첫번째 항목인 Frame을 확장해보면 패킷의 전체 정보가 나타나있다. Frame (n) bytes on wire 부분을 찾으면 해당 프레임의 총 바이트 수를 알 수 있다. 해당 프레임은 153 바이트인 것을 알 수 있다.

 

4. 이더넷 헤더에서의 바이트 수는?

- 이더넷을 눌렀을 때 아래에 총 bytes 수를 확인하면 된다. 해당 패킷은 14 바이트이다.

 

5. IP, TCP 헤더의 총 바이트 수는?

- 위와 같이 확인해보면 쉽게 알 수 있다. 해당 패킷은 IP 20바이트, TCP 8바이트이다.

 

6. 애플리케이션 계층의 메시지 크기(총 바이트 수) 확인하기

- Content-length는 주로 HTTP와 같은 애플리케이션 계층 프로토에서 사용되는 개념이다. http에서 받아오는 패킷정보를 확인하기 위해 filter bar에 http를 입력해서 캡쳐해줬다. 한 가지 주의할 점은 대부분의 사이트들은 http를 사용하지 않고 https를 사용하기 때문에 http 패킷 정보를 받아오는게 쉽지 않다. 아래 응답 패킷을 보면 content-length가 나와있는 것을 볼 수 있다.

 

728x90

'CS' 카테고리의 다른 글

[컴퓨터 네트워킹 하향식접근] 1장 과제와 질문  (5) 2024.09.22
REST API  (0) 2023.08.03
데이터  (0) 2023.06.30
프로세스 동기화  (0) 2023.06.14
컴퓨터 시스템의 구조  (0) 2023.06.07