Webserv 프로젝트를 하면서 웹서버에 대한 생각을 이어나가다가 아래의 의문점이 들었다.

‘웹서버란 게 클라이언트에서 오는 connect() 요청을 listen() - accept()하면 리턴되는 fd를 이용해 read/write를 하며 데이터를 보내게 되는데, 그럼 실제로 우리가 만든 웹서버는 HTTP 통신을 하게 될 때에는 규약에 맞게 메세지를 fd 에 write를 하면 되는 건가?’

’만약 그렇다면 실제로 HTTP 통신을 할 때에는 요청/응답의 메세지 내용은 어떻게 생겼을까?

생각이 거기까지 미치니 네트워크의 신호가 실제로 어떠한 지 볼 수 있는 툴이 필요했고, 수소문하다가 상어를 잡았다! 아기상어도 아니고 진짜상어도 아닌, 바로 네트워크 와이어에 사는 Wireshark 와 터미널에 사는 Termshark 다!

0. Wireshark? 이게 뭐야!?

상어는 상어인데 네트워크 연결망에 사는 상어이다. 물론 진짜 상어는 아니지만, 패킷 하나라도 생기면 바로바로 탐지할 수 있는 막강한 기능을 제공한다. 모의해킹이나 모니터링, 포렌식에서도 활동되는 등 패킷 분석 툴로는 가장 많이 쓰이는 툴 중 하나라고 할 수 있다.

1. 설치를 해보자!

설치는 간단하게 아래의 링크에서 진행할 수 있다. Wireshark는 Linux 환경 뿐만 아니라 Window와 MacOS 등 다양한 환경에서 지원한다.

[<https://www.wireshark.org/#download>](<https://www.wireshark.org/#download>)

Wireshark 를 설치하게 되면 다양한 툴이 같이 설치되게 되고, 이를 또 개별적으로 사용할 수 있다. 대표적으로는 지정된 조건에 만족하면서 네트워크 인터페이스를 거치는 패킷을 가로채서 조회할 수 있는 tcpdump , 텍스트파일을 패킷파일로 변환해주는 text2pcap , GUI 환경이 아닌 터미널에서 wireshark의 일부기능을 지원해주는 tshark 가 있다.

2. 실행을 해보자!

실행을 하면 아래와 같은 화면이 반겨줄 것이다.

Screen Shot 2022-04-08 at 5.02.11 PM.jpg

대표적으로 네 가지의 레이아웃을 볼 수 있다. 위에서부터 차례대로 보면...