I   회사소개  I  사이트맵  I  도움말
인기검색어
  ID저장
 
회원가입 I 아이디/비밀번호찾기
ㆍOS / 하드웨어 / 서버군
ㆍOA / 오피스 / 전자출판
ㆍ아이폰 / 안드로이드
ㆍ디지털 포토그래피
ㆍ그래픽 / 홈페이지
ㆍ인터넷 프로그래밍
ㆍ일반프로그래밍
ㆍ게임프로그래밍
ㆍSNS / E-Business
ㆍ데이터베이스
ㆍ기 타
ㆍ길라잡이
ㆍ실력이 탐나는
ㆍ회사 실무에 힘을 주는
ㆍ예제가 가득한
ㆍ그림 한 장으로 보는
ㆍ디지털 포토그라피
ㆍ그래픽/홈페이지
페이스북 블로그 네이버포스트
관련분류 : OS/하드웨어/서버군 / 리눅스
예제로 배우는 리눅스 소켓 프로그래밍
크게보기 l 차례보기
ㆍ저 자 Warren W. Gay
ㆍ역 자 배재현
ㆍ구 분 번역서
ㆍ발행일 2004년 01월 05일
ㆍ정 가 22,000원
ㆍ페이지 588 페이지
ㆍISBN 89-8054-525-8
ㆍ난이도 중급
ㆍ출판사 인포북
만약 여러분이 어떤 주제에 생소하다면 그것을 배울 수 있는 가장 좋은 방법은 명백하고 간결한 예제를 따라해 보는 것이다. 예제로 배우는 시리즈는 논리적이고 선형적인 교육 진도를 따르고 있으며 작고 순차적인 단계를 통하여 여러분이 배우고자 하는 커다란 그림을 제시해주고 있다.

[예제로 배우는 리눅스 소켓 프로그래밍]은 소켓 프로그래밍을 가르치고 있으며 네트워킹을 여러분이 작동시키고 사용할 수 있는 기구처럼 다루고 있다. 곧 여러분은 리눅스와 C 프로그래밍 기술을 효율적으로 활용하여 안정한 네트워크 클라이언트/서버를 작성하게 될 것이다. 사실 배우게될 기술은 리눅스, OpenBSD 혹은 상용화된 다양한 버전에 상관없이 대부분의 유닉스 시스템에 적용될 수 있다.

  • 위협을 제거할 수 있는 방법과 취약점을 알아내어 공격으로부터 여러분의 서버를 방어한다
  • 소켓 버퍼 크기를 결정하고 TCP/IP keep-alive 기능과 다른 옵션을 설정하는 프로그램을 작성하여 소켓 옵션을 조절한다.
  • 연결 지향 프로토콜과 비연결 지향 프로토콜의 차이점을 이해하여 가장 효율적인 클라이언트와 서버 인터페이스를 선택한다.
  • 간단한 브로드캐스트 서버와 연관된 클라이언트를 만든다. 이 서버/클라이언트는 IPv4 소켓을 사용하여 외부 데이터를 모든 내부 클라이언트에게 다시 브로드캐스트한다.

알아야 하는 것
  • 리눅스에서 C 프로그램을 컴파일하고 링크하는 방법
  • TCP/IP 네트워킹 기본

    필요한 하드웨어 & 소프트웨어
  • 레드햇 6.0 혹은 최신 호환 리눅스 배포
  • C 컴파일러
  • 네트워크 카드와 네트워크(선택)

    [저자 소개]
    Warren W.Gay는 Sams Teach Yourself Linux Programming in 24 Hours의 베스트셀러 저자이다. 그는 Mackenzie Financial Corporation의 투자 관리 시스템을 관리하고 있다.Warren은 1980년 이후부터 직업적으로 프로그래밍해 왔으며, 1986년 이후부터는 유닉스, 1994년 이후부터는 리눅스 기반에서 작업해왔다. 그는 FTP 백업 프로그램과 .wav 재생 프로그램을 포함하여 유명한 인터넷 기반 리눅스 패키지를 다수 개발하였다.
  •  
    이 책의 장점을 소개하기보다는 이 책이 담고 있는 내용의 중요성을 먼저 이야기하는 것이 더욱 중요하리라고 본다. 사실, 이 책은 BSD 소켓 프로그래밍을 해본 사람에게는 소켓 프로그래밍 입문서의 바이블이라고 여겨지고 있다. 이 책의 내용을 굳이 칭찬하기보다 역자가 보장한다고 하면 독자들이 믿어줄지 모르겠다.

    소켓 프로그래밍을 공부해야 하는 이유는 자바나 C#과 같은 언어를 놔두고 C나 C++를 공부해야 하는 이유와 일맥상통하는 것 같다는 생각이 든다. Windows 환경에서는 .NET 리모팅이나 DCOM과 같은 좋은 플랫폼이 있고, 자바 환경에서는 J2EE와 같은 좋은 플랫폼이 있다. 하지만, 복잡한 에러 처리를 필요로 하고, 객체화되지 않은 여러 가지 C 함수를 이용하여 네트워킹을 수행하는 방법을 배워야 하는 이유는 무엇일까? 요즘과 같이 다양한 라이브러리와 미들웨어가 나와 있는 세상에서 이러한 질문에 대한 답변이 명확해지지 않으면 힘겹게 C를 이용한 소켓 프로그래밍을 공부할 동기 부여가 되지 않을 것이다.

    위와 같은 질문에는 실제 경험만큼 좋은 대답이 없다고 본다. 역자는 "코리아 와이즈넛"이라는 회사에서 기업형 검색 솔루션을 4년째 개발하고 있다. 검색 솔루션은 제품의 특성상 하드웨어 및 운영체제와 무관하게 작동해야 하며, 분산 처리되어야 할 각 모듈간에는 플랫폼 독립성이 보장되어야 한다. 즉, A 모듈은 x86 리눅스 서버에서 운영하고 있고, B 모듈은 HP의 PARISC HP-UX에서 운영하고 있는 상태에서 이 두 모듈이 네트워크로 빠르게 통신해야 하는 상황이다. 이러한 요구 조건을 충족시킬 수 있는 네트워킹 모듈을 개발하려면 C를 이용한 소켓 프로그래밍 이외에는 없다(물론 자바도 훌륭한 대안이 될 수 있겠지만, 자바 모듈의 규모가 커지면 그다지 플랫폼의 이식성이 뛰어나지 않은데다가 C에 비해서 그다지 빠르지 않다). 또 한 가지 예를 들면, 구글(Google)의 웹 검색 서비스는 x86 리눅스 서버를 만대 이상 쓰고 있다. 과연 이 만대의 서버를 분산 처리하기 위해서 어떤 기술을 사용할까? 물론, 쉽사리 알지 못할 고차원적인 네트워크 아키텍처가 숨겨져 있겠지만, 기본 바탕은 C를 이용한 소켓 프로그래밍이 아닐까?

    현재 업계에서는 이러한 네트워크 프로그래밍의 수요가 빠르게 늘고 있다. 역자의 회사뿐만 아니라, 제대로 된 네트워크 프로그래밍을 할 수 있는 사람이면 역자의 회사를 비롯하여 SI 업체나 솔루션 회사뿐 아니라, 온라인 게임을 비롯한 서비스 회사에서도 가장 필요로 하는 프로그래머임이 확실하다. 프로그램의 가치 척도의 기준에는 여러 가지가 있겠지만, 최소 비용의 하드웨어로 최대 성능을 낼 수 있는 지의 여부가 그 중에서 가장 으뜸이 아닐까 싶다. 그렇다면 높은 유연성과 효율성을 가진 분산 처리 기술을 익히는 일이란 최고의 프로그래밍을 하기 위한 하나의 방편이며, C를 이용한 소켓 프로그래밍은 이것의 시작이라는 결론을 내릴 수 있다.

    그렇다면 이 책은 소켓 프로그래밍을 공부하기 위한 어떤 가이드라인을 제시하고 있을까? 소켓의 기본 개념부터 다양한 용도의 서버 프로그램을 작성하기 위한 I/O 모델을 포함하여 보안의 개념까지 상당히 넓은 개념을 포함하고 있다. 또한, 소켓 프로그래밍을 수행하면서 어려움을 겪기 쉬운 에러 처리나 중요한 개념을 자세하게 나열하고 있다. 이 책을 처음부터 끝까지 읽고 나면 웬만한 네트워킹 모듈은 크게 어렵지 않게 작성할 수 있을 것이다. 물론, 서버 및 클라이언트의 고급 통신 아키텍처나 디자인은 여러분의 도전적인 과제로 남아 있다. 그리고 "예제로 배우는" 시리즈가 주창하고 있는 배움의 왕도인 예제들은 상세한 주석이 달려져 있어 이후에 quick reference로도 활용될 수 있다.

    네트워크 프로그램을 크게 클라이언트와 서버로 나눈다고 하였을 때 클라이언트를 작성하기에는 이 책이 모자랄 것이 없으나, 서버를 작성하기에는 약간 모자란 면이 있다. 제대로 성능을 낼 수 있는 서버를 작성하기 위해서는 스레드 프로그래밍이 필수이다. 하지만, 스레드에 관한 별도의 책들이 다수 있을 정도로 스레드의 개념이 방대하기 때문에 어쩔 수 없었겠지만, 지면상 이 책에 스레드의 설명이 없다는 것이 개인적으로는 참 아쉽다. 네트워킹에 관해서 이 책을 독파하고 스레드에 관한 별도의 공부를 곁들이면 우수한 성능을 가진 네트워킹 모듈을 작성하는 것은 시간 문제일 것이다.
     
     
     
                                      
    회사소개      개인정보취급방침      고객센터     사이트맵      도움말