교재 목차
네트워크 계층과 주소·라우팅·TCP·UDP·DNS·HTTP·보안을 연결하고 소켓 코드와 장애 진단으로 동작 원리를 확인합니다.
개발을 하다 보면 네트워크는 늘 배경처럼 존재합니다.
API를 호출하면 응답이 오고, 브라우저에 주소를 입력하면 페이지가 뜨죠.
하지만 왜 가끔 느려지는지, CORS 에러가 왜 나는지, HTTPS는 정확히 무엇을 보호하는지 물으면 명확하게 답하기 어려운 경우가 많습니다.
이 교재는 네트워크의 기초 개념부터 시작해 OSI 계층 모델, IP, TCP/UDP, DNS, HTTP, TLS, 소켓 프로그래밍, 그리고 실무 인프라까지 자연스럽게 이어지도록 설계했습니다.
각 장에서는 왜 이 개념이 필요한지를 먼저 설명하고, 그 위에 동작 원리와 실습을 쌓아갑니다.
최종 목표는 네트워크 용어를 아는 수준을 넘어, 서버 배포·장애 대응·성능 진단 상황에서 계층별로 문제를 분리하고 해결하는 사고력을 갖추는 것입니다.
읽기에서 첫 소켓 실습으로
1–10장에서 계층·주소·전송·이름 해석·HTTP·보안의 흐름을 먼저 읽습니다. 코드에 들어갈 때는 Python의 함수·반복문, 문자열과 바이트의 차이, 파일을 저장하고 터미널에서 실행하는 방법을 알아두면 좋습니다.
첫 작은 계산은 MTU와 MSS에서 해 봅니다. 옵션 없는 IPv4/TCP, MTU 1500바이트에서 MSS는 1460바이트입니다. 10 KiB를 MSS만큼씩 나누고 남은 바이트를 마지막에 보내는 모델에서는 세그먼트 8개가 필요합니다. 실제 패킷을 캡처해 센 개수는 아닙니다.
소켓 코드는 API의 동작 순서를 읽은 뒤 길이 프레이밍 에코 실습으로 이어갑니다. Python 3 표준 라이브러리만 사용하므로 length_prefix.py, framed_echo_server.py, framed_echo_client.py를 같은 폴더에 저장하고 터미널 두 개를 준비합니다. 서버의 127.0.0.1:18080 준비 메시지를 확인한 뒤 다른 터미널에서 대응 클라이언트를 시작합니다.
클라이언트가 Hello, Socket!, 빈 문자열 '', 한글🙂를 모두 복원하고, 서버와 클라이언트 양쪽이 수신 EOF를 확인해 종료하는지 봅니다. 수신 EOF는 상대가 송신 방향을 닫았고 남은 수신 데이터도 없다는 뜻이며 빈 메시지와 다릅니다. 연결 거부나 import 오류가 나면 서버의 준비 상태, 두 파일의 포트, 같은 폴더에 있는 length_prefix.py부터 확인합니다. 이 예제의 길이 상한·서버 대기 시간 제한은 별도로 남아 있으므로 운영 서버의 완성 조건으로 삼지는 않습니다.
그다음 출력 큐에서 한 번에 다 보내지 못한 데이터를 어떻게 이어 보낼지 읽고, 장애 구간 구분으로 계층별 진단을 연결합니다. C 소켓 예제는 포인터와 POSIX API를 배운 뒤 선택합니다. Linux 진단 명령은 해당 도구를 사용할 수 있는 환경에서 진행합니다.
12장의 현대 프로토콜과 13장의 인프라는 필요한 주제로 넓혀 읽습니다. 실제 캡처나 성능 측정은 대상·인터페이스·권한 등 해당 절의 조건을 갖춘 뒤 선택할 수 있습니다. 도구 준비가 아직 끝나지 않았다면 개념과 본문의 가정 사례부터 계속 읽어도 됩니다.
장별 목차
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장 네트워크 트러블슈팅
각 장을 마친 뒤에는 패킷이 어느 계층에서 멈췄는지, 어떤 주소와 포트가 사용됐는지, 캡처와 로그에서 어떤 근거를 찾을 수 있는지 확인합니다.
전체 트랙을 마치면 이름 해석부터 연결 수립, 암호화, HTTP 응답과 장애 복구까지의 흐름을 계층별로 설명해 봅니다.