상세정보

d

d

dd
dd

[열혈강의] 정석용의 TCP / IP 소켓 프로그래밍

코드를 분석, 개선, 추가하는 방식으로 기본 코드부터 실무 코드까지

지은이 |   정석용
옮긴이 |   
발행일 |   2009-09-10
페이지 |   608가격 |   28,000원
ISBN |   978-89-8934-501-5
분야 |   네트워크, 데이터 통신, TCP/IP
dddddd

[열혈강의] 정석용의 TCP / IP 소켓 프로그래밍

코드를 분석, 개선, 추가하는 방식으로 기본 코드부터 실무 코드까지

지은이 |   정석용
옮긴이 |   
발행일 |   2009-09-10
페이지 |   608
가격 |   28,000원
ISBN |   978-89-8934-501-5
분야 |   네트워크, 데이터 통신, TCP/IP
ddd
ddd
이 책은 프로그래밍 언어 구사 능력을 갖추고 통신망에 대해 기본적으로 이해하고 있는 독자를 대상으로 네트워크 애플리케이션을 어떻게 프로그래밍할지, 소켓 프로그램이 시스템 내부적으로 어떻게 동작할지 등의 궁금증을 해결하고자 만들어졌다.
실무 예제 분석과 기능 개선으로 소켓 프로그램의 전체 구조를 파악하고, 다양한 환경(리눅스와 MS 윈도우)에서 데이터 통신에 대한 안목을 기를 수 있는 내용을 제공한다. 프로토콜 정의와 처리, 운영체제와 연계한 부가 기능을 제공하는 예제들을 수록하였으며 실무 수행 능력을 높이는 미니 프로젝트들을 통해 소켓 프로그래밍의 이론과 실제를 함께 익힐 수 있다.

[기획 의도]

네트워크하면 연상이 되는 것은 OSI 7계층 구조, 전송, 통신망 구조 등의 개념을 자신 있게 설명하지는 못해도 기본적인 네트워크 개론 등은 접해 보았을 것이고, C 그리고 C++, JAVA 같은 프로그래밍 언어에 대한 기본적인 지식쯤은 있을 것으로 생각한다.

저자는 기본적인 프로그래밍 언어 구사 능력을 갖추고 통신망에 대해 기본적으로 이해하고 있는 독자를 대상으로 이 책을 통해 다음과 같은 질문에 대한 답을 효과적으로 제시하고 있다.

우리가 알고 있는 네트워크 애플리케이션은 어떻게 프로그래밍할까?


소켓 프로그램이 시스템 내부적으로 어떻게 동작할까?

대부분의 독자에게는 소켓 프로그램의 전체 구조를 보기까지 너무 많은 인내심을 요구하는 상향식(Bottom-up) 방식보다는 기존 소켓 프로그램을 우선 분석하고, 여기에 기능을 새로 추가하거나 기존 기능을 개선하는 하향식(Top-down) 방식이 효과적이라는 확신을 필자는 갖고 있다. 회사에서 신입 개발자를 대상으로 기존 프로그램을 분석하고 개선하는 과제를 반복적으로 수행하는 직무교육(OJT, On the Job Tranning)을 실시하는 이유와 맥을 같이 한다.

사실 소켓 프로그램은 대단히 실무적인 프로그램 분야라고 할 수 있다. TCP/IP 통신망인 인터넷 환경이 급속히 확산됨에 따라 소켓 프로그램을 활용한 기술은 적용 분야가 넓어져 웹 응용 프로그램 개발뿐만 아니라 웹 카메라나 인터넷 전화, IPTV와 같은 응용 분야에서 원격 제어 시스템, 로봇 분야에까지도 적용되고 있다. 특히, 최근에는 복잡한 프로토콜과 클라이언트 프로그램을 별도로 개발할 필요도 없고 접속 장소에 제한이 없는 등의 장점 때문에 임베디드 시스템에 웹 기술을 적용한 인터넷 장치들이 잇달아 제안되었다. 웹 브라우저로 인터넷 장치에 접근함은 물론 감시와 제어 기능까지도 수행한다.

따라서 이 책에서 다룰 소켓 프로그램도 책이라는 한정된 틀에서 벗어나 실무에 적용하기 위해서는 좀더 실제적인 예제가 필요했다. 세부 기능을 이해하고 설명하기에 적합한 예제와 실무 개발에 적합한 예제는 다소 다를 수 있다. 대부분 개념서를 통해 접한 예제 프로그램이 개념 이해에 적합한 예제 중심으로 짜여지기 때문에 여기까지만 학습하고 실무 프로젝트에 투입될 경우 많이 당황하게 된다. 이런 이유로 이 책에서는 실무에서 개발할 개연성이 있는 프로그램의 기초가 되는 미니 프로젝트를 함께 다루었다.

한편 이 책과 함께 제공할 강의도 많은 관심을 가졌으면 한다. 책을 보면서 혼자 학습할 수 있는 과목도 있고, 강의 수강을 통해 학습 시간을 단축하고 효과도 높이는 과목이 있을 수 있다. 네트워크 환경, 시스템 프로그램, 운영체제 등의 이해가 필요한 소켓 프로그램은 강의 수강이 필요한 대표적인 과목으로 판단된다. 이런 점에서 이 책과 함께 인터넷 강의가 제공된다는 사실은 어쩌면 독자에게 귀중한 선물이 될 것이다.
PART I 소켓 프로그래밍 시작하기
1장 소켓 프로그래밍 맛보기
__1.1 hello, world를 출력하는 소켓 프로그램의 구현
__1.2 텔넷으로 웹 서버에 접속하기
__1.3 윈도우 기반에서 MFC로 소켓 프로그램의 구현

2장 내친김에 소켓 프로그래밍 확장하기
__2.1 hello, world를 출력하는 소켓 프로그램의 기능 확장
__2.2 파일 목록을 출력하는 소켓 프로그램의 구현

3장 소켓 프로그래밍에서 알아야 할 기본
__3.1 소켓 프로그래밍
__3.2 TCP와 UDP에 대해서
__3.3 소켓의 생성과 종료
__3.4 소켓을 이용한 자료의 송수신
__3.5 socketpair 함수를 이용한 소켓 프로그램의 구현 - 프로세스 하나에서
__3.6 socketpair 함수를 이용한 소켓 프로그램의 구현 - 두 프로세스 간에

PART 2 단일 접속 서버 구현하기
4장 클라이언트/서버 모델
__4.1 포트(Port)와 서비스(Service)
__4.2 주소의 구성

5장 TCP 소켓 프로그래밍
__5.1 서버 프로그램의 기능 수행
__5.2 클라이언트 프로그램의 기능 수행
__5.3 TCP 기반 에코(Echo) 프로그램의 구현

6장 UDP 소켓 프로그래밍
__6.1 서버 프로그램의 기능 수행
__6.2 클라이언트 프로그램의 기능 수행
__6.3 UDP 기반 에코 프로그램의 구현
__6.4 UDP에서의 신뢰성 문제
__6.5 UDP를 이용한 브로드캐스팅(Broadcasting)

PART 3 다중 접속 서버 구현하기
7장 멀티프로세싱 방식의 다중 접속 서버
__7.1 fork 함수를 이용하는 다중 접속 서버의 구조
__7.2 fork 함수
__7.3 fork 함수를 이용한 다중 접속 서버의 구현
__7.4 시그널(Signal)과 좀비(Zombie) 프로세스
__7.5 fork 함수를 이용한 talk 프로그램의 구현

8장 멀티스레딩 방식의 다중 접속 서버
__8.1 스레드를 이용하는 다중 접속 서버의 구조
__8.2 스레드
__8.3 Pthread를 이용한 스레드 생성
__8.4 스레드를 이용한 다중 접속 서버의 구현
__8.5 Pthread를 이용한 talk 프로그램의 구현

9장 멀티플렉싱 방식의 다중 접속 서버
__9.1 select 함수를 이용하는 다중 접속 서버의 구조
__9.2 select 함수
__9.3 select 함수를 이용한 다중 접속 서버의 구현
__9.4 select 함수를 이용한 talk 프로그램의 구현

10장 MFC로 talk 프로그램 구현하기
__10.1 클라이언트 프로그램
__10.2 서버 프로그램

PART 4 TCP 내부 동작과 Raw 소켓
11장 TCP 내부 동작
__11.1 TCP 상태 변화
__11.2 TCP 소켓 옵션

12장 Raw 소켓
__12.1 Raw 소켓의 생성과 입출력
__12.2 TCP SYN 포트 스캔 프로그램의 구현
__12.3 Raw 소켓을 이용한 ping 프로그램의 구현

PART 5 프로젝트로 실습하기
13장 프로젝트 - 웹 서버
__13.1 HTTP에 대해서
__
__13.3 웹 서버의 구현

14장 프로젝트 - 채팅 프로그램
__14.1 채팅 프로그램
__14.2 select 함수를 이용한 채팅 프로그램의 구현
__14.3 스레드를 이용한 채팅 프로그램의 구현
__14.4 윈도우 기반에서 MFC로 채팅 서버 프로그램의 구현

15장 프로젝트 - FTP 프로그램
__15.1 FTP(File Transfer Protocol)
__15.2 파일 처리 관련 함수
__15.3 FTP 클라이언트 프로그램의 구현
서울대학교 계산통계학과 학사, 한국과학기술원 정보및통신공학과 석사, 아주대학교 컴퓨터공학과 박사학위를 받았다.
1996년부터 현재까지 동양공업전문대학 전산정보학부 교수로 재직 중이다. 컴퓨터 네트워크, 소켓 프로그래밍 관련 강의를 하고 있다.
1987년부터 2006년까지 LG 정보통신 중앙연구소에서 교환기 소프트웨어 개발을, 2005년에는 미국 Anyuser, Inc에서 VoIP 시스템 소프트웨어 개발을 하였다.

이 책은 프로그래밍 언어 구사 능력을 갖추고 통신망에 대해 기본적으로 이해하고 있는 독자를 대상으로 네트워크 애플리케이션을 어떻게 프로그래밍할지, 소켓 프로그램이 시스템 내부적으로 어떻게 동작할지 등의 궁금증을 해결하고자 만들어졌다.
실무 예제 분석과 기능 개선으로 소켓 프로그램의 전체 구조를 파악하고, 다양한 환경(리눅스와 MS 윈도우)에서 데이터 통신에 대한 안목을 기를 수 있는 내용을 제공한다. 프로토콜 정의와 처리, 운영체제와 연계한 부가 기능을 제공하는 예제들을 수록하였으며 실무 수행 능력을 높이는 미니 프로젝트들을 통해 소켓 프로그래밍의 이론과 실제를 함께 익힐 수 있다.

[기획 의도]

네트워크하면 연상이 되는 것은 OSI 7계층 구조, 전송, 통신망 구조 등의 개념을 자신 있게 설명하지는 못해도 기본적인 네트워크 개론 등은 접해 보았을 것이고, C 그리고 C++, JAVA 같은 프로그래밍 언어에 대한 기본적인 지식쯤은 있을 것으로 생각한다.

저자는 기본적인 프로그래밍 언어 구사 능력을 갖추고 통신망에 대해 기본적으로 이해하고 있는 독자를 대상으로 이 책을 통해 다음과 같은 질문에 대한 답을 효과적으로 제시하고 있다.

우리가 알고 있는 네트워크 애플리케이션은 어떻게 프로그래밍할까?


소켓 프로그램이 시스템 내부적으로 어떻게 동작할까?

대부분의 독자에게는 소켓 프로그램의 전체 구조를 보기까지 너무 많은 인내심을 요구하는 상향식(Bottom-up) 방식보다는 기존 소켓 프로그램을 우선 분석하고, 여기에 기능을 새로 추가하거나 기존 기능을 개선하는 하향식(Top-down) 방식이 효과적이라는 확신을 필자는 갖고 있다. 회사에서 신입 개발자를 대상으로 기존 프로그램을 분석하고 개선하는 과제를 반복적으로 수행하는 직무교육(OJT, On the Job Tranning)을 실시하는 이유와 맥을 같이 한다.

사실 소켓 프로그램은 대단히 실무적인 프로그램 분야라고 할 수 있다. TCP/IP 통신망인 인터넷 환경이 급속히 확산됨에 따라 소켓 프로그램을 활용한 기술은 적용 분야가 넓어져 웹 응용 프로그램 개발뿐만 아니라 웹 카메라나 인터넷 전화, IPTV와 같은 응용 분야에서 원격 제어 시스템, 로봇 분야에까지도 적용되고 있다. 특히, 최근에는 복잡한 프로토콜과 클라이언트 프로그램을 별도로 개발할 필요도 없고 접속 장소에 제한이 없는 등의 장점 때문에 임베디드 시스템에 웹 기술을 적용한 인터넷 장치들이 잇달아 제안되었다. 웹 브라우저로 인터넷 장치에 접근함은 물론 감시와 제어 기능까지도 수행한다.

따라서 이 책에서 다룰 소켓 프로그램도 책이라는 한정된 틀에서 벗어나 실무에 적용하기 위해서는 좀더 실제적인 예제가 필요했다. 세부 기능을 이해하고 설명하기에 적합한 예제와 실무 개발에 적합한 예제는 다소 다를 수 있다. 대부분 개념서를 통해 접한 예제 프로그램이 개념 이해에 적합한 예제 중심으로 짜여지기 때문에 여기까지만 학습하고 실무 프로젝트에 투입될 경우 많이 당황하게 된다. 이런 이유로 이 책에서는 실무에서 개발할 개연성이 있는 프로그램의 기초가 되는 미니 프로젝트를 함께 다루었다.

한편 이 책과 함께 제공할 강의도 많은 관심을 가졌으면 한다. 책을 보면서 혼자 학습할 수 있는 과목도 있고, 강의 수강을 통해 학습 시간을 단축하고 효과도 높이는 과목이 있을 수 있다. 네트워크 환경, 시스템 프로그램, 운영체제 등의 이해가 필요한 소켓 프로그램은 강의 수강이 필요한 대표적인 과목으로 판단된다. 이런 점에서 이 책과 함께 인터넷 강의가 제공된다는 사실은 어쩌면 독자에게 귀중한 선물이 될 것이다.