본문 바로가기

교재 목차

네트워크 계층과 주소·라우팅·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장의 인프라는 필요한 주제로 넓혀 읽습니다. 실제 캡처나 성능 측정은 대상·인터페이스·권한 등 해당 절의 조건을 갖춘 뒤 선택할 수 있습니다. 도구 준비가 아직 끝나지 않았다면 개념과 본문의 가정 사례부터 계속 읽어도 됩니다.


장별 목차

각 장을 마친 뒤에는 패킷이 어느 계층에서 멈췄는지, 어떤 주소와 포트가 사용됐는지, 캡처와 로그에서 어떤 근거를 찾을 수 있는지 확인합니다.

전체 트랙을 마치면 이름 해석부터 연결 수립, 암호화, HTTP 응답과 장애 복구까지의 흐름을 계층별로 설명해 봅니다.

이 페이지 목차

이 페이지 목차