네트워크 프로그래밍
도서명:네트워크 프로그래밍
저자/출판사:최지훈/프리렉
쪽수:560쪽
출판일:2014-10-23
ISBN:9788965400820
목차
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 웹 서버 프로그램