'네트워크 프로그래밍이나 관련 분야에 계신 분들이라면 학생이든 실무에 계신 분들이든 한번쯤은 보셨거나, 아니면 최소한 제목이라도 들어보지 않았을까...' 하는 생각이 들만큼 출간 당시 일반 실무자들뿐만 아니라 대학 교재로도 채택이 되어 굉장한 반응을 보였던 책이 있습니다.
TCP/IP 소켓프로그래밍 C / 마이클 도나후, 케네쓰 칼버트 / 180쪽 / 2001년 / 사이텍미디어
특징 및 내용
TCP/IP 소켓 프로그래밍(The Pocket Guide to TCP/IP Sockets)은 소켓을 사용하여 복잡하고 강력한 네트워크 프로그램을 개발하기 위해 필요한 지식과 기법들을 얻을 수 있는 빠르고 용이한 방법을 제공한 다. 두 명의 경험많은 네트워킹 강사에 의해 집필된 이 책은 클라이언트 및 서버를 위한 기본 소켓 기법들 을 순차적으로 설명하는 다양한 예들을 제공한다.
많은 실제의 예들을 사용하므로 이 책은 소켓 프로그래밍 초보자의 완전한 지침서가 되며, 또한 멀티미디 어 프로토콜들을 위시한 고급 네트워킹 주제에 대한 출발점이 된다.
■ 메시지 구성이나 파싱과 같이 초보자에게 혼란을 주는 주제들에 대한 명료하고 핵심을 찌르는 설명 ■ 반복 및 병행 서버, 타임아웃, 비동기 메시지 처리 등과 같이 가장 중요한 TCP/IP 기법들에 대한 예제 위주의 완전한 설명 ■ 소켓 인터페이스를 구성하는 시스템 호출 및 보조 루틴들에 대한 자세하고 사용하기 쉬운 참고의 역할 ■ C 및 WinSock 버전으로 작성된 예제 프로그램들의 소스 코드 및 여러 플랫폼에서의 수행 안내를 제공 하는 웹 사이트의 운영
이 책은 네트워킹 교육 분야의 공백을 메워주고 있다. 책의 전개는 학생들이 쉽게 다가갈 수 있도록 되었 으며 많은 코드 예제들을 보여준다. 이 책은 학부 및 대학원 기초 코스에서 전통적인 네트워킹 교재들과 더불어 사용할 수 있는 뛰어난 교재가 될 것이다. - Ellen W. Zegura, Georgia Institute of Technology
이 책은 내가 읽어본 가장 훌륭한 소켓 관련 책이며, 많은 다른 책들처럼 불필요한 내용을 담고 있지 않다. 이 책은 아주 유용한 예제들로 가득 차 있으며 소켓 API의 참고서로도 사용할 수 있다. 한 마디로, 이 책은 관련 종사자들이 요구하는 모든 것을 포함하는 아주 잘 쓰여진 책이다. - Steve Bernier, Communications Research Center
목차
0장. 인터넷의 기본 1. 인터넷-사용자의 관점 2. 인터넷 구성 3. 인터넷 구조 4. 네트워크 소프트웨어
1장. 서 론 1. 네트워크, 패킷, 프로토콜 2. 주소에 대하여 3. 클라이언트와 서버 4. 소켓이란?
2장. 소켓 기본 1. 생성(Creation)과 해지(Destorying) 2. 주소 지정 3. TCP 클라이언트 4. TCP 서버
3장. 메시지 구성하기 1. 데이터 부호화(Encoding Data) 2. 바이트 순서9Byte Ordering) 3. 정렬(Alignment)과 채워넣기(Padding) 4. 틀짜기(Framing) 및 파싱(Parsing)
4장. UDP 소켓 사용법 1. UDP 클라이언트 2. UDP 서버 3. UDP 소켓을 이용한 송신 및 수신
5장. 소켓 프로그래밍 1. 소켓 옵션들 2. 신호(Signals) 3. 넌블로킹 입/출력(Nonblocking I/O) 4. 멀티태스킹(Multitasking) 5. 멀티플렉싱(Multiplexing) 6. 여러 수신자들(Multiple Recipients)
6장. 내부 구조 1. 버퍼링(Buffering)과 TCP 2. 교착상태(Deadlock) 3. 성능 관련 사항 4. TCP 소켓 생명 주기(TCP Socket Life Cycle) 5. 역다중화 해설(Demultiplexing Demystified)
7장. 도메인 네임 서비스 1. 이름들과 인터넷 주소들 사이의 사항 2. 서비스 정보를 이름으로 찾음
부 록: API 참조 목록 자료구조들 소켓 설정 소켓 연결 소켓 통신 소켓 제어 이진/스트링 변환 호스트 및 서비스 정보
이번에 비제이퍼블릭에서 출간할 책은 위의 도서의제2판의 번역서로써 현재 출간 예정일은 2009년 10월 30일입니다.
TCP/IP Sokets in C : Practical Gudie for Programmers 2/e / 9780123745408 / 2009
위의 도서 소개에서도 알 수 있듯이 1판은 페이지가 200쪽(역자분께서 추가한 부분을 제외한면 약 160페이지)이 채 되지가 않습니다. 그래서 그런지 이 책을 읽으신 독자분들의 리뷰도 극과 극을 달리는 내용들이 많았는데, 간단히 정리해보니 다음과 같은 장단점을 발견할 수 있었습니다.
장점
도서 자체는 얇지만 내용은 충실하다.
분량도 작고 핵심만 있어서 시중의 두꺼운 네트워크 서적으로 처음 시작하기가 부담이 되는 분들에게 추천하고 싶은 책이다.
이론에 치우치지 않고 실질적인 예제와 설명으로 구성되어 있다.
얇지만 강력하다.
단점
너무 얇아서 참고용으로는 볼만 하지만 다른 서적의 도움을 받아야 한다.
소스코드가 유닉스 기반으로 되어 있어 윈도우에서는 사용이 불가능하다.
얇기는 하지만 내용이 너무 함축적이여서 만만하지가 않다.
장점이자 단점
교재로써 딱 맞는 책이다.
이 책의 1판의 출간이 2001년도 였으니(원서는 2000년) 이번 2판은 약 8년만에 출간이 되었고, 도서의 역자 머리말을 읽어보면 다음과 같이 1판의 개정판인 2판을 출간하게된 계기를 적어놓았습니다.
두 가지의 중요한 생각들이 이번 2판을 내놓게 된 계기가 되었다. 첫 번째는 우리가 느낀 경험들과 다른 사람들로부터의 의견을 통해서 몇몇 주제들은 더욱 깊게 파고들고, 다른 몇몇의 주제들은 좀더 폭넓은 설명이 필요하다고 생각했기 때문이다. 두 번째로는 광범위하게 증가되고 있는 IPv6 때문이었다. 비록 지금은 IPv6가 인터넷을 장악할 것이라고 말하는 것이 이르다고 생각할지 모르겠지만, 그 때를 준비하기 위한 응용프로그램을 만들기에는 시기적으로 결코 이르다고 말할 수 없다.
마치 저자들이 한국 독자의 목소리를 듣기라도 했듯이, 2판은 IPv6의 내용을 포함하여 기존의 내용에 더욱 살을 붙여 원서의 경우 약 100쪽의 분량이 늘었으며 ,번역서로는 기존의 180쪽에서 약 70쪽 정도가 늘어서 250쪽 정도의 도서로 출간이 될 것 같습니다. 또한, 역자분께서 친절히 모든 코드가 변경 없이 윈도우에서도 돌아갈 수 있는 환경을 만들 수 있도록 부록으로 추가하여 재구성 하였습니다.
비록 이번 2판은 1판에 비해 양적으로 다루는 범위가 상당히 많아진 것은 사실이나, 우리는 이 책이 여전히 실무적인 본 역할에 충실하기를 바라고 있다. 이 책은 유용한 코드를 작성하고자 하는 실무자들을 위한 단 한 권의 입문 도서로도 전혀 손색이 없다. 하지만 전문가용으로는 충분치 않다는 것을 밝히고 싶다. ‘실습을 하면서 배운다’라는 우리의 철학은 변함이 없다. 또한 혼자 학습하여 배우기를 원하는 사람에게 간결한 자습서 기능을 제공하고, 다른 복잡한 면들은 또 다른 저자들에게 남겨둔다는 우리의 방식도 여전히 변함이 없다. 우리의 목표는 학생, 실무자 그리고 모든 독자들에게 본인이 스스로 실험하고 스스로 학습을 시작할 수 있도록 하는 환경을 제공하는 것이다.
그러나 좀 더 자세한 내용을 위한 분량이 늘었음에도 불구하고, 위와 같은 역자들만의 철학으로 인해 독자들과 지인들의 요구사항들을 모두 책에 포함시키지는 않았으며 여전히 C와 유닉스 기반 시스템에 대한 기본적인 경험을 요구하고 있습니다. 즉, 다음의 코드를 이해하는 정도면 이 책을 보는데 아무 무리가 없다고 합니다. 물론, 이해를 하지 못해도 코드 자체에 대단한 것은 없으니 다른 C 책을 참고하여 코드가 어떻게 진행이 되는지 확인 하시고 시작하시길 바랍니다.
마지막으로 1판과의 차이점을 간략히 적어드리고 다음에는 목차와 샘플 챕터 등 조금 더 자세한 정보를 알려드리도록 하겠습니다. 1. IPv6를 다룸. IPv4 전용, IPv6 전용, IPv4-IPv6범용(Generic) 코드 포함C++기반의 소켓프로그래밍 장을 추가 2. PracticalSocket 라이브러리는 C++소켓 라이브러리로써 C기반의 기본 기능을 포함하는 래퍼(wrapper) 클래스 기능을 제공 3. 데이터 표현에 관련된 부분과 데이터 송수신 메시지를 구성하는 방법에 관련된 코드 구성을 강화 4.API 참조 목록 삭제. 소켓 API를 구성하는 대부분의 함수에 대한 설명들은 초반의 장들에서 모두 소개되며,또한 “man 페이지”와 같은 수많은 API 정보들이 온라인 상에 존재함으로써 우리는 더 많은 코드 설명을 위해서 API 레퍼런스를 빼버리기로 결정.
댓글 영역