brunch

매거진 책리뷰

You can make anything
by writing

C.S.Lewis

by Razelo Jan 01. 2024

[책리뷰] 윤성우의 열혈 TCP/IP 소켓 프로그래밍

소켓 프로그래밍 입문을 위한 최고의 서적 

최근 CS 기본기를 다지기 위해 TCP/IP를 살펴보았다.


이를 위해 널리 알려진 윤성우 작가님의 열혈 소켓 프로그래밍을 읽게 되었다. 


이 책은 소켓 프로그래밍의 입문서로 널리 알려져있다. 교보문고에 가면 많은 추천이 올라와있다. 

(사실 이미 예전에 사둔 책이지만 이제서야 읽는다.)


꽤 괜찮은 입문서라 생각되어 소켓 프로그래밍을 공부하고자 하는 분들께 추천하고자 리뷰를 작성한다. 




윤성우의 열혈 TCP/IP 소켓 프로그래밍 

윤성우

오렌지미디어



이 책은 소켓 프로그래밍에 대한 전반적인 내용을 다룬다. TCP에서 UDP까지 주로 Echo서버와 클라이언트를 구현하면서 코드와 이론이 적절하게 배분되어있다. 

그런데 오히려 네트워크 프로그래밍에 대한 깊이있는 기술적 지식을 쌓고자 하는 분들은 실망할 수도 있다. 왜냐면 전체적인 내용을 훑다보니 간단하게 언급하고 지나치는 내용들이 있기 때문이다. 다만 전체적인 내용을 고루 다루고 있어 최고의 입문서라 할 수 있다. 


흥미로웠던 점은 Linux와 Window 구현을 같이 다루는 점이다. 이건 호불호가 갈릴 수 있는 부분이지만 개인적으로는 불호였다. 두 환경을 스위칭해가면서 보는 걸 별로 좋아하지 않는 편이라서 불호지만 객관적으로 본다면 Window에서 다르게 적용되는 디테일한 사용법이라던지 IOCP같은 Window만의 서버 모델을 살펴볼 수 있는 점에서는 장점이라고 느꼈다. (한 가지만 다루는 걸 선호하는 취향이라서 그렇다. 네트워크 프로그래밍의 경우 Window, Linux 둘 모두 봐야한다.)


Window의 Overlapped IO나 Notification IO 모델 그리고 HTTP 서버 제작 등 다양한 주제가 있어서 참 좋았다. 

Linux의 epoll에 대해서도 다루고 있다. 게임 서버 쪽에 관심이 있으신 분들이라면 기본기를 다지면서 어떤 개념이 있는지 참고차 간단하게 보기 좋은 내용들이다. 


이전에는 말로만 들어서 개념이 잡히지 않았던 내용들인데 직접 C 예제를 따라쳐보면서 실행시켜보니 어떻게 돌아가는지 알 수 있었다. 물론 위에서 말했듯이 입문서이기에 깊은 내용을 원한다면 따로 학습을 해야한다. 

참고로 C 예제가 아주 잘 구성되어있다. 각 챕터에서 보여주고 싶은 내용만 깔끔하게 들어간 예제라 마음에 들었다. (모든 예제는 반드시 직접 타이핑해서 실행해보길 권한다.)


이론이 더 풍부했으면 하는 욕심이 들었지만 책의 밸런스 조절을 생각해본다면 많은 사람의 취향을 만족시켜주는 좋은 책이 되려면 이 정도가 적당하겠다는 생각이 들었다. 


주로 Echo 서버/클라이언트 그리고 간단한 채팅 서버 수준의 예제가 있기 때문에 작은 사이드 프로젝트를 통해서 책 내용을 응용해 무언가를 만들어보길 권한다. 이 책의 예제만으로 다 이해했다고 말할 수 없다. 


모든 예제가 정상적으로 동작하고 실습할 환경 구성 또한 무난하다. (복잡하지 않다.) 


Linux의 경우 Oracle VirtualBox로 Ubuntu환경을 구성해서 실습하는 걸 권한다. Window의 경우 Visual Studio에서 무난하게 실습할 수 있다. 실습에 큰 어려움은 없다. 


기본 개념기를 다지기에 아주 좋은 책이다. 이 책을 읽고나서 네트워크에 대한 이론 책을 본다면 네트워크 지식을 더욱 견고하게 다질 수 있을 것 같다. (볼만한 이론 책으로는 "성공과 실패를 결정하는 1%의 네트워크 원리"를 추천한다.)


언젠가 시간이 날때 한번 더 읽어봐도 좋은 책인 것 같다. 구현을 보고 싶어서 읽은 책이기 때문에 사용하지 않으면 금방 잊기 마련이다. 이런 류의 책은 응용하지 않으면 효과를 보기 어렵다. 

짤막한 예제들이 주를 이루기에 아까도 말했지만 사이드 프로젝트를 진행한다면 매우 좋을 것 같다. 

혹시 개인 프로젝트를 하기에 시간적인 부담이 된다면 마지막 챕터에서 다루는 HTTP 서버를 조금 더 확장해서 일부 기능을 추가하는 정도로 해도 충분할 것 같다. 


출간된지 시간이 흘렀지만 아직도 모든 예제가 정상적으로 돌아가는 점이 정말 좋았다. 두께도 두껍지 않아서 금방 읽을 수 있을 것이다. (물론 나는 이것 저것 다른걸 하면서 읽느라 완독에 시간이 좀 걸렸다.)




오랜만에 CS 기본기를 다지려 보았는데 정말 재밌게 읽었다. 언제나 느끼는 것이지만 기본기는 중요하다. 아무리 비즈니스 로직을 작성한다고 하더라도 엔지니어라면 밑바닥에서 돌아가는 원리에 대해 알고 있어야 한다. 그러한 기본기는 지금 당장은 모르더라도 언젠가 빛을 발하는 법이다. 


바퀴를 재발명하지 말라는 말이 바퀴가 굴러가는 원리를 몰라도 된다는 말은 아니다. 


아래에서 구매할 수 있다. 


추천수가 상당하다. 


좋은 책을 제공해주셔서 감사합니다. 


재밌게 읽었습니다. 


https://product.kyobobook.co.kr/detail/S000001589146



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari