혼공네트의 마지막 주차 공부 시간입니다.
도서관 반납을 위해 오늘도 달려보게씀니다ㅏㅏ
근데 바깥에 눈이 진짜 많이 오네요
입춘도 지났는데 지구야 이것 뭐예요...?
우리가 잘못했어,,, 미안해,,, ㅠㅠ
아무튼 마지막 6주 차에 할 공부는요
<목차>
Chapter 1. 컴퓨터 네트워크 시작하기
Chapter 2. 물리 계층과 데이터 링크 계층
Chapter 3. 네트워크 계층
Chapter 4. 전송 계층
Chapter 5. 응용 계층
Chapter 6. 실습으로 복습하는 네트워크
Chapter 7. 네트워크 심화
네트워크 패킷을 직접 보면서 지금까지 배운 내용을 복습하고(챕터 6),
네트워크의 중요 요소 중 하나인 안정성을 알아보는(챕터 7) 시간을 가진대요
혼공단 마지막 숙제는요
와이어샤크란 프로그램을 이용해 실제 TCP/UDP 패킷을 확인하기입니다

지난 내용 복습하기
어제 또 많은 걸 공부했으니 천천히 복습부터 시작
너무 몰아서 공부해서 과부하 오는 거 아닌가 몰라 ^^;;
계층명 | 지난 핵심 | 다 합쳐서 복습하기 |
응용 | DNS (계층적, 레코드, 재귀/반복적 질의), HTTP 특징, 캐시, 쿠키 |
- OSI 참조 모델 최상단에 있는 계층 - 사용자 및 사용자들이 이용하는 응용 프로그램과 가장 밀접한 계층 (DNS) 호스트 IP 주소와 대응되는 문자열 형태의 호스트 특정 정보인 도메인 네임을 관리하기 위한 체계 - 도메인 네임과 마찬가지로 계층적이며, 루트 > TLD(최상위) > 책임 > 로컬 네임 서버 순 - 도메인 네임으로 IP를 알아내는 과정을 리졸빙이라 하고, 재귀적 질의와 반복적 질의 방식이 있음 >> 재귀적 질의 : 로컬 네임 서버는 루트 네임 서버에게 1번만 물어보고, 루트 네임 서버부터 책임 네임 서버까지 순차적으로 내려가며 질의를 반복하고 응답 결과를 역순으로 전달받는 방식 >> 반복적 질의 : 로컬 네임 서버가 루트~책임 네임 서버까지 직접 질의해서 응답 결과를 얻는 방식 - 네임 서버는 DNS 레코드 정보를 저장하고 관리함. 레코드 타입에는 A, AAAA, CNAME, NS, MX 등 (HTTP) 요청-응답 기반 + 미디어 독립적 + 스테이트리스 + 지속 연결형 응용 계층 프로토콜 - HTTP 메세지 구조는 시작 라인, 필드라인, 메시지 본문으로 구성 - HTTP 메서드에는 GET, POST, HEAD, PUT, PATCH, DELETE 등 - HTTP 상태 코드는 요청에 대한 결과를 나타내는 세자리 정수로, 백의 자리를 기준으로 유형 구분 >> 200 OK, 201 Created, 301 Moved Permanently, 308 Permanent Redirect, 400 Bad Request, 403 Forbidden, 404 Not Found, 500 Internal Server Error, 502 Bad Gateway, 503 Service unavailable (인증 Authentication) 자신이 누구인지 증명하는 것. 주체 신원 검증을 위한 사용 증명 활동 LIKE 암호 (인가=권한 부여 Authorization) 인증된 주체에게 작업을 허용하는 것 LIKE 접근제어목록, 보안등급 (캐시 Cache) 불필요한 대역폭 낭비와 응답 지연 방지를 위해 정보 사본을 임시로 저장하는 기술 또는 저장된 데이터 자체. 유효기간을 설정하고, 유효기간 만료시 캐시의 신선도를 재검사함 (쿠키 Cookie) 서버에서 생성되어 클라이언트측에 저장되는 데이터로 스테이트리스 프로토콜인 HTTP의 특성을 보완, 두 개의 요청이 같은 클라이언트에서 온 것인지 확인하는 세션 인증 등에 활용 |
전송 | 연결/신뢰형 통신 프로토콜 TCP (연결 수립 및 종료 방식인 핸드셰이크 +오류/흐름/혼잡 제어) 비연결/비신뢰형 통신 프로토콜 UDP (속도 빠른 실시간성 서비스) |
- 연결형 통신, 신뢰성 있고 안전성 있는 통신을 해야 할 때 필요한 계층 - OSI 7계층 중 하위 3계층과 상위 3계층간 인터페이스 담당 - 재전송을 통한 오류 제어, 흐름 제어 혼잡 제어 수행 - 전송 단위는 세그먼트 - 장비는 게이트웨이 - 관련 프로토콜로는 TCP, UDP (포트) 특정 애플리케이션까지 패킷을 전달하기 위해 사용하는 식별정보 - 16비트(2바이트)로 표현하며, 번호 범위에 따라 잘 알려진 포트(0~1023), 등록된 포트(1024~49151), 동적 포트(49152~65535)로 구분함 - 전송 계층에서는 패킷 내 송/수신지 포트 번호를 통해 송/수신지 호스트의 애플리케이션을 식별함 - NAPT는 포트를 활용해 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유할 수 있도록 하여, 공인 IP 주소 수 부족 문제를 개선하는 NAT 기술 (TCP) 신뢰성, 연결지향적, TCP 상태 사용. 오류/흐름/혼잡 제어 - 가상회선 방식으로, 패킷 전송 순서를 보장하고 수신 여부도 확인함 >> TCP 연결 수립은 3 웨이 핸드셰이크, 연결 종료는 4 웨이 핸드셰이크를 사용함 - 데이터 신뢰성이 높은 대신 속도가 느림 - (오류 제어) 데이터 오류/유실 발생시 재전송을 통해 신뢰성을 보장하려는 방식 중복된 ACK 수신 혹은 타임아웃 발생시 재전송을 하는데, Stop-and-Wait, Go-Back-N, Selective Repeat ARQ가 가장 대표적인 방식 - (흐름 제어) 데이터 송수신측간 데이터 처리 속도 차이로 인한 데이터 손실을 방지하려는 방식으로, 수신측이 주체. 파이프라이닝과 슬라이딩 윈도우 활용 - (혼잡 제어) 데이터 송신 측의 전달 속도와 네트워크의 속도 차이로 인한 데이터 손실을 방지하려는 목적. 송신 측이 주체. 혼잡 윈도우를 통해 네트워크 혼잡도를 판단, 혼잡한 정도에 따라 전송량을 유동적으로 조절하는 방식 대표적인 혼잡 제어 알고리즘으로 AIMD, 느린 시작, 혼잡 회피, 빠른 회복 등이 있으며, 네트워크 상황에 따라 각 방식을 함께 이어서 사용 (UDP) 비신뢰성, 비연결성, 스테이트리스 프로토콜 - 데이터그램 패킷 교환 방식으로, 패킷 순서 보장이나 수신 여부 확인을 하지 않음 - 데이터 신뢰성이 낮은 대신 속도가 빨라 실시간 서비스에 적합 |
네트워크 | 인터넷 프로토콜 IP IP 주소(IPv4, IPv6) ARP(IP to MAC) 네트워크 클래스 NAT(공인/사설IP) DHCP(IP 동적할당) 라우팅 프로토콜 (내부 RIP&OSPF, 외부 BGP) |
- 메시지를 다른 네트워크에 속한 수신지까지 전달하는 계층 = 네트워크 간 통신 계층 - IP는 데이터그램 기반 비신뢰성, 비연결성 서비스로, IP 단편화(패킷의 분해 및 조립), IP 주소 지정, 경로 선택 기능을 가짐 - 개방 시스템 들 간 네트워크 연결 설정/유지/관리 기능, 데이터의 교환/중계 기능, 경로 제어, 패킷 교환, 트래픽 제어 등의 기능을 수행함 - 전송 단위는 패킷 - 장비로는 라우터 - 관련 프로토콜로는 IP, ICMP, IGMP, ARP, RARP 등 - IPv4는 4바이트(32비트)+10진수 표현, 클래스 단위로 비순차적으로 할당함. 보안 기능이 없으며, 패킷 크기에 제한(64바이트)이 있음. 유니캐스트/브로드캐스트/멀티캐스트 방식을 사용함 - IPv6는 16바이트(128비트)+16진수 표현, 네트워크/단말 순서로 순차적으로 할당함. 확장 헤더를 사용해 인증/보안 기능을 포함하며, 패킷 크기에 제한이 없음. 유니캐스트/멀티캐스트/애니캐스트 방식을 사용함 - 하나의 IP 주소는 네트워크 주소와 호스트 주소로 구성된 - (클래스 풀 주소 체계) 네트워크 크기에 따라 IP 주소를 분류하는 걸 클래스라 함. 클래스는 A~E까지 5개 존재. 클래스 풀 주소는 네트워크 크기가 고정이라는 한계가 존재함 - (클래스리스 주소 체계) 네트워크 주소는 1로, 호스트 주소는 0으로 표기하여 임의로 나누는 방식을 서브넷 마스크라 함. IP 주소와 서브넷 마스크를 비트 AND 연산하면 네트워크 주소가 나온다. 서브넷 마스크는 10진수로 표기하거나, IP 주소/서브넷 마스크 상 1의 개수 형식으로 표현하는 CIDR 표기법을 사용함 - ARP 프로토콜은 "동일 네트워크 내에서" IP 주소를 통해 MAC 주소를 알아내는 과정. ARP 요청(브로드캐스트) > ARP 응답(유니캐스트) > ARP 테이블 갱신 순으로 동작한다. - NAT는 공인 IP와 사설 IP를 상호 변환해주는 기술 - DHCP는 네트워크 안의 호스트들에게 IP와 DNS 서버, 서브넷 마스크 주소를 동적으로 할당하는 프로토콜. DHCP 할당은 DISCOVER, OFFER, REQUEST, ACK 4단계로 구성됨(모두 브로드캐스트). - 라우팅 프로토콜은 라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾고자 사용. AS 내부에서 수행되면 IGP로 RIP와 OSPF가 있고, 외부에서 수행되면 EGP로 BGP가 있음 - IGP는 거리 벡터를 사용하는 RIP와 링크 상태를 사용하는 OSPF/IS-IS로 나뉨 |
데이터 링크 | NIC 스위치 (전이중 통신+VLAN) |
- 네트워크 내 주변장치 간 정보를 올바르게 주고받기 위한 계층 - MAC 주소 체계를 통해 네트워크 내 송수신지를 특정 - 물리적으로 연결된 인접한 개방 시스템들 간 신뢰/효율적 정보 전송을 위해 시스템 간 연결 설정과 유지 및 종료 담당 - 오류 검출 및 회복을 위한 오류 제어, 송수신측 속도 차이 해결을 위한 흐름 제어, 프레임 순서적 전송을 위한 순서 제어 기능을 가짐 - 전송 단위인 프레임에 물리적 주소를 부여함 - 장비로는 랜카드, 브리지, 스위치 등 - 관련 프로토콜로는 HDLC, LAPB, LLC, MAC, LAPD, PPP, 이더넷 등 - 스위치는 전이중 통신을 한다. MAC 주소 학습과 테이블을 이용해, 특정 MAC 주소를 가진 호스트에만 프레임을 전달할 수 있다. MAC 주소 학습은 플러딩, 포워딩과 필터링, 에이징을 통해 이루어진다. - 스위치는 또한 가상의 LAN을 만드는 VLAN 기능을 지원한다. |
물리 | 트위스티드 페어 케이블 광섬유 케이블 허브(반이중 통신+CSMA/CD) |
- OSI 모델 최하단 계층 - 0과 1로 표현되는 비트 신호를 주고 받음 (전송단위가 Bit) - 통신 케이블로 데이터를 전송하는 물리적 장비에 필요한 기계/전기/기능/절차적 특성에 대한 규칙을 정의 - 장비로는 통신 케이블, 리피터, 허브 등 - 관련 프로토콜로는 RS-232C, X.21 등 - 허브는 반이중 통신을 해서 무전기처럼 송수신을 번갈아 가면서 한다. 다른 호스트가 기다리지 않고 신호를 보낼시 충돌 위험이 있는데 이를 방지하는 프로토콜이 CSMA/CD이다. Carrier Sense(캐리어를 감지하고) Multiple Access(다중 접근시에) Collision Detection(충돌을 검출)한다. |
그럼 본격적으로 마지막 공부 시작해 볼게요
와이어샤크 활용 패킷 관찰
패킷 캡처 프로그램은 네트워크에서 송수신되는 패킷을 모니터링하고 분석할 수 있는 프로그램으로, 대표적으로 와이어샤크(Wireshark)라는 프로그램이 있다. 와이어샤크는 패킷 캡처, 패킷 필터링과 같이 패킷 내용을 분석하는데 필요한 기능을 제공한다 (다운로드는 여기서)


화면 보니 예전에 보안 회사에서 인턴 하던 거 갑자기 생각난다...
거기서 악성코드 분석부터 시작해서 웹 해킹 이런 거 조금 맛봤는데
악성코드 분석은 2진수 보면서 패턴 찾기 보고 바로 나의 길이 아니다 했다죠
내 동기는 재밌다고 맨날 보던데... 그게 억덕케 재밌는 건데... 신기...
아무튼 와이어 샤크는 직접 써보면 되는 거라 프로그램 소개만 하고 넘어갑니다
어떤 패킷을 봐야 할지 모르겠다면 저자 깃헙에 제공되는 학습용 예시 파일을 활용하세요.
안정성을 위한 기술 : 가용성, 이중화/다중화, 로드 밸런싱
# 가용성 availability
안전성은 특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성을 말한다. 웹 서버가 안정적이라면 언제든 응답 메시지를 제공할 수 있다. 안정성을 수치화하여, 안정성의 정도를 나타내는 용어가 가용성이다. 가용성이란 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율을 의미한다. 수식으로 나타내면 가용성 = 업타임 / (업타임+다운타임)이라고 표현한다. 이 값이 크면 전체 사용 시간 중 대부분이 사용가능하다는 의미로, 가용성이 높다고 표현한다. 가용성이 높은 성질은 고가용성(HA, High Availability)로 표현하기도 한다.

가용성을 높이려면 다운타임을 낮추어야 한다. 다운타임은 과도한 트래픽, 예기치 못한 소프트웨어상 오류, 하드웨어 장애, 혹은 보안 공격이나 자연재해 등 다양한 원인으로 발생한다. 현실적으로 문제 발생의 모든 원인을 찾아내 차단하기는 어렵기에, 대신 문제가 발생하더라도 계속 동작할 수 있도록 설계하는 전략을 취한다. 문제가 발생하더라도 계속 기능할 수 있는 능력을 결함 감내 fault tolerance라 한다.
# 이중화와 다중화
결함을 감내하여 가용성을 높이기 위한 가장 기본 방법은 이중화이다. 무언가를 이중으로 두어 예비(백업)을 마련하는 방법이다. 이중화할 수 있는 대상은 '문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상'인 단일 장애점(SPOF, Single Point of Failure)으로, 서버부터 라우터, 데이터베이스까지 거의 무엇이든 될 수 있다.
이중화 구성에는 크게 액티브/스탠바이 active-standby(passive)와 액티브/액티브 active-active가 있다. 액티브는 가동 상태를 의미하며, 스탠바이는 액티브의 백업으로 대기하는 상태를 의미한다. 참고로 액티브 시스템에 문제가 생겼을 때 예비 스탠바이로 자동 전환되는 기능을 페일오버 failover 라 한다.
액티브/스탠바이 active-standby | 액티브/액티브 active-active |
한 시스템만 가동하고, 다른 시스템은 스탠바이(백업 용도로 대기) 안전한 구성이나 성능상 이점은 없음 |
두 시스템 모두 가동 상태로 두는 구성 방식 부하 분산 및 성능상 이점이 있으나, 한 시스템 문제 발생시 다른 시스템에 부하 발생 가능성 높아짐 |
[스탠바이 종류 3가지] 1) 핫(Hot) : 스탠바이 가동 후 즉시 이용 가능 2) 웜(Warm) : 스탠바이 가동 후 이용까지 약간의 준비가 필요한 구성 3) 콜드(Cold) : 스탠바이를 정지시켜 두는 구성 |
|
![]() |
![]() |
출처 : 티스토리 블로그 akku-dev님
만약 장비를 2개가 아니라 3개 이상으로 두어 관리하면 더욱 안정적인데, 이를 다중화라고 한다. 이중화/다중화 사례로 티밍 teaming과 본딩 bonding이 있다. 전자는 윈도우, 후자는 리눅스에서 주로 사용하는 용어인데, 여러 개의 네트워크 인터페이스 NIC를 이중화/다중화하여 마치 더 뛰어나고 안정적인 성능을 보유한 하나의 인터페이스처럼 보이게 하는 기술이다.
# 로드 밸런싱 load balancing
서버 다중화만으로 가용성 문제가 모두 해결되지는 않는다. 서버의 가용성에 큰 영향을 끼치는 요소인 트래픽도 고려해야 한다. 서버에 과도한 트래픽이 몰리면 다양한 문제가 발생할 수 있기 때문이다. 그래서 트래픽의 고른 분배를 위해 로드 밸런싱 기술을 사용한다. 부하를 의미하는 로드 load와 균형 유지를 나타내는 밸런싱 balancing이 합쳐진 단어이다. 로드 밸런싱은 로드 밸런서에 의해 수행된다. 로드 밸런서는 L4/L7 스위치와 같이 네트워크 장비일 수도 있고, HAProxy, Envoy 또는 Nginx와 같이 소프트웨어일 수도 있다.

# HTTP의 중간 서버, 프록시와 게이트웨이
클라이언트와 서버 사이에는 수없이 많은 서버들이 존재한다. 그래서 클라이언트가 최종적으로 메시지를 주고받는 대상을 오리진 서버라고 하기도 한다. 클라이언트와 오리진 서버 사이에 놓인 수많은 중간 서버들을 프록시와 게이트웨이라 한다.
프록시 proxy는 클라이언트가 선택한 메시지 전달 대리자로 포워드 프록시라 하기도 한다. 프록시는 주로 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능을 제공하며, 일반적으로 클라이언트와 더 가까이에 위치해 있다.

게이트웨이 gateway는 일반적으로 네트워크 간 통신을 가능하게 하는 입구 역할을 하는 소프트웨어 또는 하드웨어라는 의미를 가진다. 하지만 HTTP 중간 서버라는 맥락에서는 아웃바운드 연결에 대해 오리진 서버 역할을 하지만, 수신된 요청을 변환하여 다른 인바운드 서버들로 전달하는 중개자 역할을 한다. 여기서 아웃바운드는 클라이언트를 향하는 메시지, 인바운드는 오리진 서버를 향하는 메시지를 의미한다.

안전성을 위한 기술 : 대칭/공개 키 암호화, SSL/TLS
# 대칭 키와 공개 키 암호화 방식
대칭 키 암호화 symmetric key cryptography 방식은 암호화와 복호화에 동일한 키를 사용한다. 메시지를 암호화하고 복호화하는 데 사용하는 키가 동일하다. 키가 중요하기 때문에 유출되면 안 되고, 키 또한 안전하게 전달해야 한다는 단점이 존재한다.

키를 안전하게 전달할 방법을 찾을 바엔 그 방법으로 메시지를 보내는 게 맞지 않나란 생각에서 등장한 것이 공개키 암호화 public key crytography 방식이다. 비대칭키 암호화 asymmetric key cryptography 방식이라고 부르기도 한다. 암호화와 복호화를 위한 키가 각각 다른 방식이고, 이 한 쌍의 키를 각각 공개 키와 개인 키라고 부른다. 공개 키로는 개인 키를 유추할 수 없고, 그 반대도 불가하다. 공개 키로는 암호화를 하고 개인 키로 복호화하는 방식이라, 공개 키는 누구에게든 공개해도 무방하다.

대칭 키는 키를 안전하게 전송하기 어렵지만, 부하가 적어 암/복호화가 빠르다. 반대로 공개 키 암호화는 암/복호화가 느린 대신 키를 안전하게 공유할 수 있다. 이러한 장단점을 고려해 두 방식을 함께 사용하기도 한다. 대칭 키를 상대에게 안전하게 전달하고자 공개 키로 암호화하고, 개인 키로는 암호화된 대칭 키를 복호화 하는 것이다. 이렇게 하면 대칭 키를 안전하게 공유할 수 있고, 대칭 키로 원하는 내용을 빠르게 암/복호화도 할 수 있게 된다. 이렇게 사용하는 방식을 세션 키 session key라고 한다.


⭐️⭐️ 시험에 진짜 맨날 나오는 부분이라 표로 정리하고 넘어가 보자 ⭐️⭐️
내용 | 대칭 키 | 공개 키(비대칭 키) |
키의 관계 | 암호화 키 = 복호화 키 | 암호화 키 != 복호화 키 |
암호키 공개여부 | 비공개 | 공개 |
복호키 공개여부 | 비공개 | 비공개 |
키의 개수 | n(n-1)/2개 | 2n개 |
1인당 키 | n-1개 | n개 |
암/복호화 속도 | 빠름 + 효율적 | 느림 + 비효율적 |
인증 | 키 공유자 | 누구나 가능 |
장점 | 키의 길이가 짧음 암/복호화 속도가 빠름 |
키 분배가 용이함 사용자 수에 따라 관리할 키 개수가 적은 편 여러 분야에 활용 가능 |
단점 | 사용자 수에 따라 관리할 키 개수가 많은 편 키 변화의 빈도가 잦음 |
키의 길이가 김 암/복호화 속도가 느림 |
종류 | DES, AES, SEED, ARIA, Twofish | RSA(Rivest, Shamir, Adleman), ElGamal, 타원 곡선 암호, 배낭 암호 |
파란색으로 표시한 건 안 외워져서 내 나름대로 외우는 방법이다^^
ES가 들어가거나 앞뒤가 A로 끝나면 대칭 키,,,ㅋ
# 인증서와 디지털 서명
네트워크에서 말하는 인증서는 보통 공개 키 인증서를 의미하는데, 공개 키와 공개 키의 유효성을 입증하기 위한 전자문서를 가리킨다. 이러한 인증서는 인증 기관(CA, certification Authority)라는 제3의 기관에서 발급한다. 인증 기관은 인증서의 발급, 검증, 저장과 같은 역할을 수행하는 공인기관으로, 대표적으로 IdenTrust, DigiCert, GlobalSign 등이 있다. CA가 발급한 인증서에는, 공개 키 인증서가 진짜라는 보증을 담은 서명 값 signature가 있다. 클라이언트는 이 서명 값을 바탕으로 인증서를 검증할 수 있다.

서명 값은 1) 인증서 내용에 대한 해시 값(지문 fingerprint)을, 2) CA의 개인 키로 암호화하는 방식으로 만들어진다. CA는 이렇게 얻어낸 정보를 서명 값으로 삼아 클라이언트에게 인증서와 함께 전송한다.
클라이언트는 인증서 검증을 위해 1) 서명 값과 인증서를 분리하고, 2) 서명 값을 CA의 공개키로 복호화해 해시 값을 얻는다. 클라이언트는 이렇게 얻은 해시값을, 인증서 데이터에 대해 구한 해시 값과 비교하는 절차를 거친다. 이렇게 개인 키로 암호화된 메시지를 공개 키로 복호화하여 신원을 증명하는 절차를 디지털 서명 digital signature 이라 부른다.


# HTTPS: SSL과 TLS
지금까지 공부한 대칭/공개키 암호화 방식을 기반으로 동작하는 SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)라는 프로토콜이 있다. 둘 다 인증과 암호화를 수행하는 프로토콜로, TLS는 SSL을 계승한 프로토콜이다.
SSL/TLS를 사용하는 대표적인 프로토콜이 HTTPS(HTTP over TLS)이다. HTTPS는 HTTP 메시지의 안전한 송수신을 위해 개발되었다. 오늘날 주로 사용되는 TLS 1.3을 기반으로 HTTPS가 어떻게 동작하는지 확인해 보자. HTTPS 메시지는 크게 아래와 같은 세 단계를 거쳐 송수신한다.
1) TCP 쓰리 웨이 핸드셰이크
2) TLS 핸드셰이크 : 암호화 통신을 위한 키를 교환함 + 인증서 송수신과 검증이 이루어짐
- ClientHello : (클라이언트 >> 서버) 암호화된 통신을 위해 서로 합의할 정보들을 제시하는 메시지. 지원되는 TLS 버전, 사용 가능한 암호화 방식과 해시 함수(암호 스위트 cipher suite), 클라이언트 난수 등이 포함되어 있음
- ServerHello : (서버 >> 클라이언트) 제시된 정보들을 선택하는 메시지. 선택된 TLS 버전, 암호 스위트 정보, 서버 난수 등이 포함
>> 두 메시지를 주고받고 나면 암호화된 통신을 위해 사전 협의해야 할 정보들이 모두 결정됨
3) 암호화된 메시지 송수신

무선 네트워크
# 전파와 주파수, 와이파이와 802.11
전파 radio wave는 약 3kHz부터 3THz 사이의 진동수를 갖는 전자기파이다. 수많은 무선 통신 기기가 전자기파를 이용하여 통신하고, 이를 위해 통신에 사용되는 전파는 주파수 대역이 미리 정해져 있다. 아래와 같이 분배도표가 있는데 신기해서 가져와 봤다...!

무선 통신 네트워크는 IEEE 802.11로 표준화되어 있고, 802.11 뒤의 알파벳으로 다양한 규격을 표현한다. 그리고 IEEE 802.11 표준은 대부분 2.4 또는 5 GHz 대역을 사용한다. 와이파이 선택할 때 2.4G나 5G가 자주 보이는 건 이 때문이라고(참고로 5G가 속도는 빠르지만 장애물이 많은 환경에는 부적합하다). 버전에 따라 주파수뿐만 아니라 전송 속도, 대역폭, 전송 가능 거리, 변조 방식 등이 다양하게 바뀐다.
2주 차에 IEEE 802 표준 정리했던 거 기억나서 다시 읽어볼 겸 가져와봤다.

와이파이 Wi-Fi는 IEEE 802.11 표준을 따르는 무선 LAN 기술을 가리키는 말로도 많이 사용되지만, 본래는 와이파이 얼라이언스라는 브랜드 네임이다. 그래서 와이파이는 일종의 인증 마크 역할을 한다. 아래와 같이 인증 마크가 붙어 있다면, 그 제품은 특정 IEEE 802.11 규격을 지켰기에 타 제품과도 호환된다는 점을 알 수 있는 것이다.

마지막으로 무선 네트워크를 생성하기 위해서는 무선 액세스 포인트(AP)라는 네트워크 장비가 필요하다. 우리가 흔히 공유기라고 부르는 장비다. 무선 LAN의 기기들은 AP를 경유해 인터넷에 접속하거나 서로 메시지를 주고받을 수 있다. 이렇게 AP를 경유하여 통신이 이루어지는 무선 네트워크 통신 방식을 인프라스트럭처 모드라고 한다. 무선 네트워크를 이루는 AP와 여러 장치들의 집합을 서비스 셋이라 하는데, 여러 서비스 셋을 구분할 때 서비스 셋 식별자(SSID)를 사용한다. 무선 네트워크를 지칭하는 고유한 이름인데, 보통 우리가 접하는 와이파이 이름에 해당한다.
📚 기본 숙제
# (p379) 확인문제 1번 "다음은 호스트 A와 B 간의 쓰리 웨이 핸드셰이크 과정에서 호스트 A가 호스트 B에게 전송한 첫 번째 SYN 세그먼트의 일부입니다. 쓰리 웨이 핸드셰이크상에서 호스트 B가 호스트 A에게 전송할 다음 세그먼트의 ACK NUM(raw)는 무엇일까요?"
>> 문제에 적힌 SEQ NUM(raw)에 1을 더한 값이 답이다. 즉 3588415412+1이 답이다.
# (p407) 확인문제 2번 "다음 그림은 두 호스트가 TLS 1.3 핸드셰이크를 수행하는 과정을 나타낸 그림의 일부입니다. 괄호 안에 들어갈 TLS 관련 메시지로 알맞은 말을 골라 보세요"
>> 답은 3번 ServerHello이다. 클라이언트가 암호화 통신을 위해 합의해야 할 내용들을 ClientHello에 담아 보냈기에, 서버는 그중에서 원하는 걸 선택해 ServerHello에 담아 보낸다.
🦈 추가 숙제 : 와이어샤크로 TCP/UDP 패킷 확인해 보기


순서대로 TCP와 UDP로 필터링을 걸어서 조회해 본 결과이다. 왼쪽은 TCP라서 FIN이나 ACK 같은 글자도 보이고, SEQ NUM이나 ACK NUM도 볼 수 있다. 반대로 오른쪽은 UDP라서 더 간단하고, 송/수신지 포트나 체크썸 같은 값들도 볼 수 있다.
이렇게 해서 진짜 찐으로 혼공단 13기 혼공네트를 마칩니다.
할 수 있을까 걱정했는데 나름 알차게,
그리고 벼락치기로^^7 성공

'공부 > IT' 카테고리의 다른 글
[혼공단 13기/혼공네트 5주차] 응용 계층 (4) | 2025.02.06 |
---|---|
[혼공단 13기/혼공네트 4주차] 전송 계층 (3) | 2025.02.03 |
[혼공단 13기/혼공네트 3주차] 네트워크 계층 (8) | 2025.01.23 |
[혼공단 13기/혼공네트 2주차] 물리 계층과 데이터 링크 계층 (5) | 2025.01.17 |
[책 리뷰] AI 리터러시 : 인공지능 필수 지식부터 완벽 활용까지 (10) | 2025.01.13 |