[혼자 공부하는 네트워크] Chapter 6 실습으로 복습하는 네트워크
와이어샤크
와이어샤크는 패킷 캡처 프로그램이다. 이 프로그램을 통해 실제 패킷의 모습을 관찰할 수 있다.
와이어 샤크는 다음 링크를 통해 다운로드할 수 있다.
https://www.wireshark.org/download.html
와이어 샤크를 실행한 모습
패킷 캡처
와이어 샤크를 실행하면 패킷을 관찰할 네트워크 인터페이스를 고를 수 있다.
패킷이 송수신되고 있다면, 우측에 차트가 그려진다.
원하는 네트워크 인터페이스를 클릭하면, 다음과 같이 표기된다.
웹 브라우저를 열고, 중단 버튼을 눌러 원하는 시점에 패킷을 캡처할 수 있다.
좌측 하단에 있는 공간에서 원하는 계층을 클릭하면 해당 계층의 데이터 관련 정보를 읽을 수 있다.
이때 와이어샤크에서 네트워크를 분석하기 쉽도록 추가로 제공해 주는 정보도 존재한다.
패킷 필터링
와이어샤크에서 제공하는 기능 중 하나로는 패킷 필터링이 있다. 필터를 입력하면, 캡처된 패킷 중에 필터 조건에 맞는 특정 패킷만 조회할 수 있다. HTTP나 TCP, UDP처럼 프토콜을 기준으로도 필터링하거나, MAC 주소 IP 주소 등을 기준으로도 필터링할 수 있다. 연산자를 통해서 좀 더 디테일한 필터링 또한 가능하다.
캡처 파일 저장과 열기
패킷 캡처 파일은 일반적으로 pcap 확장자 또는 pcapng 확장자로 저장된다.
이렇게 저장한 파일은 언제든지 열어서 조회할 수 있다.
와이어샤크를 통한 프로토콜 분석
와이어샤크를 통해 이론으로 배운 몇가지 현상들을 직접 확인할 수 있다.
IPv4 단편화
IP 단편화에 관여하는 필드는 식별자, 플래그, 단편화 오프셋이 있다.
- 식별자는 같은 패킷으로부터 단편화되었음을 알린다. 이는 Identification 값을 통해서 확인할 수 있다.
- 플래그는 아직 더 단편화된 패킷이 있는지, 마지막 패킷인지를 확인할 수 있다. 이는 more fragments 플래그가 설정되어 있는지 유무로 확인할 수 있다.
- 단편화 오프셋은 패킷이 초기 데이터로부터 얼마나 떨어져 있는지 확인할 수 있다. 이 값은 offset을 통해 확인할 수 있다.
ICMP
ICMP는 패킷의 Internet Control Message Protocol 항목을 통해 확인할 수 있다. 이는 패킷의 전송과정에 대한 피드백 메시지를 얻고자 하는 프로토콜이다.
Type과 Code를 통해서 원하는 정보를 얻을 수 있다.
IPv6 단편화
Internet Protocol Version6 항목을 통해 128 비트 크기의 송신지, 수신지 주소를 확인할 수 있다.
단편화가 이루어지지 않았다면 단편화 확장 헤더가 없다. 이 경우 Next Header 필드가 캡슐화한 프로토콜을 가리키고 있다.
단편화 확장 헤더는 Fragment Header for IPv6를 통해 확인할 수 있다. 단편화 확장 헤더는 캡슐화한 프로토콜을 가리키는 NextHeader, 값을 공유하는 식별자 Identification, 얼마나 떨어진 데이터를 담는지를 나타내는 Offset값이 명시되어 있다.
UDP
UDP 데이터그램을 확인해보려면 User Datagram Protocol 항목을 확인하면 된다. 이 경우 송신지 포트, 수신지 포트, UDP 데이터그램의 바이트 단위 길이가 명시되어 있다.
TCP
TCP의 연결 수립, 연결 종료, 재전송 과정을 모두 확인할 수 있다.
Source Port를 통해 송신지 포트 번호를 확인할 수 있고, Destination Port를 통해 수신지 포트 번호를 확인할 수 있다.
Sequence Number를 통해 순서 번호를 볼 수 있는데, 와이어샤크가 보기 편하도록 상대 번호를 적어놓았지만, (raw)가 적힌 필드를 통해 실제 순서 번호를 확인할 수 있다.
연결 수립
연결 수립은 쓰리 웨이 핸드 셰이크를 통해 진행된다. 이는 Flag값을 통해서 확인할 수 있다. 실제로 SYN 플래그가 설정된 패킷이 확인된 후에 SYN 플래그와 ACK 플래그가 동시에 설정된 패킷이 전달되는 것을 확인할 수 있다. 이후 ACK 플래그가 설정된 패킷이 보내짐으로 연결이 수립되었음을 확인할 수 있다.
연결 종료
연결종료는 FIN 플래그와 ACK 플래그를 통해서 확인할 수 있다.
FIN 플래그가 설정된 패킷을 요청하고 ACK 플래그가 설정된 패킷과 FIN 플래그가 설정된 패킷을 응답받은 뒤, ACK 플래그가 설정된 패킷을 요청함으로 연결 종료를 확인할 수 있다.
TCP 재전송
TCP는 신뢰성을 제공하고자, 재전송 기반의 오류 제어를 수행한다. 이는 상대방으로부터 응답 메시지가 오지 않을 때 다시 한번 보내는 것이다.
이는 패킷을 전송한 뒤에 특정 시간 내에 응답 메시지가 오지 않을 경우, 유실되었음을 가정하고 다시 메시지를 보낸다.
HTTP 분석
Expert Info를 통해 어떤 메서드를 사용했고, 어떤 URI에 보냈는지 등의 정보를 얻을 수 있다.
응답 메시지의 경우 응답 코드(Status Code)를 확인하여 요청이 성공했는지도 확인할 수 있다.
Content-Type으로 응답하는 본문의 타입을 확인할 수 있으며, 전송된 내용 또한 확인이 가능하다.