권장도서
글 수 30
책이름: TCP/IP 소켓 프로그래밍 저 자: 윤성우 출판사: 프리렉 장 수: 547쪽
소개해 드리는 "TCP/IP 소켓 프로그래밍"은 제가 아끼는 책 중에 하나입니다. 윈도우 프로그램에서는 미리 준비된 라이브러리로 필요한 함수만 이해해서 작성했습니다만, Embedded List System을 개발하기 위해서는 TCP/IP에 대해 어느 정도 해박한 지식이 필요합니다.
"TCP/IP 소켓 프로그래밍"은 어려운 TCP/IP 내용을,
- 옆에서 얘기해 주듯이 읽기 편하게 작성되었고
- 쉬운 설명과 함께 적당한 예제와 그림으로 이해를 돕고 있습니다.
- 예제는 리눅스와 윈도즈 모두 제공되며
- 아래 목차를 보시면 아시겠지만 TCP/IP에 대한 얘기 뿐만 아니라
Linux 프로그래밍에 대한 설명도 매우 잘 되어 있습니다. - 출판사 홈페이지를 방문하면 저자가 직접 작성한 인터넷 강좌를 보실 수 있습니다.
인터넷 강의에는 책에 담기 어려운 내용이나 저자의 경험을 곁들여 유머러스하게 진행되는데, 책 내용을 이해하는데 큰 도움을 줍니다.
아래는 책의 목차입니다.
머리말
온라인 강의 안내
목차Part 1 네트워크 프로그래밍의 시작
- 네트워크 프로그래밍과 소켓의 이해
- 네트워크 프로그래밍의 이해
- 소켓 이해하기
- 파일 조작하기
- 윈도우즈 기반으로 구현하기
- 소켓의 생성과 프로토콜의 설정
- 프로토콜의 정의
- 소켓의 생성
- 프로토콜 체계(Protocol Family)
- 소켓의 타입
- 프로토콜의 선택
- 윈도우즈 기반으로 구축하기
- 주소 체계와 데이터 정렬
- Internet Address
- Port란 무엇인가?
- 주소 정보의 표현
- 네트워크 바이트 순서
- 인터넷 주소 조작하기
- 인터넷 주소 초기화
- 주소 정보 할당하기
- 윈도우즈 기반으로 구현하기
- WSAStringToAddress & WSAAddressToString
- TCP 기반 서버/클라이언트 1
- TCP/UDP에 대한 이해
- TCP 기반 서버의 구현
- TCP 기반 클라이언트의 구현
- TCP 서버/클라이언트 함수 호출 관계
- Iterative 서버의 구현
- 에코(echo) 서버/클라이언트의 구현
- 윈도우즈 기반으로 구현하기
- TCP 기반 서버/클라이언트 2
- 에코 클라이어트! TCP 기반에서의 완벽 구현
- 경계(Boundary)가 없는 TCP 기반의 데이터 전송
- TCP의 내부 구조
- 윈도우즈 기반으로 구현하기
- UDP 기반 서버/클라이언트
- UDP에 대한 이해
- UDP 기반 서버/클라이언트의 구현
- 데이터의 경계(Boundary)가 존재하는 UDP소켓
- connect 함수 호출을 통한 성능의 향상
- 윈도우즈 기반으로 구현하기
- 소켓 연결의 우아한 종료
- 소켓 연결 종료의 문제점
- 우아한 소켓의 연결 종료
- 윈도우즈 기반으로 구현하기
- 도메인 이름과 인터넷 주소
- DNS(Domain Name System)
- IP 주소와 도메인 이름 사이의 변환
- 윈도우즈 기반으로 구현하기
- 소켓의 다양한 옵션
- 소켓의 옵션
- SQ_SNDBUF & SO_RCVBUF
- SO_REUSEADDR
- TCP_NODELAY
- 윈도우즈 기반으로 구현하기
- 멀티태스킹 기반의 서버구현
- 다중 접속 서버의 구현 방법들
- 프로세스(Process)의 생성
- 프로세스 & 좀비(Zombie) 프로세스
- 시그널(Signal) 핸들링 & 좀비(Zombie) 프로세스
- fork 함수를 이용한 다중 접속 서버의 구현
- TCP 입/출력 루틴(Routine) 분할하기
- 프로세스간 통신(IPC)
- 프로세스간 통신(Inter-Process Communication)
- 가위 바위 보 게임 구현하기
- IO 멀티플렉싱(multiplexing)
- I/O 멀티플렉싱 기반의 서버
- select 함수 사용하기
- 멀티플렉싱 서버의 구현
- 윈도우즈 기반으로 구현하기
- 고급 소켓 입/출력
- recv & send 입/출력 함수
- readv & writev 입/출력 함수
- 윈도우즈 기반으로 구현하기
- Multicast & Broadcast
- 멀티캐스트(Multicast)
- 브로드캐스트(Broadcast)
- 윈도우즈 기반으로 구현하기
Part 2 리눅스 기반 프로그래밍
- 소켓과 표준 입/출력
- 표준 입/출력 함수의 장점
- 표준 입/출력 함수의 사용
- 소켓 기반의 표준 입/출력 함수의 사용
- 입력과 출력 스트림의 완벽 분리
- 스트림의 분리
- 파일 디스크립터의 복사와 스트림의 분리
- 멀티쓰레드 기반의 서버구현
- 프로세스(Process)와 쓰레드(Thread)
- 쓰레드 생성하기
- 임계 영역 & 쓰레드의 문제점
- 동기화(Synchronization)
- 뮤텍스(MUtex)
- 세마포어(Semaphore)
- 쓰레드 기반 서버 구현하기
Part 3 윈도우즈 기반 프로그래밍
- 윈도우즈 기반 쓰레드 사용하기
- 커널 오브젝트(Kernel Objects)
- 윈도우즈 기반의 쓰레드 생성
- Signaled & Non-Signaled 커널 오브젝트
- 멀티 쓰레드 프로그래밍의 문제점
- 윈도우즈 기반의 쓰레드 동기화
- 쓰레드 동기화 기법의 분류
- CRITICAL_SECTION
- Mutex(Mutual Exclusion)
- Semaphore
- Event
- 멀티 쓰레드 기반의 서버구현
- 비동기 Notification 입/출력 모델
- 비동기 Notification의 의미
- WSAEventSelect 모델 기반 서버 구현을 위한 API
- WSAEventSelect 모델 기반의 에코 서버 구현
- Overlapped 입/출력 모델
- Overlapped 입/출력의 의미
- Overlapped 입/출력을 위한 기본 단계
- Event 커널 오브젝트 기반의 Overlapped I/O
- Completion Routines 기반의 Overlapped I/O
- Completion Port 입/출력 모델
- completion Port 입/출력 기본 원리
- completion Port 입/출력을 위한 기본 단계
- completion Port 입/출력 기반의 서버 구현
Part 4 네트워크 프로그래밍 마무리하기
- HTTP 서버 제작하기
- HTTP(Hypertext Transfer Protocol)의 개요
- Simple 웹 서버 구현하기
- 앞으로 해야 할 것들
- Network Programming과 System Programming은 같다
- Network와 Protocol를 알아야 한다
- Windows와 Linux를 더불어 사랑하자
이책 저도 보고있는데 진짜 좋더군요 ㅎㅎ 특히 강의와 함께보면 진짜 이해도 쏙쏙되고~ 진짜 기초다지기엔 제격인듯 ㅎㅎ