네트워크
네트워크의 구조와 계층에서 출발해 물리와 데이터 링크, IP 주소와 서브넷, 라우팅, TCP와 UDP, QUIC, DNS, HTTP, TLS와 네트워크 보안을 다루고, 소켓 프로그래밍과 HTTP/2, HTTP/3, WebSocket, CDN과 로드 밸런서, 클라우드와 컨테이너 네트워크, 장애 진단까지 작은 모델과 Python 코드, 공식 문서로 확인한 C와 명령 예제로 따라갑니다.
API를 부르면 응답이 오고, 브라우저에 주소를 입력하면 페이지가 열립니다. 그 사이에서 네트워크는 이름을 주소로 바꾸고, 패킷을 수많은 라우터에 실어 지구 반대편까지 나르고, 빠진 데이터를 다시 보내고, 엿보거나 바꾸지 못하게 암호화합니다. 이 교재는 왜 가끔 접속이 몇 초씩 걸리는지, CORS 오류는 왜 나는지, HTTPS는 정확히 무엇을 지켜 주는지, 서버를 늘렸는데 왜 한 대에만 부하가 몰리는지 같은 질문에 차례로 답해 갑니다.
개념마다 작은 예를 정해 두고 패킷과 상태가 어떻게 바뀌는지 손으로 따라간 뒤, 그 과정을 짧은 코드로 다시 확인합니다. 글마다 있는 Python 코드는 라우팅, 혼잡 제어, DNS 리졸버, 캐시 같은 네트워크의 동작을 흉내 내는 모델이거나, 표준 라이브러리로 헤더를 만들고 읽거나 루프백에서 실제 소켓을 쓰는 예제로, 외부 패키지 없이 Python 3만으로 돌아갑니다. 본문의 출력은 Python 공식 문서와 RFC에 적힌 동작에 따라 계산했고, RFC나 표준 문서에 시험값이 있는 예제는 그 값과 맞춰 두었습니다. 각 코드 블록을 lesson.py 같은 파일에 저장해 python lesson.py로 실행하면 됩니다. Python을 처음 설치한다면 자료구조·알고리즘 교재의 Python 설치부터 첫 실행과 오류 읽기를 먼저 보세요.
C 코드와 Linux 명령은 실제 인터페이스를 보여 주는 예제로, 동작은 man7.org의 Linux man 페이지와 RFC, 각 도구의 공식 문서로 확인했습니다. ping, dig, curl 같은 명령의 출력은 망과 시점마다 다르므로, 본문에 실은 출력은 형식을 보여 주려고 만든 예이며 주소는 사설 주소와 문서용 주소를 썼습니다. 패킷을 캡처하거나 방화벽을 바꾸는 명령은 관리자 권한이 필요하므로, 반드시 내가 관리하는 실습용 환경에서만 실행하세요.
학습 경로
1단계 · 네트워크의 구조와 계층(1–3장)에서는 네트워크가 무엇이고 인터넷이 어떻게 이어져 있는지, 지연이 어디서 생기는지를 보고, OSI와 TCP/IP의 계층과 캡슐화를 익힙니다. 이어서 신호를 비트로 바꾸는 물리 계층과, MAC 주소와 스위치, ARP, VLAN으로 같은 링크 안을 잇는 데이터 링크 계층을 다룹니다.
2단계 · 주소와 라우팅(4–5장)에서는 IPv4 주소와 서브넷, CIDR, DHCP와 NAT, IPv6를 다루고, 라우터가 최장 접두어 일치로 경로를 고르는 방법과 RIP, OSPF, BGP 같은 동적 라우팅, traceroute와 ping으로 경로를 진단하는 방법을 봅니다.
3단계 · 전송 계층(6–7장)에서는 TCP의 연결 수립과 종료, 흐름 제어와 혼잡 제어, Nagle과 Keep-Alive 같은 실무 옵션을 다루고, UDP의 구조와 TCP와 UDP를 고르는 기준, UDP 위에 만든 QUIC을 비교합니다.
4단계 · 이름과 웹(8–9장)에서는 DNS의 계층과 위임, 캐시와 레코드, 장애 조치와 DNSSEC을 다루고, HTTP의 메시지와 메서드, 상태 코드와 헤더, 쿠키와 세션, 캐시와 CORS를 봅니다.
5단계 · 보안(10장)에서는 대칭 키와 공개 키, 해시와 서명이 각각 무엇을 지키는지 보고, TLS 1.3의 핸드셰이크와 인증서의 사슬, 인증서의 발급과 갱신, 중간자 공격과 DDoS 같은 위협과 방어를 다룹니다.
6단계 · 코드로 다루기(11장)에서는 소켓 API로 TCP와 UDP 서버와 클라이언트를 만들고, 길이 헤더로 메시지를 나누며, select, poll, epoll과 이벤트 루프로 수많은 연결을 함께 다루는 방법을 익힙니다.
7단계 · 현대의 프로토콜과 인프라(12–13장)에서는 HTTP/2의 프레임과 헤더 압축, HTTP/3와 QPACK, WebSocket과 SSE를 다루고, CDN과 로드 밸런서, 프록시와 VPN, 클라우드의 VPC와 Kubernetes의 Service까지 실제 서비스를 떠받치는 인프라를 봅니다.
8단계 · 장애 진단(14장)에서는 증상을 단계와 구간으로 나누어 원인을 좁히는 방법과 핵심 진단 도구, 패킷 캡처로 핸드셰이크와 재전송을 직접 읽는 방법을 다루며 앞의 모든 장을 하나로 묶습니다.
다른 교재로 이어가기
소켓 아래에서 커널이 하는 일, 곧 파일 디스크립터와 프로세스, I/O 멀티플렉싱의 커널 쪽 동작은 운영체제에서 더 자세히 다룹니다. 라우팅의 최단 경로와 해시, 우선순위 큐 같은 알고리즘은 자료구조·알고리즘에서, 연결 풀과 트랜잭션, 여러 서버에 걸친 데이터의 일관성은 데이터베이스에서, 브라우저와 HTML, 프론트엔드 쪽에서 본 HTTP는 웹 입문에서 이어집니다. 자격시험의 답안 형식이 필요하면 정보관리기술사 교재를 참고할 수 있습니다.
장별 목차
1장 네트워크 기초와 인터넷
2장 네트워크 모델과 계층 구조
3장 물리 계층과 데이터 링크 계층
4장 IP 주소와 서브넷
5장 라우팅
6장 TCP
7장 UDP와 전송 계층 비교
8장 DNS
9장 HTTP
10장 HTTPS와 네트워크 보안
11장 소켓 프로그래밍
12장 HTTP/2, HTTP/3, WebSocket
13장 실무 네트워크 인프라
14장 네트워크 트러블슈팅
다 읽은 뒤에는 용어를 얼마나 외웠는지보다, 브라우저에 주소를 입력한 순간부터 페이지가 열릴 때까지 이름 해석, 연결 수립, 암호화, 요청과 응답이 어떤 순서로 일어나는지 설명할 수 있는지, 패킷 하나가 사라졌을 때 각 계층이 어떻게 반응하는지 작은 예로 추적할 수 있는지, 장애가 났을 때 어떤 도구로 어느 단계부터 확인할지 말할 수 있는지를 점검해 보세요.