책이름: TCP/IP 소켓 프로그래밍
저  자: 윤성우
출판사: 프리렉
장  수: 547쪽

소개해 드리는 "TCP/IP 소켓 프로그래밍"은 제가 아끼는 책 중에 하나입니다. 윈도우 프로그램에서는 미리 준비된 라이브러리로 필요한 함수만 이해해서 작성했습니다만, Embedded List System을 개발하기 위해서는 TCP/IP에 대해 어느 정도 해박한 지식이 필요합니다.

  "TCP/IP 소켓 프로그래밍"은 어려운 TCP/IP 내용을,

  • 옆에서 얘기해 주듯이 읽기 편하게 작성되었고
  • 쉬운 설명과 함께 적당한 예제와 그림으로 이해를 돕고 있습니다.
  • 예제는 리눅스와 윈도즈 모두 제공되며
  • 아래 목차를 보시면 아시겠지만 TCP/IP에 대한 얘기 뿐만 아니라
    Linux 프로그래밍에 대한 설명도 매우 잘 되어 있습니다.
  • 출판사 홈페이지를 방문하면 저자가 직접 작성한 인터넷 강좌를 보실 수 있습니다.

  인터넷 강의에는 책에 담기 어려운 내용이나 저자의 경험을 곁들여 유머러스하게 진행되는데, 책 내용을 이해하는데 큰 도움을 줍니다.

  아래는 책의 목차입니다.

머리말
온라인 강의 안내
목차

Part 1 네트워크 프로그래밍의 시작

  1. 네트워크 프로그래밍과 소켓의 이해
    1. 네트워크 프로그래밍의 이해
    2. 소켓 이해하기
    3. 파일 조작하기
    4. 윈도우즈 기반으로 구현하기
  2. 소켓의 생성과 프로토콜의 설정
    1. 프로토콜의 정의
    2. 소켓의 생성
    3. 프로토콜 체계(Protocol Family)
    4. 소켓의 타입
    5. 프로토콜의 선택
    6. 윈도우즈 기반으로 구축하기
  3. 주소 체계와 데이터 정렬
    1. Internet Address
    2. Port란 무엇인가?
    3. 주소 정보의 표현
    4. 네트워크 바이트 순서
    5. 인터넷 주소 조작하기
    6. 인터넷 주소 초기화
    7. 주소 정보 할당하기
    8. 윈도우즈 기반으로 구현하기
    9. WSAStringToAddress & WSAAddressToString
  4. TCP 기반 서버/클라이언트 1
    1. TCP/UDP에 대한 이해
    2. TCP 기반 서버의 구현
    3. TCP 기반 클라이언트의 구현
    4. TCP 서버/클라이언트 함수 호출 관계
    5. Iterative 서버의 구현
    6. 에코(echo) 서버/클라이언트의 구현
    7. 윈도우즈 기반으로 구현하기
  5. TCP 기반 서버/클라이언트 2
    1. 에코 클라이어트! TCP 기반에서의 완벽 구현
    2. 경계(Boundary)가 없는 TCP 기반의 데이터 전송
    3. TCP의 내부 구조
    4. 윈도우즈 기반으로 구현하기
  6. UDP 기반 서버/클라이언트
    1. UDP에 대한 이해
    2. UDP 기반 서버/클라이언트의 구현
    3. 데이터의 경계(Boundary)가 존재하는 UDP소켓
    4. connect 함수 호출을 통한 성능의 향상
    5. 윈도우즈 기반으로 구현하기
  7. 소켓 연결의 우아한 종료
    1. 소켓 연결 종료의 문제점
    2. 우아한 소켓의 연결 종료
    3. 윈도우즈 기반으로 구현하기
  8. 도메인 이름과 인터넷 주소
    1. DNS(Domain Name System)
    2. IP 주소와 도메인 이름 사이의 변환
    3. 윈도우즈 기반으로 구현하기
  9. 소켓의 다양한 옵션
    1. 소켓의 옵션
    2. SQ_SNDBUF & SO_RCVBUF
    3. SO_REUSEADDR
    4. TCP_NODELAY
    5. 윈도우즈 기반으로 구현하기
  10. 멀티태스킹 기반의 서버구현
    1. 다중 접속 서버의 구현 방법들
    2. 프로세스(Process)의 생성
    3. 프로세스 & 좀비(Zombie) 프로세스
    4. 시그널(Signal) 핸들링 & 좀비(Zombie) 프로세스
    5. fork 함수를 이용한 다중 접속 서버의 구현
    6. TCP 입/출력 루틴(Routine) 분할하기
  11. 프로세스간 통신(IPC)
    1. 프로세스간 통신(Inter-Process Communication)
    2. 가위 바위 보 게임 구현하기
  12. IO 멀티플렉싱(multiplexing)
    1. I/O 멀티플렉싱 기반의 서버
    2. select 함수 사용하기
    3. 멀티플렉싱 서버의 구현
    4. 윈도우즈 기반으로 구현하기
  13. 고급 소켓 입/출력
    1. recv & send 입/출력 함수
    2. readv & writev 입/출력 함수
    3. 윈도우즈 기반으로 구현하기
  14. Multicast & Broadcast
    1. 멀티캐스트(Multicast)
    2. 브로드캐스트(Broadcast)
    3. 윈도우즈 기반으로 구현하기

Part 2 리눅스 기반 프로그래밍

  1. 소켓과 표준 입/출력
    1. 표준 입/출력 함수의 장점
    2. 표준 입/출력 함수의 사용
    3. 소켓 기반의 표준 입/출력 함수의 사용
  2. 입력과 출력 스트림의 완벽 분리
    1. 스트림의 분리
    2. 파일 디스크립터의 복사와 스트림의 분리
  3. 멀티쓰레드 기반의 서버구현
    1. 프로세스(Process)와 쓰레드(Thread)
    2. 쓰레드 생성하기
    3. 임계 영역 & 쓰레드의 문제점
    4. 동기화(Synchronization)
    5. 뮤텍스(MUtex)
    6. 세마포어(Semaphore)
    7. 쓰레드 기반 서버 구현하기

Part 3 윈도우즈 기반 프로그래밍

  1. 윈도우즈 기반 쓰레드 사용하기
    1. 커널 오브젝트(Kernel Objects)
    2. 윈도우즈 기반의 쓰레드 생성
    3. Signaled & Non-Signaled 커널 오브젝트
    4. 멀티 쓰레드 프로그래밍의 문제점
  2. 윈도우즈 기반의 쓰레드 동기화
    1. 쓰레드 동기화 기법의 분류
    2. CRITICAL_SECTION
    3. Mutex(Mutual Exclusion)
    4. Semaphore
    5. Event
    6. 멀티 쓰레드 기반의 서버구현
  3. 비동기 Notification 입/출력 모델
    1. 비동기 Notification의 의미
    2. WSAEventSelect 모델 기반 서버 구현을 위한 API
    3. WSAEventSelect 모델 기반의 에코 서버 구현
  4. Overlapped 입/출력 모델
    1. Overlapped 입/출력의 의미
    2. Overlapped 입/출력을 위한 기본 단계
    3. Event 커널 오브젝트 기반의 Overlapped I/O
    4. Completion Routines 기반의 Overlapped I/O
  5. Completion Port 입/출력 모델
    1. completion Port 입/출력 기본 원리
    2. completion Port 입/출력을 위한 기본 단계
    3. completion Port 입/출력 기반의 서버 구현

Part 4 네트워크 프로그래밍 마무리하기

  1. HTTP 서버 제작하기
    1. HTTP(Hypertext Transfer Protocol)의 개요
    2. Simple 웹 서버 구현하기
  2. 앞으로 해야 할 것들
    1. Network Programming과 System Programming은 같다
    2. Network와 Protocol를 알아야 한다
    3. Windows와 Linux를 더불어 사랑하자