[서평] TCP/IP 소켓 프로그래밍 리뷰

녹차·2026년 1월 9일

서평

목록 보기
5/6
post-thumbnail

서론

이 책을 선택한 배경 및 이유

『게임 서버 프로그래밍 교과서』를 읽으면서, 게임 서버를 제대로 이해하기 위해서는 소켓 프로그래밍에 대한 기반 지식이 반드시 필요하다는 것을 느끼게 되었습니다. 서버 구조나 네트워크 흐름을 설명하는 부분에서, 소켓 동작 원리를 알고 있느냐에 따라 이해도의 차이가 꽤 크게 벌어졌기 때문입니다.

처음에는 해외 저서를 통해 공부해볼까도 고민했지만, 언어적인 부담과 함께 학습에 소요되는 시간이 생각보다 많이 들 것 같다는 판단이 들었습니다. 그래서 조금 더 빠르게 핵심을 파악하고, 반복해서 보기 좋은 자료를 찾게 되었고, 그 과정에서 대학교재로 많이 사용되는 『TCP/IP 소켓 프로그래밍』이라는 책이 가장 적합해 보였습니다.

이 책은 이론과 실습이 균형 있게 구성되어 있어, 소켓 프로그래밍의 기본 개념을 정리하면서 동시에 직접 코드를 통해 동작을 확인할 수 있다는 점이 인상적이었습니다. 게임 서버 학습을 위한 기초 체력을 다지기에는 좋은 선택이었다고 생각합니다.

본론

장점

실습 파트에서는 코드를 처음부터 끝까지 한 번에 제시하고 “한번 해보세요” 식으로 넘기지 않고, 코드 하나하나를 세세하게 설명해 주는 방식이 좋았습니다. 덕분에 막연하게만 느껴졌던 TCP, UDP 서버를 직접 구현해볼 수 있었고, 코드의 흐름을 따라가며 이해하는 데 큰 도움이 되었습니다.

또 기존 코드에 새로운 기능이나 동작을 추가하는 부분에서는, 변경되거나 추가된 코드가 굵게 표시되어 있어 책을 보면서 그대로 따라 치며 프로그래밍하기에도 불편함이 없었습니다. 실습서로서의 배려가 잘 느껴지는 구성이라고 생각합니다.

마지막으로 각 장의 요약과 연습 문제 역시 인상 깊었습니다. 단순히 “이해했는가”를 확인하는 수준을 넘어서, “이 개념을 다른 사람에게 설명한다면 어떻게 설명할 수 있을까?”라는 질문을 자연스럽게 떠올리게 해주었습니다.

그런 점에서 연습 문제들도 지나치게 어렵지 않으면서, 혼자 힘으로 구현해볼 수 있는 적절한 난이도로 구성되어 있어 학습 내용을 정리하고 내 것으로 만드는 데 큰 도움이 되었습니다.

단점

다만 이 책이 대학교재라는 특성상, 전반적으로 프로그래밍 실습에 초점이 맞춰져 있다는 느낌을 받았습니다. 그만큼 이론적인 설명은 다소 아쉽게 느껴졌고, 네트워크나 운영 체제에 대한 기본 지식 없이 이 책을 접한다면 코드의 의미를 이해하기보다는 그대로 따라 치는 데 그칠 위험도 있다고 생각합니다.

저 역시 이 책을 읽으면서, 커널의 역할이나 OSI 계층 7계층 같은 개념들은 다른 서적이나 공식 문서를 병행해가며 보완했습니다. 기본 개념이 어느 정도 잡혀 있어야, 책에서 다루는 코드들도 왜 이런 형태로 작성되었는지 자연스럽게 이해할 수 있었습니다.

또 하나 개인적으로 아쉬웠던 점은, 스레드 구현에서 std::thread가 아닌 WinAPI 기반 스레드를 사용한다는 점입니다. 물론 std::thread 자체도 내부적으로는 WinAPI를 기반으로 구현되어 있기 때문에, 스레드의 원형을 이해한다는 관점에서는 충분히 의미 있는 선택이라고 생각합니다. 다만 실제로 코드를 작성할 때는 std::thread가 더 많은 기능과 편의성을 제공하는 만큼, 이 부분에서는 개인적인 아쉬움이 남았습니다.

결론

결론적으로 이 책은 Game Server에 입문하는 사람에게 매우 적합한 책이라고 생각합니다.『게임 서버 프로그래밍 교과서 리뷰』가 Game Server라는 숲 전체를 조망하게 해주는 책이었다면, 이 책은 그 숲 속에서 나무 한 그루를 직접 들여다보게 해주는 역할을 해주었습니다.

다만 아쉬운 점이 있다면, 그 나무 한 그루 안에서 뿌리까지 깊게 파고들 정도로 내용이 상세하게 정리되어 있지는 않다는 점입니다. 따라서 소켓의 동작 원리나 네트워크 계층, 운영 체제와의 관계를 보다 깊이 이해하기 위해서는 다른 서적이나 공식 문서를 함께 참고할 필요가 있습니다.

그럼에도 불구하고, 이 책은 소켓 프로그래밍을 처음 접하는 입장에서 막막함 없이 시작할 수 있도록 도와주는 좋은 출발점이 되어줄 수 있는 입문서라고 생각합니다.

질문1 - 어떻게 공부하셨나요?

저는 기존에 TCP, UDP에 대한 지식이 거의 없는 상태에서 이 책을 접했기 때문에, 리눅스 관련 파트를 제외하고는 각 내용을 하나하나 이해하려고 노력하며 읽었습니다. 처음 접하는 개념들이 많았지만, 실습 파트에서 코드 하나하나를 친절하게 설명해 주고 있어 전반적인 흐름을 따라가는 데 큰 어려움은 없었습니다.

다만 실습에 사용되는 코드가 기본적으로 C 언어 기반이다 보니, 저는 이를 C++ 컴파일 환경에서 C 스타일로 작성하며 학습을 진행했습니다. 언어 자체의 차이보다는 소켓과 네트워크 동작 원리를 이해하는 데 집중하고 싶었기 때문에, 이러한 방식이 개인적으로는 큰 부담 없이 받아들여졌습니다.

질문2 - 가장 도움이 되었던 파트는 무엇인가요?

개인적으로 가장 인상 깊었던 부분은 『Chapter 11 소켓 입출력 모델 : 윈도우』에서 다루는 IOCP 모델 구현이었습니다.
현업에서 실제로 사용되는 IOCP를 직접 구현해 보면서, 막연하게 느껴졌던 게임 서버 개발이 조금씩 현실적인 영역으로 다가오고 있다는 느낌을 받았습니다.

물론 IOCP 모델의 동작 원리와 그 안에 내포된 개념들을 이해하는 데에는 꽤 많은 시간이 필요했고, 구현 과정에서도 여러 공식 문서와 자료들을 참고해야 했습니다. 그럼에도 불구하고, 시행착오를 거쳐 하나씩 완성해 나가면서 “아, 내가 점점 현업 개발자의 사고 방식에 가까워지고 있구나”라는 생각이 들었던 기억이 남아 있습니다.

profile
CK23 Game programmer

0개의 댓글