TCP/IP 소켓 프로그래밍 책을 추천하고자 한다.
리눅스와 윈도우 기반에서의 소켓 프로그래밍을 함께 설명하며, 초보자에게 적절한 설명과 예제를 통해서 소켓 프로그래밍에 대한 재미를 안겨주고자 한 책이다. 2003년도에 출간된 <열혈강의 TCP/IP 소켓 프로그래밍>의 개정판.
초판과 마찬가지로 리눅스와 윈도우 기반에서의 소켓 프로그래밍을 함께 설명하며, 초보자에게 적절한 설명과 예제를 통해서 소켓 프로그래밍에 대한 재미를 더하고 있다.
우선 초판과 달라진 점은 설명의 포인트와 분량이다. 간단히 설명해도 되는 내용은 보다 간단하고 명료하게 설명하였으며, 자세한 설명이 요구되는 경우에는 설명의 분량을 늘려가면서까지 확실한 이해를 돕고 있다. 또한 시대의 흐름에 맞게 epoll에 대한 내용이 하나의 Chapter로 추가되었다. 특히 윈도우 영역의 Overlapped IO와 IOCP에 대한 설명방식에는 큰 변화가 있었다.
< 저자소개 >
윤성우
윤성우(RIPENESS21@GMAIL.COM)
벤처회사에서 개발자로 일하던 저자는 IT분야의 집필과 강의로 처음 이름이 알려졌으며, 2004년부터 지금까지 OPENGL-ES 그래픽스 라이브러리의 구현과 3D 가속 칩의 개발 및 크로노스 그룹(모바일 국제 표준화 컨소시엄)의 표준안에 관련된 일에 참여하였다. 또한 핸드폰용 DMB 칩의 개발에도 참여하였으며, 현재는 ㈜액시스소프트의 CTO로 있으면서 웹 기반 솔루션 개발에 관심을 갖고 있다.
< 목차 >
Part 01 네트워크 프로그래밍의 시작
Chapter01 네트워크 프로그래밍과 소켓의 이해
01-1 네트워크 프로그래밍과 소켓의 이해
01-2 리눅스 기반 파일 조작하기
01-3 윈도우 기반으로 구현하기
01-4 윈도우 기반의 소켓관련 함수와 예제
내용확인 문제
Chapter 02 소켓의 타입과 프로토콜의 설정
02-1 소켓의 프로토콜과 그에 따른 데이터 전송 특성
02-2 윈도우 기반에서 이해 및 확인하기
내용확인 문제
Chapter 03 주소체계와 데이터 정렬
03-1 소켓에 할당되는 IP주소와 PORT번호
03-2 주소정보의 표현
03-3 네트워크 바이트 순서와 인터넷 주소 변환
03-4 인터넷 주소의 초기화와 할당
03-5 윈도우 기반으로 구현하기
내용확인 문제
Chapter 04 TCP 기반 서버/클라이언트 1
04-1 TCP와 UDP에 대한 이해
04-2 TCP기반 서버, 클라이언트 구현
04-3 Iterative 기반의 서버, 클라이언트 구현
04-4 윈도우 기반으로 구현하기
내용확인 문제
Chapter 05 TCP 기반 서버/클라이언트 2
05-1 에코 클라이언트의 완벽 구현!
05-2 TCP의 이론적인 이야기!
05-3 윈도우 기반으로 구현하기
내용확인 문제
Chapter 06 UDP 기반 서버/클라이언트
06-1 UDP에 대한 이해
06-2 UDP 기반 서버/클라이언트의 구현
06-3 UDP의 데이터 송수신 특성과 UDP에서의 connect 함수호출
06-4 윈도우 기반으로 구현하기
내용확인 문제
Chapter 07 소켓의 우아한 연결종료
07-1 TCP 기반의 Half-close
07-2 윈도우 기반으로 구현하기
내용확인 문제
Chapter 08 도메인 이름과 인터넷 주소
08-1 Domain Name System
08-2 IP주소와 도메인 이름 사이의 변환
08-3 윈도우 기반으로 구현하기
내용확인 문제
Chapter 09 소켓의 다양한 옵션
09-1 소켓의 옵션과 입출력 버퍼의 크기
09-2 SO_REUSEADDR
09-3 TCP_NODELAY
09-4 윈도우 기반으로 구현하기
내용확인 문제
Chapter 10 멀티프로세스 기반의 서버구현
10-1 프로세스의 이해와 활용
10-2 프로세스 & 좀비(Zombie) 프로세스
10-3 시그널 핸들링
10-4 멀티태스킹 기반의 다중접속 서버
10-5 TCP의 입출력 루틴(Routine) 분할
내용확인 문제
Chapter 11 프로세스간 통신(Inner Process Communication)
11-1 프로세스간 통신의 기본 개념
11-2 프로세스간 통신의 적용
내용확인 문제
Chapter 12 IO 멀티플렉싱(Multiplexing)
12-1 IO 멀티플렉싱 기반의 서버
12-2 select 함수의 이해와 서버의 구현
12-3 윈도우 기반으로 구현하기
내용확인 문제
Chapter 13 다양한 입출력 함수들
13-1 send & recv 입출력 함수
13-2 readv & writev 입출력 함수
13-3 윈도우 기반으로 구현하기
내용확인 문제
Chapter 14 멀티캐스트 & 브로드캐스트
14-1 멀티캐스트(Multicast)
14-2 브로드캐스트(Broadcast)
14-3 윈도우 기반으로 구현하기
내용확인 문제
Part 02 리눅스 기반 프로그래밍
Chapter 15 소켓과 표준 입출력
15-1 표준 입출력 함수의 장점
15-2 표준 입출력 함수 사용하기
15-3 소켓 기반에서의 표준 입출력 함수 사용
내용확인 문제
Chapter 16 입출력 스트림의 분리에 대한 나머지 이야기
16-1 입력 스트림과 출력 스트림의 분리
16-2 파일 디스크립터의 복사와 Half-close
내용확인 문제
Chapter 17 select보다 나은 epoll
17-1 epoll의 이해와 활용
17-2 레벨 트리거(Level Trigger)와 엣지 트리거(Edge Trigger)
내용확인 문제
Chapter 18 멀티쓰레드 기반의 서버구현
18-1 쓰레드의 이론적 이해
18-2 쓰레드의 생성 및 실행
18-3 쓰레드의 문제점과 임계영역(Critical Section)
18-4 쓰레드 동기화
18-5 쓰레드의 소멸과 멀티쓰레드 기반의 다중접속 서버의 구현
내용확인 문제
Part 03 윈도우 기반 프로그래밍
Chapter 19 Windows에서의 쓰레드 사용
19-1 커널 오브젝트(Kernel Objects)
19-2 윈도우 기반의 쓰레드 생성
19-3 커널 오브젝트의 두 가지 상태
내용확인 문제
Chapter 20 Windows에서의 쓰레드 동기화
20-1 동기화 기법의 분류와 CRITICAL_SECTION 동기화
20-2 커널모드 동기화 기법
20-3 윈도우 기반의 멀티 쓰레드 서버 구현
내용확인 문제
Chapter 21 Asynchronous Notification IO 모델
21-1 비동기(Asynchronous) Notification IO 모델의 이해
21-2 비동기(Asynchronous) Notification IO 모델의 이해와 구현
내용확인 문제
Chapter 22 Overlapped IO 모델
22-1 Overlapped IO 모델의 이해
22-2 Overlapped IO에서의 입출력 완료의 확인
내용확인 문제
Chapter 23 IOCP(Input Output Completion Port)
23-1 Overlapped IO를 기반으로 IOCP 이해하기
23-2 IOCP의 단계적 구현
내용확인 문제
Part 04 네트워크 프로그래밍 마무리하기
Chapter 24 HTTP 서버 제작하기
24-1 HTTP(Hypertext Transfer Protocol)의 개요
24-2 매우 간단한 웹 서버의 구현
내용확인 문제
Chapter 25 앞으로 해야 할 것들
25-1 네트워크 프로그래밍! 얼마나 공부해야 하나요?
25-2 네트워크 프로그래밍 관련 책 소개