
책을 읽은 이유...
이 책은 오래 전부터 읽을까 하고 가지고 있던 책이었다. 네트워크 프로그래밍을 한참 공부하던 예전에 원서 이기도 했고 꽤 두꺼워서 유명했지만 놓아두고 인터넷에서 각종 조사를 하며 TCP/IP를 공부했었다. 오래 만에 책을 보는데 양장판이라 그런지 이 책은 오랜 기간 지났는데도 낡지 않았다. TCP/IP는 남보다는 많이 안다고 생각하고 있어 어떤 책인지 후딱 읽어볼까 하는 생각이 들었다. 단지 오래되기도 하고 개정판이 나온 1판이라 지금 가치가 있는지가 걱정되어서 AI에게 여전히 유효한지 물어보았다. AI 답변은 의외로 지금 읽어도 좋은 책이라는 것이었다. 약간의 단점으로 설명하는 FTP, Telnet 등의 프로토콜이 옛날 것일 수 있다는 것이었는데 과거에 많이 사용하던 것들이라 해당 프로토콜의 구조를 보는 것이 오히려 나에게는 좋았다. 그게 이 책을 읽은 이유였다.
책을 읽은 후에...
지금은 고인이 된 W. Richard Stevens란 분이 저술한 책인데 이 분의 책은 Advanced Programming in the Unix Environment을 감명 깊게 읽은 적이 있었다. 역시 믿을 수 있는 저자였다. 이 책도 다 읽고 나니 감동이 밀려왔다. 이렇게 훌륭한 책을 왜 예전에 읽지 않았을까 하는 후회가 밀려올 정도였다. 어떻게 보면 그동안 그렇게 공부하고 프로그래밍하면서 TCP/IP에 대해서 산전수전 겪어 왔다고 생각했는데 나는 TCP/IP를 제대로 알고 있었던 게 아니었구나 라는 생각이 들었다. 특히 이 책의 각각의 부분에 대한 이 저자 특유의 성능적인 부분에 대한 기술은 최고로 많은 가르침을 주었다. 뭔가 TCP/IP 알고리즘에 대한 기술을 읽다 보면 이렇게 프로토콜 제어 디자인을 하는 거구나 라는 다양한 깨우침을 얻을 수 있었다. 책은 낡았다 하지만 AI에게 필요한 것을 질의하다 보면 최신 TCP/IP의 알고리즘도 알 수 있었다. 또한 TCP/IP가 워낙 알고리즘적으로 어렵고도 복잡하게 만들어진 부분이 있어 최신 TCP/IP의 개선 알고리즘을 이해하는 것은 오히려 쉬웠다. 솔직히 AI 설명이면 대충 어떻게 만들어 졌겠구나 하는 직감이 들었다.
이 책의 인상적이었던 부분들…
우선 ARP, RARP 뿐만 아니라 Router를 포함하여 IP 레벨에서 네트워크가 어떻게 동작하는지 많은 이해를 할 수 있었다. TCP/IP 책에서 IP 프로그래밍은 굉장히 낯설었는데 이해하고 나니 IP 레벨의 프로그래밍도 하면 하겠다는 생각이 들었다. 특히 ICMP를 포함한 IP 레벨에서의 네트워크 흐름은 UDP와 TCP를 좀 더 깊게 이해하는데 도움을 주었고 좀 더 섬세한 프로그래밍을 짤 수 있을 거 같았다.
두번째로 TCP의 알고리즘 각각에 대한 이해는 TCP를 다시 보게 만들어주었다. 다양한 조사로 TCP 각각의 알고리즘을 적당히 이해는 하고 있었지만 수치 레벨에서의 깊은 이해는 없었던 거 같다. 그리고 진정으로 왜 이런 알고리즘이 존재하는 가와 왜 이렇게 짰는가에 대한 이해를 할 수 있게 되었다. TCP가 네트워크 상황에 대해서 최고의 성능을 만들기 위해서 어떻게 대응하는지를 깊게 이해하고 나니까 TCP가 정말로 잘 만들어진 천재의 작품이라는 생각이 들었다.
마지막으로 FTP, Telnet, SMTP 등의 다양한 프로토콜 디자인 설명을 보니 프로토콜 디자인에 대한 다양성과 유연성에 영감을 받을 수 있었다. 각각의 프로토콜이 각각의 문제를 어떻게 TCP나 UDP 위에서 해결하는지를 이해하게 되니 다음에 네트워크 프로토콜을 디자인한다면 좀 더 다른 형태로 할 수 있겠구나 라는 생각이 들었다. 다양한 프로토콜이 나오지만 몇 십년 전에 만들어진 이 다양한 프로토콜의 틀에서 크게 벗어난 프로토콜은 별로 없어 보인다는 게 이들이 얼마나 잘 설계된 프로토콜인가를 느끼게 해주었다.
서평을 마치며...
책은 솔직히 중고급용인거 같다. 전혀 TCP/IP를 모르는 사람이 아니라 어느 정도 아는 사람이 깊은 이해를 얻기 위해서 보는 책 같다는 생각이 들었다. 이 책이 개정판이 몇 판 나왔지만 1판 저자가 고인이 된 관계로 바뀐다. 개인적으로 1판 저자를 좋아하는 관계로 최고의 만족을 얻을 수 있었다. 또한 이 책은 시리즈로 Volume 3까지 있는데 Volume 1만이 보통 추천된다.
책을 읽고 나니 비로서 지금까지 소켓 프로그래밍에서 보았던 모든 옵션 설정을 좀 더 잘 이해할 수 있었다. 피상적인 이해가 아니라 전체 알고리즘 맥락 속에서 이해할 수 있게 되었다.
모바일 세상이 되고 나서 HTTP가 강세지만 TCP/IP에 대한 깊은 이해를 얻기 위한다면 정말로 추천하고 싶은 책으로 근 몇 년간 읽은 책 중에 단연 최고의 책이었다.
'서버 프로그래밍' 카테고리의 다른 글
| [서평] 30가지 패턴으로 배우는 분산 시스템 설계와 구현기법 (0) | 2025.04.26 |
|---|---|
| [서평] 임베디드 웹서버를 위한 TCP/IP (0) | 2025.04.06 |
| [서평] 데이터 중심 애플리케이션 설계 (2) | 2025.02.04 |
| [서평] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 (1) | 2024.01.25 |
| [서평] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (0) | 2023.12.19 |
| 쓰레드 풀에서 CPU 사용량 줄이기 (1) | 2021.12.02 |
| 성능 향상하기: IO 관련 처리 vs CPU 관련 처리 (0) | 2021.11.03 |
| 폴(Poll) 방식의 네트워크 처리 구현 (2) | 2021.11.02 |