06. 와이어샤크를 이용한 프로토콜 분석
프로토콜 분석
ℹ️ 와이어샤크(wireshark) - 널리 사용되는 패킷 캡처 프로그램
ℹ️ 최신버전의 와이어샤크는 이곳에서 다운받을 수 있음

- IPv4 패킷의 헤더를 볼 수 있으며, 송·수신지 IP 주소와 플래그 등을 확인할 수 있음
- 송신지 주소는 10.0.0.1 이며, 수신지 주소는 10.0.0.2임
- 플래그의 2번째 비트는 0 이고 (단편화를 허용), 3번째 비트는 1임 (단편화된 패킷이 남아있음)
- 타입 필드는 8, 코드 필드는 0임 (해당 패킷은 ICMP 프로토콜을 사용함)
07-1. 안정성을 위한 기술
가용성
ℹ️ 안정성 - 특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특징
- 가용성(availability) - 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율
- 즉, 가용성은 전체 사용 시간 중(업타임+다운타임)에서 정상적인 사용 시간(업타임)의 비율
- 일반적으로 안정적이라고 평가받는 시스템은 99.999%(파이브 나인스) 이상을 목표로 함
- 결함 감내(fault tolerance) - 문제가 발생하더라도 기능할 수 있는 능력
- 가용성을 높이려면 다운타임을 낮추어야 하는데, 다운타임 원인을 원천적으로 차단하기는 어려움
- 즉, 문제가 발생하지 않도록 하는 것이 아닌, 문제가 발생하더라도 계속 기능할 수 있도록 설계함
이중화
ℹ️ 이중화/다중화는 단일 장애점(SPOF)을 최대한 없애는 것을 목표로 하여, 가용성을 높일 수 있음

- 이중화 - 컴퓨터 시스템을 이중으로 두는 기술
- 단일 장애점(Single Point Of Failure) - 문제가 발생할 경우, 시스템 전체가 중단될 수 있는 대상
- 이중화 구성 방식
- 액티브/스텐바이 - 한 사스템은 가동하고, 다른 시스템은 대기 상태로 두는 이중화 구성 방식
- 페일오버(failover) - 액티브 상태의 시스템에 문제가 생겨 스텐바이 시스템이 자동으로 가동
- 안전한 구성 방식이지만, 성능상에 이점이 없음
- 액티브/엑티브 - 두 시스템 모두 가동 상태로 두는 이중화 구성 방식
- 성능상에 이점은 있지만, 한 시스템에 문제가 발생 시 다른 시스템에 부하가 급증할 수 있음
- 티밍(teaming)/본딩(bonding) -> 이중화를 넘어, 다중화로 구성할 수도 있음
- NIC를 이중화/다중화하여 더욱 뛰어난 성능을 보유한 하나의 인터페이스로 보이게하는 기술
로드 밸런싱
1️⃣ 트래픽(traffic) - 주어진 시점에 특정 노드를 경유한 패킷의 양
2️⃣ 이중화/다중화 하였더라도, 특정 서버에 과도한 트래픽이 몰리면 여러 문제가 발생할 수 있음
- 로드 밸런싱(load balancing) - 트래픽을 고르게 분배하기 위한 기술
- 로드 밸런서에 의해 수행되며, 이는 L4스위치나 L7스위치 및 일반 호스트도 역할 수행이 가능함
- 로드 밸런서는 이중화/다중화된 서버와 클라이언트 사이에 위치함
- 클라이언트는 로드 밸런서에 요청을 보내고, 로드 밸런서는 해당 요청을 각 서버에 분배함
- 로드 밸런싱 알고리즘 - 부하가 균등하게 분산되도록 부하 대상을 선택하는 방법
- 라운드 로빈 알고리즘(round robin) - 서버를 돌아가며 부하를 전달하는 방법
- 최소 연결 알고리즘(least connection) - 연결이 적은 서버부터 우선적으로 부하를 전달하는 방법
- 각 알고리즘에 가중치 개념을 사용하여 가중치가 더 높은 서버에 더 많은 부하를 받도록 할 수도 있음
07-2. 안정성을 위한 기술
암호와 인증서
1️⃣ 암호화(encryption) - 원문 데이터를 알아볼 수 없는 형태로 변환하는 것
2️⃣ 복호화(decryption) - 암호화된 데이터를 원문 데이터로 변환하는 것 (되돌리는 것)
대칭 키 암호화 방식과 공개 키 암호화 방식
- 대칭 키 암호화(symmetric key cryptography) - 암호화와 복호화에 동일한 키를 사용하는 방식
- 동일한 키를 사용하므로, 키가 유출되면 보안상 큰 문제가 발생할 수 있음
- 비대칭 키 암호화(asymmetric; 공개 키 암호화) - 암호화와 복호화에 사용하는 키가 다른 방식
- 공개 키(public key)로 암호화하고, 개인 키(private key)로 복호화 함
- 하나의 키로 다른 키를 유추할 수 없음
- 세션 키(session key) - 공개 키로 대칭 키를 암호화하고, 개인 키로 대칭 키를 복호화한 키
인증서와 디지털 서명
- 공개 키 인증서(public key certificate) - 공개 키와 공개 키의 유효성을 입증하기 위한 전자 문서
- 인증 기관(CA; Certification Authorify)이라는 제3의 기관에서 발급함
- 클라이언트는 서명 값(signature)을 통해 인증서를 검증할 수 있음
- 서명 값은 인증서 내용에 대한 해시 값(지문)을 CA의 개인 키로 암호화하는 방식으로 만들어짐
- 디지털 서명 - 개인 키로 암호화된 메시지를 공개 키로 복호화함으로써 신원을 증명하는 절차
- 클라이언트에서는 서버로부터 서명 값이 붙은 인증서를 전달 받고, 서명 값과 인증서를 분리함
- 서명 값을 CA의 공개 키로 복호화 및 인증서에 대한 해시 값을 구하고, 이 둘을 비교함
HTTPS: SSL과 TLS
- SSL(Secure Socket Layer) / TLS(Transport Layer Security) - 인증과 암호화를 수행하는 프로토콜
- HTTPS(HTTP over TLS) - SSL/TLS를 사용하는 프로토콜이며, HTTP 메시지를 안전하게 전달함
- TLS 핸드셰이크 - 암호화 통신을 위해 키를 교환하고, 인증서 송수신과 검증이 이루어짐
- ClientHello - 암호화된 통신을 위해 서로 맞추어야 할 정보를 제시하는 메시지
- 지원되는 TLS 버전, 암호 스위트, 키를 만들기 위해 사용할 클라이언트 난수 등이 포함됨
- 암호 스위트(cipher suite) - 사용 가능한 암호화 방식 및 해시 함수
- ServerHello - 제시된 정보들을 선택하는 메시지
- 선택된 TLS 버전, 암호 스위트, 키를 만들기 위해 사용할 서버 난수 등이 포함됨
- Certificate / CerificateVerify - 각각 인증서와 검증을 위한 디지털 서명
- 클라이언트는 해당 값을 바탕으로 공개 키를 검증할 수 있음
07-3. 무선 네트워크
전파와 주파수
- 전파(radio wave) - 약 3kHz부터 3THz 사이의 진동수를 갖는 전자기파
- 우리 생활 곳곳에는 인공적으로 만들어진 전파도 있고, 자연적으로 만들어진 전파도 있음
- 여러 전파 신호를 구분하기 위해 통신에서 사용되는 전파에는 주파수 대역을 미리 정해놓음

와이파이와 802.11
- IEEE 802.11 - 오늘날 LAN 환경에서의 무선통신 규격
- 해당 표준에서는 대부분 2.4GHz 및 5GHz 대역을 사용함
- 뒤에 알파벳을 붙여 다양한 규격을 표현함
- 버전에 따라 전송 속도, 대역폭, 전송가능한 거리, 변조 방식이 달라짐
- 와이파이(Wi-Fi) - IEEE 802.11 표준을 따르는 무선 LAN 기술
- 실제로는 와이파이 얼라이언스라는 비영리 단체의 브랜드 이름임
- 와이파이의 각 세대는 각기 다른 IEEE 802.11 표준 구격을 준수함
- 채널(Channel) - 2.4GHz 및 5GHz 주파수 대역의 하위 주파수 대역
- 같은 대역을 사용하더라도 서로 신호를 간섭하지 않도록 하기 위함
AP와 서비스 셋
- AP(Access Point) - 무선 통신 기기들을 연결하여 무선 네트워크를 구성하는 장치
- 인프라스트럭처 모드 - AP를 경유하여 통신이 이루어지는 무선 네트워크 통신 방식
- 서비스 셋(Service Set) - 무선 네트워크를 이루는 AP와 여러 장치의 집합
- 서비스 셋 식별자(SSID; Identifier) - 무선 네트워크를 구분짓는 수단이자 고유한 이름
- AP는 비컨 프레임(beacon frame)이라는 브로드케스트 메시지로 불특정 다수에게 자신을 알림
- 비컨 프레임에는 SSID와 AP의 MAC 주소 등이 포함되어 있음
숙제
기본 숙제
- 다음은 호스트 A와 B 간의 쓰리 웨이 핸드셰이크 과정에서 호스트 A가 호스트 B에게 전송한 첫 번째 SYN 세그먼트의 일부입니다. 쓰리 웨이 핸드셰이크상에서 호스트 B가 호스트 A에게 전송할 다음 세그먼트의 Acknowledgement number(raw)는 무엇일까요?
- Acknowledgement number는 확인 응답 번호로, 즉 raw가 붙은 날 것이므로 Sequence number(raw) 에 1을 더한 3588415413임
- 다음 그림은 두 호스트가 TLS 1.3 핸드셰이크를 수행하는 과정을 나타낸 그림 일부입니다. 괄호 안에 들어갈 TLS 관련 메시지로 알맞은 말을 골라보세요.
- ServerHello - ClientHello를 통해 받은 정보(TLS 버전, 암호 스위트 등)를 선택함
회고
(라고 했지만 최종 회고에 적을게요)