thumbnail
혼자 공부하는 네트워크 - 와이어샤크, 네트워크 안정성
Aug 18, 2024

혼공단 12기 6주차 학습 기록

와이어샤크(WireShark)

wireshark

와이어샤크는 네트워크에서 발생하는 패킷을 캡처하여 세부적으로 분석할 수 있도록 도와주는 네트워크 프로토콜 분석 프로그램이다.

설치 방법

맥에서는 homebrew로 간단하게 설치할 수 있다.

$ brew install --cask wireshark

패킷 캡처

wireshark main

와이어샤크의 메인 화면에서는 어떤 네트워크 인터페이스에서 송수신될 패킷을 관찰하고 싶은지 선택할 수 있다. 패킷이 송수신되고 있으면 해당 인터페이스 오른쪽에 차트가 그려지게 된다.

wi-fi를 통한 인터페이스를 클릭해서 들어가 보면,

wireshark packet capture

toolbar의 네모를 클릭하면 캡처가 중단된다. (상어 지느러미를 클릭하면 다시 캡처를 수행할 수 있다)

화면 상단에서 해당 인터페이스에서 송수신된 패킷들에 대한 정보를 확인할 수 있다. 임의의 패킷을 하나 클릭하면 좌측 하단에서는 캡슐화된 패킷의 상태를 확인할 수 있고 우측 하단에서는 패킷에 해당하는 실제 데이터를 확인할 수 있다.

패킷 필터링

캡처된 패킷 중에서 필터 조건에 맞는 패킷만 조회할 수도 있다.

packet filtering

상단 입력창에 와이어샤크 필터를 입력하면 해당 조건에 해당하는 패킷을 필터링한다. 자주 사용되는 필터는 아래와 같다.


eth

필터 설명 필터 설명
eth.addr 송수신지 MAC 주소 eth.len 길이
eth.dst 수신지 MAC 주소 eth.type 타입
eth.src 송신지 MAC 주소

ip

필터 설명 필터 설명
ip.addr 송수신지 IPv4 주소 ip.id 식별자
ip.dst 수신지 IPv4 주소 ip.len 총 길이
ip.src 송신지 IPv4 주소 ip.opt.mtu MTU
ip.flags 플래그 값들 ip.ttl TTL
ip.hdr_len 헤더 길이

udp

필터 설명 필터 설명
udp.port 송수신지 포트 번호 udp.srcport 송신지 포트 번호
udp.dstport 수신지 포트 번호 udp.length UDP 데이터그램 길이

tcp

필터 설명 필터 설명
tcp.port 송수신지 포트 번호 tcp.flags 플래그 값들
tcp.dstport 수신지 포트 번호 tcp.hdr_len 헤더 길이
tcp.srcport 송신지 포트 번호 tcp.len TCP 세그먼트 길이
tcp.seq 순서 번호 tcp.window_size_value 윈도우 크기
tcp.ask 확인 응답 번호 tcp.options.mss_val MSS 값

http

필터 설명 필터 설명
http.request HTTP 요청 http.accept Accept 헤더
http.request.method HTTP 요청 메서드 http.cache_control Cache-Control 헤더
http.request.uri HTTP 요청 URI http.content_type Content-Type 헤더
http.request.uri.query HTTP 요청 URI 쿼리 http.date Date 헤더
http.response HTTP 응답 http.host Host 헤더

연산자와 함께 필터를 사용하면 여러 조건을 조합하여 사용할 수 있다.

연산자 설명 연산자 설명
== 두 값이 같음 <= 지정 값보다 작거나 같음
!= 두 값이 다름 && AND 연산. 모든 조건을 만족
> 지정 값보다 큼 || OR 연산. 하나 이상의 조건을 만족
<br 지정 값보다 작음 ! NOT 연산. 조건을 만족하지 않음
>= 지정 값보다 크거나 같음

wireshark packet filters

네트워크 안정성

가용성(availability)

흔히들 ‘네트워크가 안정적이다’, ‘서버가 불안정하다’라는 말을 자주 사용하곤 한다. 여기서 네트워크가 안정적이라는 것은 어떤 기준으로 판단하는 것일까?


안정성의 정도는 가용성(availability)이라는 용어로 나타낸다. 가용성은 전체 사용 시간 중, 정상적인 사용 시간의 비율을 의미하며, 일반적으로 99.999% 이상이 되면 특정 시스템이 안정적이라고 평가한다.

availability

*uptime: 정상적인 사용 시간 / downtime: 정상적인 사용이 불가능한 시간


가용성을 높이기 위해서는 downtime을 낮추면 된다. 문제가 발생하지 않도록 하는 것은 현실적으로 어려운 과제이기 때문에 결함이 발생하더라도 감내할 수 있도록 서비스나 인프라를 설계하는 것이 중요하다.

이중화(redundancy)

가용성을 높이기 위해 동일한 기능을 두 개 이상 준비하는 이중화라는 방법을 사용할 수 있다. 이중화할 수 있는 대상은 서버, 네트워크 장비, 네트워크 경로, 스토리지 등 다양하다.


이중화를 구성하는 방식은 크게 두 가지로 나눌 수 있다.

redundancy

액티브-스탠바이(active-standby)

하나의 시스템이 액티브 상태로 운영 중인 동안, 다른 시스템은 스탠바이 상태로 대기하고 있는 방식이다. 액티브 시스템이 정상적으로 작동하는 동안에는 스탠바이 시스템은 활동하지 않다가 액티브 시스템에 장애가 발생하면 스탠바이 시스템이 역할을 대체한다.

설정과 관리가 비교적 간단하고, 스탠바이 시스템이 대기 상태에 있어 장애 발생 시 빠른 복구가 가능하다는 장점이 있다. 그러나 스탠바이 시스템이 대기 상태이므로 리소스가 비활성 상태로 낭비되거나 하나의 시스템을 사용할 때에 비해 큰 성능 변화를 불러오지는 않는다는 단점도 있다.


액티브-액티브(active-active)

두 시스템이 모두 액티브 상태로 운영되는 방식으로, 동시에 작업을 처리하며 부하를 분산시켜 성능을 최적화한다.

액티브-스탠바이와 달리 모든 시스템이 활동 상태에 있으므로 리소스를 최대한 활용할 수 있어 더 높은 성능과 가용성을 제공한다. 다만, 한 시스템에 장애가 발생하면 순간적으로 다른 시스템에 부하가 급증할 수 있어 추가적인 문제가 발생할 가능성도 무시할 수는 없다.


암호화와 복호화

안전한 통신을 위해서는 데이터를 암호화하는 과정이 필요하다. 민감한 정보를 송신할 때는 암호화해서 송신하고 수신 측에서 데이터를 복호화하여 정보를 열람하면 제3자가 중간에서 데이터를 가로채더라도 해당 데이터를 변조할 수 없다.

대칭 키 암호화(Symmetric Key Encryption)

symmetric key encryption

대칭 키 암호화 방식은 이름 그대로 암호화와 복호화에 사용되는 키가 동일한 방식이다. 처리 속도가 빨라 대량의 데이터를 암호화하는 데 효율적이지만, 이 방식에는 문제가 하나 있다. 송수신 측에서 동일한 키를 사용하기 때문에 해당 키가 유출되면 암호화된 데이터 역시 무용지물이 된다는 것이다.

공개 키 암호화(Public Key Encryption)

asymmetric key encryption

대칭 키 암호화 방식의 문제를 개선하기 위해 나온 것이 공개 키 암호화(비대칭키 암호화) 방식이다. 서로 다른 두 개의 키를 사용하여 암,복호화를 수행하는 것이다.

공개 키는 암호화에 사용되며, 이름처럼 누구에게나 공개해도 무방한 키이다. 복호화에 사용되는 개인 키는 소유자만 보관하면서 유출되지 않도록 유의해야 한다. 대칭 키 암호화 방식과는 달리, 두 개의 키를 사용하기 때문에 데이터를 더욱 안전하게 보호할 수 있다.


기본 미션

MISSION 1

1. 다음은 호스트 A와 B 간의 쓰리 웨이 핸드셰이크 과정에서 호스트 A가 호스트 B에게 전송한 첫 번째 SYN 세그먼트의 일부입니다. 쓰리 웨이 핸드셰이크상에서 호스트 B가 호스트 A에게 전송할 다음 세그먼트의 Acknowledgment number(raw)는 무엇일까요? (p.379)

mission 1

정답: 3588415413

Acknowledgment number(raw)는 다음으로 받기를 기대하는 순서 번호를 의미한다. 사진에서의 순서 번호(Sequence Number raw)는 3588415412이므로 Acknowledgment number(raw)는 3588415412+1=3588415413이다.

MISSION 2

2. 다음 그림은 두 호스트가 TLS 1.3 핸드셰이크를 수행하는 과정을 나타낸 그림 일부입니다. 괄호 안에 들어갈 TLS 관련 메시지로 알맞은 말을 골라 보세요. (p.407)

mission 2

(1) Application Data
(2) ARP Request
(3) ServerHello
(4) Finished

정답: (3) TLS 핸드셰이크에서는 ClientHello에 대해 ServerHello를 응답한다.


추가 미션

MISSION 1

Q. 와이어샤크에서 실제 TCP/UDP 패킷 확인해 보기


sub mission 1

tcp || udp 연산으로 TCP와 UDP 프로토콜을 사용하는 패킷만 확인할 수 있다.


References

[📚book] 혼자 공부하는 네트워크

Table Of Contents
nxnaxx blog © 2022-2024 Powered By Gatsby.