더 깊이 가는 길
이 책은 소켓 프로그래밍의 단단한 기초와 실전을 다뤘습니다. 하지만 네트워크의 세계는 더 깊고 넓습니다. 더 멀리 가고 싶은 사람을 위해, 이 책 너머의 길들을 안내합니다. 모두 한꺼번에 갈 필요는 없습니다. 관심이 가는 곳부터 한 걸음씩 내디디면 됩니다.
고전을 읽기
소켓 프로그래밍에는 시간이 검증한 고전들이 있습니다.
리처드 스티븐스의 유닉스 네트워크 프로그래밍은 이 분야의 성서로 불립니다. 우리가 이 책에서 다룬 모든 주제를 훨씬 깊고 엄밀하게 파헤칩니다. 두껍고 묵직하지만, 소켓을 평생의 도구로 삼고 싶다면 곁에 두고 거듭 펼쳐 볼 만합니다.
가볍게 시작하고 싶다면 베지의 네트워크 프로그래밍 가이드가 좋습니다. 무료로 공개되어 있고, 친근한 말투로 소켓의 핵심을 짚어 줍니다. 이 책에서 다룬 C 소켓 코드를 더 다양하게 보고 싶을 때 훌륭한 참고서가 됩니다.
커널 속으로
소켓 아래로 더 내려가면 운영체제 커널이 있습니다. 우리가 recv를 부를 때 커널 안에서는 무슨 일이 벌어질까요. 패킷이 네트워크 카드에 도착해 우리 소켓의 버퍼에 담기기까지, 커널은 수많은 일을 합니다.
이 길은 운영체제와 네트워크가 만나는 깊은 곳입니다. TCP의 혼잡 제어가 실제로 어떻게 구현되는지, 패킷이 어떤 경로로 처리되는지, epoll이 커널 안에서 어떻게 동작하는지를 파고들게 됩니다. 시스템 프로그래밍과 운영체제에 관심이 있다면 매혹적인 영역입니다.
현대 프로토콜로
우리는 TCP와 UDP, 그리고 HTTP를 다뤘습니다. 하지만 웹은 계속 진화하고 있습니다.
특히 주목할 것이 QUIC와 그 위에 세워진 HTTP의 최신 버전입니다. 흥미롭게도 QUIC는 TCP가 아니라 UDP 위에 세워졌습니다. PART 03에서 우리가 UDP에 신뢰성을 직접 더해 본 것을 떠올려 보세요. QUIC는 바로 그 발상을 극한까지 정교하게 발전시킨 것입니다. UDP의 가벼움 위에 신뢰성과 보안, 그리고 더 빠른 연결을 직접 쌓아 올렸습니다. 우리가 PART 03과 07에서 맛본 아이디어들이 현대 웹의 최전선에서 어떻게 꽃피었는지 확인할 수 있습니다.
웹소켓도 더 파 볼 만합니다. 우리가 만든 채팅처럼 양방향 실시간 통신을 표준화한 프로토콜로, HTTP 위에서 시작해 소켓 같은 통신으로 전환합니다. 이 책에서 다룬 프로토콜 설계와 동시성 지식이 그대로 이어집니다.
직접 더 만들어 보기
읽는 것만큼 중요한 것이 직접 만들어 보는 것입니다. 이 책의 예제들을 출발점 삼아, 더 큰 것을 만들어 보세요.
채팅 서버에 채팅방을 여러 개 두거나 귓속말을 더해 보세요. 파일 전송 프로그램을 여러 파일을 한꺼번에 보내도록 확장해 보세요. 미니 HTTP 서버에 keep-alive를 제대로 구현하거나, 간단한 게임 서버를 UDP로 만들어 보세요. 만들다 막히면, 이 책에서 배운 원리로 돌아와 차근차근 풀어 가면 됩니다. 손으로 만든 경험만큼 확실한 배움은 없습니다.
멈추지 않는 기술, 변하지 않는 기초
네트워크 기술은 끊임없이 변합니다. 새로운 프로토콜이 나오고, 새로운 라이브러리가 등장하고, 더 빠른 방법이 발명됩니다. 그 모든 변화를 따라가는 것은 불가능하고, 그럴 필요도 없습니다.
변하지 않는 것은 기초입니다. 소켓으로 연결을 맺고 바이트를 주고받는 그 핵심은, 수십 년 전이나 지금이나 같습니다. 우리가 이 책에서 단단히 다진 그 기초가, 앞으로 만날 어떤 새로운 기술 앞에서도 흔들리지 않는 발판이 되어 줄 것입니다. 기초가 단단한 사람은 새로운 것을 빠르게 배웁니다. 그것이 기초의 힘입니다.
다음 마지막 장에서는 이 책 다음에 함께 보면 좋을 책들을 안내하며 여정을 마칩니다.