이미 소장하고 있다면 판매해 보세요.
|
1부 소켓 프로그래밍 기본
1장 소켓 프로그래밍 입문 1.1 소켓이란 1.2 소켓과 입출력 1.3 통신 프로토콜 1.3.1 인터넷 프로토콜(인터넷 계층 or 네트워크 계층) 1.3.2 전송 계층 프로토콜 1.3.3 네트워크 인터페이스 계층(데이터링크 계층) 1.3.4 패킷 캡슐화 1.3.5 소켓 프로그래밍 입장에서 본 통신 프로토콜 1.4 클라이언트 서버 모델 2장 소켓 API 2.1 네트워크 주소 2.1.1 IP 주소의 클래스 2.1.2 CIDR: Classless Inter-Domain Routing 2.1.3 개인 IPv4 주소 공간과 Loopback 인터페이스 주소 2.1.4 포트 번호 2.1.5 호스트 이름(Host Name) 2.2 소켓 주소 2.3 바이트 순서 2.4 주소 변환 2.4.1 IP 주소 변환 2.4.2 호스트 이름과 IP 주소 2.5 간단한 소켓 프로그램 2.5.1 서버 프로그램 2.5.2 클라이언트 프로그램 2.5.3 서버/클라이언트 프로그램의 실행 결과 2.6 에러처리 3장 TCP 소켓 3.1 TCP 기본 3.1.1 TCP 헤더 3.1.2 TCP의 상태 3.1.3 TCP 흐름 제어 3.2 서버 프로그램 3.2.1 클라이언트의 접속 요청 처리 3.2.2 입출력 진행 3.3 클라이언트 프로그램 3.3.1 연결 요청 3.3.2 연결 종료 3.4 Iterative 서버 모델 3.4.1 리눅스 기반 Iterative 서버 예제 3.4.2 윈도우즈 기반 Iterative 서버 예제 4장 UDP 소켓 프로그래밍 4.1 UDP 일반 4.1.1 UDP의 특징 4.1.2 UDP 헤더 4.1.3 UDP 소켓 4.2 UDP 서버 클라이언트 모델 4.2.1 소켓 생성 4.2.2 데이터 전송 4.2.3 데이터 수신 4.3 UDP 소켓 관련 사항 4.3.1 클라이언트의 주소 지정 4.3.2 다수의 클라이언트 처리 4.3.3 connect 함수의 역할 4.4 리눅스 응용 프로그램 예제 4.4.1 UDP 클라이언트 프로그램 4.4.2 예제프로그램 실행 4.5 윈도우즈 응용 프로그램 예제 4.5.1 서버 프로그램 4.5.2 클라이언트 프로그램 4.5.3 예제 프로그램 실행 2부 다중 접속 서버 모델 5장 멀티 프로세스 5.1 단일 프로세스 서버 프로그램의 한계 5.2 부모 프로세스와 자식 프로세스 5.2.1 fork 시스템 호출 5.2.2 자식 프로세스의 종료 5.2.3 fork 예제 5.3 멀티 프로세스 서버 프로그램 예제 5.4 멀티 프로세스 클라이언트 프로그램 예제 5.4.1 UDP 채팅 서버 프로그램 제작 5.4.2 UDP 채팅 클라이언트 프로그램 제작 6장 프로세스 사이의 통신 6.1 시그널 6.1.1. 시그널의 종류 6.1.2 signal 함수 6.1.3 sigaction 함수 6.1.4 좀비(Defunct) 프로세스 6.1.5 좀비 프로세스 생성 방지 6.1.6 시그널 발생 6.2 파이프 6.3 공유 메모리 6.4 세마포어 6.4.1 크리티컬 섹션에 대한 접근 방법 6.4.2 세마포어의 사용 6.4.3 세마포어와 공유 메모리 6.5 메시지 큐 6.6 IPC와 소켓 프로그래밍 7장 입출력과 소켓 7.1 입출력 전반 7.1.1 파일 디스크립터, 파일 테이블, 파일 7.1.2 파일 디스크립터 테이블과 열린 파일 테이블의 엔트리(Entry) 7.1.3 close 함수에 대한 재 논의 7.2 소켓 전용 입출력 함수 7.2.1 Urgent 데이터 7.3 표준 입출력 함수 7.3.1 스트림 7.3.2 표준 입출력 버퍼 관리 7.3.3 표준 입출력 함수를 이용한 소켓 프로그래밍 7.3.4 입출력 분리와 Half Close 8장 멀티스레딩을 활용한 다중 접속 서버 8.1 스레드 8.1.1 스레드의 생성 8.1.2 스레드 사이의 통신 8.2 스레드와 소켓 프로그래밍 8.2.1 스레드를 이용한 서버 프로그램 8.3 윈도우즈에서의 멀티스레딩 8.3.1 스레드의 생성 8.3.2 스레드의 종료 처리 8.3.3 동기화 방법 8.3.4 윈도우즈 환경에서 멀티스레딩을 활용한 서버 프로그램 9장 멀티플렉싱 기법 9.1 멀티플렉싱 9.2 select 함수의 활용 9.3 WSAEventSelect 함수의 활용 10장 소켓 옵션 10.1 소켓의 옵션 10.1.1 SO_REUSEADDR 10.1.2 SO_SNDBUF와 SO_RCVBUF 10.2 소켓 이외의 계층 10.2.1 TCP_NODELAY 10.2.2 IP_TOS 11장 RAW Socket 11.1 통신 프로토콜과 소켓 11.2 RAW Socket 11.2.1 IP_HDRINCL 옵션 11.2.2 IP 헤더 Checksum 11.2.3 TCP Checksum 11.3 RAW 소켓에서의 패킷 수신 12장 epoll 12.1 epoll 소개 12.1.1 epoll 객체 생성 12.1.2 epoll 객체의 제어 12.1.3 모니터링 12.2 epoll의 활용 12.3 Epoll Edge Triggered 모드의 활용 12.4 epoll의 장단점 13장 Windows 고급 네트워크 프로그래밍 13.1 윈속(Winsock) 일반 13.2 동기 입출력/비동기 입출력 13.2.1 비동기 입출력 모드를 사용하는 소켓 생성 13.2.2 OVERLAPPED 구조체 13.2.3 이벤트 처리 13.2.4 Overlapped I/O 결과 13.2.5 Overlapped I/O를 위한 WSASend 함수와 WSARecv 함수 13.3 Overlapped I/O(이벤트 처리) 13.4 Overlapped I/O(완료 루틴) 13.5 IOCP 14장 IPv6 14.1 IPv6 14.1.1 IPv6 주소 14.1.2 IPv6 통신 14.2 IPv6 관련 함수 14.2.1 IPv6 주소의 표현 14.2.2 IPv6 소켓을 위한 주소 처리 14.3 IPv6 소켓 프로그래밍 14.4 도메인 네임 서비스 관련 함수 14.5 IPv4와 IPv6 모두를 지원하는 소켓 프로그래밍 3부 소켓 프로그래밍 응용 15장 Packet Socket 15.1 PACKET SOCKET 15.1.1 이더넷(Ethernet) 프로토콜 15.1.2 네트워크 어뎁터 정보 15.1.3 네트워크 계층 주소 15.1.4 패킷 전송/수신 예제 15.2 PACKET SOCKET 응용 15.2.1 ARP(Address Resolution Protocol) 15.2.2 ARP 스캔 프로그램 16장 응용 프로그램 16.1 DHCP 서버 프로그램 16.1.1 DHCP 메시지 포멧 16.1.2 DHCP 메시지 교환 16.1.3 DHCP 서버 프로그램 16.2 간단한 웹 서버 프로그램 16.2.1 웹 서버 16.2.2 HTTP 16.2.3 웹 서버 프로그램 |
|
이 책의 구성
1부. 소켓 프로그래밍 기본 1부에서는 독자들이 소켓 API에 익숙해지는 것을 목표로 한다. 1장에서는 소켓의 정의를 소개하고 입출력 관점에서 소켓의 개념에 대해 접근한다. 또한, 소켓 동작 방식에 대한 이해를 돕고자 컴퓨터 네트워크의 핵심인 TCP/IP 프로토콜들을 소개한다. 2장에서는 소켓 API에 대한 소개를 통해 소켓 관련 함수들에 대해 배운다. 3장과 4장에서는 대표적인 전송계층 프로토콜인 TCP와 UDP를 이용하는 소켓 프로그램을 소개하고 소켓 프로그램의 구조에 대한 독자들의 이해도를 높이는 것을 목표로 한다. 2부. 소켓 프로그래밍 고급 2부에서는 동시에 여러 클라이언트의 요청을 처리할 수 있는 다중 접속 서버 모델을 소개하고 이와 더불어 1부에서 다루진 못한 소켓의 확장 기능들을 소개하는 것을 목표로 한다. 5~6장에서는 멀티프로세스, 8장에서는 멀티 스레드, 9장에서는 멀티 플렉싱, 12장에서는 리눅스 epoll, 13장에서는 윈도우에서의 다중 접속 서버 모델을 다룬다. 또한, 소켓의 확장 기능을 다루고자 7장에서는 소켓 입출력, 10장에서는 소켓 옵션, 11장에서는 RAW 소켓, 14장에서는 IPv6를 위한 소켓 프로그래밍을 소개한다. 3부. 소켓 프로그래밍 응용 15, 16장에서는 구체적인 예제 프로그램을 소개하여 1부 2부에서 다룬 기술을 실제 적용하는 연습을 하는 것을 목표로 한다. 15장에서는 네트워크 어댑터 레벨까지 제어할 수 있는 Packet Socket을 소개하고 ARP 스캐너 프로그램 작성을 통해 실 사용되는 프로토콜의 동작을 익히고 제어하는 연습을 한다. 16장에서는 DHCP 서버와 웹 서버 예제를 통해 응용계층 프로토콜 구현에 대해 알아볼 기회를 제공한다. |