나에게 필요한 지식과 기술을 검색해 보세요.

TCP/IP 소켓 프로그래밍

지은이

백창우, 최영호, 조경민, 윤경훈, 윤상배

출간일

2005.07.02

레벨

초중급

평점

3(1명)

정가

25,000

판매가

22,500

총 결제 금액

10%

22,500

적립 예정

1,120P

기본 개념에서 중고급 기능을 넘어 실무 응용으로 올라가는 계단식 학습법
  • 운영체제별 특성을 잘 살린 시스템 프로그래밍의 원리와 기초
  • 다중 서버와 멀티캐스트 등 단계별 예제 프로그램으로 높은 학습효과
  • 다중 연결 및 Robby-Room 구조의 채팅 프로젝트
지금 당장 돌아가기만 하면 된다?
복잡한 소켓 프로그래밍의 씨줄과 날줄을 파헤친다

소켓 프로그래밍은 listen()이니 accept()니 하는 함수 몇개로 프로그램을 뚝딱 만드는 아주 쉬운 작업이라고 생각할 수도 있다. 물론, 그러한 기초 지식만으로도 길버트(Gilbert)는 지구 반대편의 사라(Sarah)와 통(通)할 수 있다. 그러나, 여기에는 운영체제 및 네트워크 전반에 걸친 아주 복잡한 지식들이 씨줄과 날줄처럼 아주 단단하게 얽히고 설켜 있다. 바로 이 책은 소켓 프로그래밍을 위한 기초지식이 되는 씨줄과 날줄이 어떻게 연결되어 있는지를 파헤쳐주고 이를 효과적으로 활용하는 방법을 보여주는 책이다.

내가 보낸 메시지를 상대방이 받지 못했을 때 침착하게 그리고 구조적으로 그 원인을 찾아 나가는 독자의 모습, 그것을 보는 것이 필자의 작은 소망이다.

[무엇이 다른가]
  • 패킷의 이동경로를 따라 배우는 네트워크 기반지식
    내부구조와 동작원리를 알면 응용력이 커진다.
  • 진짜로 중요한 기본, 시스템 프로그래밍의 기초
    인터넷 프로그래밍도 결국엔 OS 위에서 돌아가야 하는 운명을 타고 났다.
  • 다중 연결 및 Robby-Room 구조의 채팅 프로젝트
    서버는 리눅스, 클라이언트는 윈도우, 똑같은 채팅 프로젝트는 사양한다.
[볼 만한 내용은]
  • 윈도우와 리눅스의 다중 접속처리
    MFC 리스트 클래스, 스레드, 프로세스를 이용한 다중접속 서버
  • Raw 소켓을 이용한 패킷 제어
    직접 만들어보는 패킷 캡처 프로그램(Ping과 스니퍼)
  • 장점과 문제점을 정확하게 짚고 해결해주는 MFC 소켓 프로그래밍
    멈춤현상 제거를 위한 CSocket 프로그램과 더 강력한 CAsyncSocket 프로그램
  • 윈도우즈에서 스레드를 사용하는 방법
    효율적인 성능을 위한 다양한 기법
  • 두 가지 윈속 입출력 모델 방식
    WSAAsyncSelect()와 WSEventSelect()
  • 고성능 소켓 프로그래밍
    리눅스(리얼타임 시그널 방식과 이벤트 기반 소켓 프로그래밍), 윈도우( IOCP 모델 기반 윈속 프로그래밍)
  • 고화질 멀티미디어 콘텐츠의 마술사
    멀티캐스트
  • 입문자가 반드시 알아야 할 네트워크 문제 해결법 요약 정리
    단절, 비정상적 종료 등

저자

목차

1부. 소켓 프로그래밍 맛보기와 네트워크의 이해  

1장. 소켓 프로그래밍 맛보기
01. 소켓 프로그래밍이란  
02. 처음 해보는 소켓 프로그래밍  
03. 실행과 테스트  
04. 무슨 일이 일어났는가  
이것만은 알고 갑시다  

2장. 네트워크의 기본 이론
01. 네트워크와 인터넷  
02. 네트워크의 물리적 구성 요소  
03. 인터넷이란  
04. 인터넷의 주소체계  
05. DNS  
06. 포트의 의미  
07. 프로토콜이란  
08. TCP/IP 프로토콜  
09. TCP/IP 네트워크 데이터 전송 과정의 이해  
10. OSI 모델 적용  
11. UDP

2부. 소켓 프로그래밍 맛보기와 네트워크의 이해

3장. 소켓의 동작 원리와 이해
01. 소켓의 기본 동작 방식  
02. 서버/클라이언트 개념  
03. 소켓으로 작성하는 서버/클라이언트 프로그램의 동작 방법  

4장. TCP 서버/클라이언트 프로그래밍
01. TCP 프로토콜의 특징과 활용    
02. TCP 클라이언트 프로그램 구현     
03. TCP 서버 프로그램 구현   

5장. UDP 서버/클라이언트 프로그래밍
01. UDP 프로토콜의 특징과 활용     
02. UDP 클라이언트 프로그램 구현    
03. UDP 서버 프로그램 구현      

3부. 중급 네트워크 프로그래밍 Ⅰ: 유닉스/리눅스

6장. 시스템 프로그래밍 기초
01. 왜 시스템 프로그래밍인가     
02. 파일 입출력 다루기  
03. 프로세스의 생성과 제어  
04. 포직스 시그널을 이용한 프로세스간 동기화     
05. IPC: 프로세스간 통신    
06. 스레드의 개념과 생성    

7장. 다중 접속 처리 서버 구현
01. 멀티 프로세스 모    
02. 멀티 스레드 모델    
03. I/O 멀티플렉싱 모델    

8장. 성능 향상을 위한 소켓 제어
01. 소켓 옵션의 개념과 설정 방법    
02. 성능 향상을 위한 소켓 옵션의 활용     

9장. RAW 소켓을 이용한 패킷 제어
01. RAW 소켓: 스위스 만능 칼   
02. RAW 소켓 프로그래밍  
03. RAW 소켓을 이용한 ping 프로그램 만들기    
04. RAW 소켓을 이용한 스니퍼 프로그램 만들기    

4부. 중급 네트워크 프로그래밍 Ⅱ: 윈도우

10장. MFC 윈도우 네트워크 프로그래밍
01. 간단한 MFC CSocket TCP 프로그램  
02. 제대로 된 MFC CSocket TCP 프로그램    
03. MFC CAsyncSocket TCP 프로그램   
04. MFC CAsyncSocket UDP 프로그램  

11장. 윈도우 스레드 프로그래밍
01. 들어가기에 앞서  
02. 스레드 생성하기   
03. MFC CWinThread 사용하기    
04. 스레드와 메시지    
05. 스레드와 윈도우   
06. 스레드간 동기화   
07. 멀티 스레드에서 MFC Socket 사용하기   

12장. Win32 윈속 프로그래밍
01. 윈속 I/O 모델   
02. WSAAsyncSelect 모델   
03. WSAAsyncSelect 프로그램 작성하기    
04. WSAEventSelect 모델    
05. WSAEventSelect 프로그램 작성하기   

13장. 윈도우 기반의 다중 접속 처리
01. 다중 접속 서버의 구현    
02. 동적할당    
03. 연결 리스트     
04. MFC 리스트 클래스의 활용   
05. MFC 리스트 클래스를 이용해서 다중 접속 서버 만들기   
06. 스레드를 사용한 다중 접속 서버 모델   
07. 프로세스를 사용한 다중 접속 서버 모델   

5부. 고급 네트워크 프로그래밍 Ⅰ: 유닉스/리눅스

14장. 유닉스/리눅스 고성능 서버 구현   
01. 기존 기술들의 문제점   
02. 리얼타임 시그널을 통한 이벤트 기반 입출력 처리      
03. epoll: 이벤트 기반 소켓 연결 방식   
15장. 멀티미디어 데이터를 위한 멀티캐스팅 응용
01. 멀티캐스트: 고화질 멀티미디어 컨텐츠 마술사    
02. 브로드캐스트: 멀티캐스트의 사촌

6부. 고급 네트워크 프로그래밍 Ⅱ: 윈도우    

16장. 유용한 Winsock2 프로그래밍
01. Winsock2 소개   
02. 조건부 억셉트     
03. scatter-gather I/O     

17장. 윈속 고성능 네트워크 프로그래밍
01. 오버랩드 I/O    
02. Winsock2 오버랩드 I/O 프로그래밍    
03. 이벤트 객체를 이용한 오버랩드 I/O 결과 통보 받기   
04. 완료 함수를 통한 오버랩드 I/O 결과 통보 받기   
05. APC   
06. 이벤트 방식의 오버랩드 I/O와 스레드    
07. 완료루틴 방식의 오버랩드 I/O와 스레드   
08. IOCP

7부. 실무 네트워크 프로그래밍 

18장. 꼭 알아야 할 네트워크 문제 해결
01. 네트워크 패킷 스니핑 도구: 어떨 때 사용하면 되는가   
02. 패킷의 경계 구분: 데이터만 보내면 어떤 일이 발생하는가    
03. 소켓 타임 아웃: 네트워크가 끊기면 어떤 현상이 발생하는가   

19장. 실전 프로젝트: 고급 채팅 서버와 클라이언트
01. 프로그램 설계  
02. 프로그램 제작

리뷰

25,000

10%

22,500