Top

파이썬을 활용한 네트워크 프로그래밍 [개발자와 관리자를 위한 효율적인 네트워크 애플리케이션 개발]

  • 원서명Python Network Programming Cookbook (ISBN 9781849513463)
  • 지은이파루크 사커(Faruque Sarker)
  • 옮긴이박영훈
  • ISBN : 9788960776432
  • 30,000원
  • 2015년 01월 27일 펴냄
  • 페이퍼백 | 288쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 네트워크 프로그래밍

책 소개

요약

네트워크 애플리케이션을 전문적으로 다루려는 개발자부터 시스템 관리자까지 두루 보면서 항상 참고해야 할 책이다. 먼저 파이썬의 네트워크 관련 라이브러리를 활용한 TCP/IP 기반 클라이언트/서버 개발부터 시작해 소켓을 효율적으로 다루는 방법을 알려주고, 외부 라이브러리와 연동해 네트워크 애플리케이션의 성능을 확장한다. 이메일, FTP. CGI 프로그래밍부터 웹 기반 애플리케이션 개발, 웹 서비스를 위한 외부 서비스와 연동하는 방법까지 고르게 설명한다. 더 나아가 시스템 관리자는 원격 관리 작업부터 네트워크 패킷 감시 및 보안 관련 내용을 배운 후 즉시 적용할 수 있다. 이 과정에서 파이썬 기반의 다양한 외부 라이브러리 사용법을 유용하게 활용할 수 있는 기회를 제공한다. 이 책에서 제공되는 파이썬 예제 스크립트는 네트워크 애플리케이션 개발과 시스템 관리에 적용할 수 있다.

이 책에서 다루는 내용

■ TCP/IP 네트워크 클라이언트/서버 애플리케이션 개발
■ 컴퓨터의 IPv4/IPv6 네트워크 인터페이스 관리
■ HTTP와 HTTPS 프로토콜용 효율적인 다목적 웹 클라이언트 개발
■ STMP, POP3, IMAP 등의 공통 이메일 프로토콜을 이용한 이메일 클라이언트 구현
■ 텔넷과 SSH 연결을 통한 외부 시스템 관리 작업 수행
■ XML-RPC, SOAP, REST API 같은 웹 서비스를 통해 인기 있는 웹사이트와 통신
■ 주요 공통 네트워크 보안 취약점 감시와 분석

이 책의 대상 독자

만약 여러분이 네트워크 프로그래머이거나 혹은 시스템/네트워크 관리자, 웹 애플리케이션 개발자라면 이 책은 여러분에게 딱 맞는 책이다. 독자는 기본적으로 파이썬 언어와 TCP/IP 네트워크의 개념에 친숙해야 한다. 하지만 이제 처음 시작하는 초보자라고 해도 이 책을 읽어나가면서 이런 개념들에 대해 기본적인 이해를 할 수 있게 될 것이다. 대학에서 네트워크 프로그래밍의 실제적인 기술을 익히는 데 사용할 보조 교재로도 활용할 수 있다.

이 책의 구성

1장, ‘소켓, IPv4 그리고 간단한 클라이언트/서버 프로그래밍’ 파이썬의 핵심 네트워킹 라이브러리를 다양한 작은 예제들과 함께 소개하고 마지막에는 간단한 클라이언트/서버 애플리케이션을 생성해본다.

2장, ‘성능 향상을 위한 소켓 I/O 멀티플렉싱’ 내장 라이브러리나 외부 라이브러리와 함께 여러분의 클라이언트/서버 애플리케이션을 확장할 수 있는 다양한 기술을 설명한다.

3장, ‘IPv6, 유닉스 도메인 소켓, 네트워크 인터페이스’ 여러분 자신의 컴퓨터와 LAN 관리 기법에 중점을 둔다.

4장, ‘HTTP 프로그래밍’ 웹 브라우저의 여러 기능을 명령행에서 구현해본다. 이 명령행에서는 웹 폼 제출, 쿠키 처리, 다운로드 관리, 데이터 압축, HTTPS를 이용한 보안 컨텐츠 제공 같은 기능을 제공한다.

5장, ‘이메일, FTP, CGI 프로그래밍’ FTP나 이메일 작업을 자동화하는 시간을 가져본다. 구글 지메일 계정을 조작하고, 스크립트를 이용해 이메일을 읽거나 전송해보고, 웹 애플리케이션에서 사용할 수 있는 방명록을 생성해본다.

6장, ‘스크린 스크래핑과 기타 유용한 애플리케이션’ 실제 작업에서 사용할 수 있는 여러 파이썬 라이브러리를 소개한다. 구글 지도에서 회사의 위치를 찾아낸다거나 위키피디아(Wikipedia)에서 정보를 가져오기, 깃허브(GitHub)상에서 코드 검색하기, BBC 사이트에서 뉴스를 읽어들이는 기능 등을 설명한다.

7장, ‘네트워크상의 원격 관리 작업 프로그래밍’ SSH를 이용해 시스템 관리와 작업 분배를 자동화하는 예를 소개한다. 여러분의 노트북에서 원격으로 명령을 실행하거나, 패키지를 설치할 수 있고, 또한 새로운 웹사이트를 설정할 수도 있다.

8장, ‘웹 서비스 API로 작업하기’ XML-RPC, SOAP, REST 방식을 이용해 사용할 수 있는 API 서비스를 소개한다. 이 서비스를 이용해 특정 웹사이트와 정보를 요청하거나 통신할 수 있는 프로그램을 구현할 수 있다. 예를 들어 아마존(Amazon)이나 구글의 제품을 검색하는 프로그래밍도 해본다.

9장, ‘네트워크 감시와 보안’ 네트워크 패킷을 획득, 저장, 분석, 조작할 수 있는 기술을 소개한다. 이런 기술을 습득하고 나면, 간단한 파이썬 스크립트를 이용해 여러분 네트워크의 보안 관련 문제를 스스로 점검해볼 수 있다.

저자/역자 소개

지은이의 말

이 책을 출판하게 되어 매우 기쁘며 책의 출판을 위해 힘쓴 모두에게 감사를 전하고 싶다. 이 책은 파이썬을 이용한 네트워크 프로그래밍 입문서로서, TCP/UDP, HTTP/HTTPS, FTP, SMTP, POP3, IMAP, CGI 같은 다양한 범위의 네트워크 프로토콜을 다룬다. 파이썬의 편리함과 강력한 기능을 이용하면 실제 작업에서 사용할 수 있는 다양한 스크립트를 손쉽게 구현할 수 있다. 즉 네트워크와 시스템 관리, 웹 애플리케이션 개발, 내부 혹은 원격 네트워크의 통신, 저수준 네트워크 패킷 캡처와 분석 등 다양한 분야에 파이썬을 사용할 수 있다. 이 책에서 가장 중요하게 생각하는 점은 여러 주제에 관한 실제적인 경험을 제공하는 것이다. 그러므로 이 책에서는 장황한 이론에 대한 설명보다는 실제적인 예제에 더 많은 지면을 할애하고 있다.

이 책은 DevOps 방법론을 염두에 두고 썼다. DevOps에서는 개발자가 소프트웨어 운영에도 다소 관여한다. 즉 애플리케이션 배포에서부터 애플리케이션의 다양한 측면 관리, 즉 원격 서버 관리, 모니터링, 애플리케이션의 스케일링, 성능 최적화 같은 작업에 개발자가 관여한다. 이 책에서는 많은 공개 파이썬 라이브러리를 사용했으며, 다양한 상황에서 이런 라이브러리를 유용하게 쓸 수 있다. 나 또한 이 라이브러리들을 이용해 일상적인 개발 업무를 자동화하고 있다. 예를 들어 fabric을 이용해 소프트웨어 배포 업무를 자동화한다거나 그 밖의 라이브러리를 이용해 인터넷 검색, 웹 데이터 긁어오기, 이메일 전송하기 등, 다양한 기능을 구현하고 있다.

독자 여러분이 이 책에서 설명한 예제들을 학습해, 이를 더 강력하고 즐거운 애플리케이션으로 확장하기를 희망한다.

저자 소개

파루크 사커(Faruque Sarker)

소프트웨어 아키텍트이자 DevOps 엔지니어로 유니버시티 칼리지 런던(UCL, University College London)에서 교편을 잡고 있다. 최근 몇 년 동안 수많은 파이썬 관련 개발 프로젝트를 이끌어왔으며, 대표적인 예로 UCL에서 IPython Notebook 서비스를 이용해 대화형 웹 기반 과학 계산 프레임워크를 구현했다. 사커 교수는 오픈 소스 기술에 관한 전문가로 이러닝(e-learning), 웹 기반 애플리케이션 플랫폼, 애자일 소프트웨어 개발, DSDM Atern과 ITIL 서비스 관리 프레임워크 같은 IT 서비스 관리 기법에 대한 기술을 보유하고 있다.

사커 교수는 사우스 웨일스 대학(University of South Wales)에서 멀티로봇(multirobot) 시스템에 관한 논문으로 박사 학위를 받았다. 이 대학에서 다양한 파이썬 공개 소스 프로젝트를 도입해, 영국에서 가장 큰 멀티로봇 테스트 실험장을 위해 복잡한 기반 소프트웨어들을 통합했다. 또한 멀티로봇 그룹을 조종하기 위해 D-Bus를 이용한 이벤트 기반의 하이브리드 구조(hybrid event-driven architecture on D-Bus)라 불리는 소프트웨어 시스템을 설계, 구현했다. 또한 1999년 이후로 여러 회사, 교육기관, 다국적 컨설팅 회사에 리눅스와 오픈소스 소프트웨어를 배포해왔다. 또한 BlueZ와 Tahoe-LAFS 오픈소스 프로젝트에 기여한 공로를 인정받아 2009/2010 GSoC(Google Summer of Code 2009/2010) 프로그램에 초대됐다.

현재 사커 박사는 자기 조직화 클라우드 구조 연구에 관심을 두고 있다. 여가 시간에는 자신의 어린 딸인 아이샤(Ayesha)와의 시간을 즐기며 아동이 자신의 주변 환경에 적응해 자신감을 가질 수 있게 도와주는 아동 중심적 교육 기법을 배우기를 열렬히 희망하고 있다.

옮긴이의 말

파이썬은 무엇을 개발하느냐에 따라 다르겠지만, C/C++보다 빠르게 개발할 수 있는 좋은 프로그래밍 언어입니다. 처음 배우는 사람도 파이썬으로 다양한 프로그래밍 개념을 습득할 수 있고, 개발자에게는 프로토타입이나 필요한 도구를 만들 때 파이썬이 대안이며, 필요한 경우 다른 언어로 만들어진 모듈과 통합할 수 있는 등 여러모로 장점을 가진 언어입니다. 촌각을 다투는 작업이라면 파이썬만큼 적합한 언어가 없으며, 실제로 속도와 효율성을 중시하는 네트워크 관리 및 보안 분야에서 많이 활용하고 있습니다.

예전에도 지금도 변함없는 사실은 어떤 언어이든 입문서를 본 후에 실무에서 활용할 만한 자료를 찾아보기가 힘들다는 점입니다. 어느 분야도 마찬가지이겠지만 특히 네트워크 프로그래밍이라면 어떨까요? 네트워크 프로그래밍 분야에서 손에 꼽힐만한 대표적인 책이 있습니다. C라면 리차드 스티븐스의 『Unix Network Programming』 시리즈가 있고, 파이썬에 관한 책도 여러 권이 있습니다. 하지만 무엇보다도 파이썬 네트워크 프로그래밍에 관해 잘 알려진 공개 라이브러리와 연동한 경험이 많고 경험이 풍부한 분이 쓴 책이 있으면 얼마나 좋을까요? 바로 이 책인 『파이썬을 활용한 네트워크 프로그래밍』을 추천해드립니다.

장황한 이론을 설명하기보다는 실제 경험을 반영하는 것을 중요하게 생각한 저자인 오마르 파루크 사커 교수는 현업에서 바로 사용할 수 있도록 파이썬으로 TCP/IP, HTTP/HTTPS, FTP, SMTP, POP3, IMAP, CGI 등의 다양한 네트워크 프로토콜을 기반으로 구현한 스크립트를 이 책에 수록했으며, 네트워크와 시스템 관리, 웹 애플리케이션 개발, 내부/외부 네트워크 통신, 저수준 네트워크 패킷 캡처와 분석까지 아우르는 내용을 다뤘습니다. 따라서 이 책은 네트워크 애플리케이션을 전문적으로 다루려는 개발자부터 시스템 관리자까지 볼 수 있으며, 필요하면 예제 스크립트를 확장해 여러 가지 상황에 대처할 수 있는 지름길을 제공할 수 있을 것입니다.

옮긴이 소개

박영훈

한국과학 기술원 전산학과를 졸업한 후 다수의 회사에서 리눅스, 윈도우 관련 프로젝트 매니저로 일해왔다. 현재는 프리랜서로 스마트폰 애플리케이션과 윈도우 애플리케이션 개발, 그리고 이와 연관된 웹사이트 구축 작업을 하고 있다. 번역서로 에이콘출판사에서 출간한 『엑스코드를 이용한 아이패드 개발 24시간 만에 끝내기』(2012), 『코드이그나이터 MVC 프로그래밍』(2013), 『iOS 컴포넌트와 프레임워크 실전 프로그래밍』(2014)이 있다.

목차

목차
  • 1장 소켓, IPv4 그리고 간단한 클라이언트/서버 프로그래밍
    • 소개
    • 자신의 컴퓨터 이름과 IPv4 주소를 알아내어 출력하기
    • 외부 컴퓨터의 IP 주소 가져오기
    • IPv4 주소를 다른 포맷으로 변환하기
    • 주어진 포트 번호와 프로토콜 정보를 바탕으로 서비스 이름 찾기
    • 호스트 컴퓨터와 네트워크 바이트 순서에 맞게 정수를 변환하기
    • 기본 소켓 타임아웃 값을 설정하거나 얻기
    • 소켓 에러를 간결하면서도 자연스럽게 처리하기
    • 소켓의 전송/수신 버퍼 크기 변경
    • 소켓의 블로킹/논블로킹 모드 변경
    • 소켓 주소 재사용
    • 인터넷 시간 서버로부터 현재 시간을 얻어와 출력하기
    • SNTP 클라이언트 작성
    • 간단한 에코 클라이언트/서버 애플리케이션 작성

  • 2장 성능 향상을 위한 소켓 I/O 멀티플렉싱
    • 소개
    • 소켓 서버 애플리케이션에서 ForkingMixIn 사용
    • 소켓 서버 애플리케이션에서 ThreadingMixIn 사용
    • select.select를 이용한 채팅 서버 구현
    • select.epoll을 이용한 웹 서버 멀티플렉싱
    • 디젤 병렬 라이브러리를 이용한 에코 서버 멀티플렉싱

  • 3장 IPv6, 유닉스 도메인 소켓, 네트워크 인터페이스
    • 소개
    • 내부 포트를 외부 호스트로 포워딩하기
    • ICMP를 이용해 네트워크상의 호스트에 ping 전송하기
    • 외부 네트워크 서비스 사용 대기
    • 컴퓨터에 있는 모든 네트워크 인터페이스 찾기
    • 컴퓨터의 특정 네트워크 인터페이스 IP 주소 얻기
    • 컴퓨터상의 네트워크 인터페이스 사용 가능 여부 알아내기
    • 내부 네트워크상에서 비활성화된 컴퓨터 탐지
    • 연결된 소켓(socketpair)을 이용한 기본적인 IPC 실행
    • 유닉스 도메인 소켓을 이용한 IPC 실행
    • 파이썬의 IPv6 소켓 지원 여부 확인
    • IPv6 주소로부터 IPv6 프리픽스 추출
    • IPv6 에코 클라이언트/서버 작성

  • 4장 HTTP 프로그래밍
    • 소개
    • HTTP 서버로부터 데이터 내려받기
    • 자신의 컴퓨터에서 HTTP 요청 처리
    • 방문한 웹사이트의 쿠키 정보 추출
    • 웹 폼을 웹 서버로 제출
    • 프록시 서버를 이용한 웹 요청 전송
    • HEAD 방식을 이용해 특정 웹 페이지 존재 여부 확인
    • 자신의 코드를 모질라 파이어폭스로 둔갑시키기
    • HTTP 압축을 통해 웹 요청 시 사용 대역폭 줄이기
    • 부분 다운로드와 다운로드 재개 기능을 갖춘 클라이언트 작성
    • 파이썬과 OpenSSL을 이용한 간단한 HTTPS 서버 작성

  • 5장 이메일, FTP, CGI 프로그래밍
    • 소개
    • 외부 FTP 서버에 있는 파일의 리스트 얻기
    • 자신의 컴퓨터에 있는 파일을 FTP 서버에 업로드하기
    • 현재 작업 디렉토리를 ZIP 파일로 압축해 이메일로 전송하기
    • POP3로 구글 메일 내려받기
    • IMAP으로 외부 서버에 있는 이메일 확인하기
    • 지메일 SMTP 서버를 통해 첨부 파일이 있는 이메일 전송하기
    • CGI로 파이썬 기반의 웹 서버에 방명록 작성하기

  • 6장 스크린 스크래핑과 기타 유용한 애플리케이션
    • 소개
    • 구글 맵 API를 이용한 업체 주소 검색
    • 구글 맵의 URL을 이용한 지도 좌표 검색
    • 위키피디아 글 검색
    • 구글로 주식 시세 검색
    • 깃허브 소스 코드 저장소 검색
    • BBC 뉴스 읽어오기
    • 웹 페이지에 있는 모든 링크 실행하기

  • 7장 네트워크상의 원격 관리 작업 프로그래밍
    • 소개
    • 텔넷을 이용해 외부 기기에서 셸 명령어 실행하기
    • SFTP로 외부 기기에 파일 복사하기
    • 외부 호스트의 CPU 정보 출력하기
    • 외부 기기에 파이썬 패키지 설치하기
    • 원격으로 MySQL 명령 실행하기
    • SSH를 이용해 외부 기기에 파일 전송하기
    • 웹사이트를 운영하기 위해 외부에서 아파치 웹 서버 설정하기
  • 8장 웹 서비스 API로 작업하기
    • 소개
    • XML-RPC 서버 질의
    • 다중 호출을 허용하는 멀티스레드 XML-RPC 서버 작성
    • 간단한 HTTP 인증과 함께 XML-RPC 서버 운영
    • REST API를 이용한 플리커 사진 정보 수집
    • 아마존 S3 웹 서비스로부터 SOAP 메소드 검색
    • 구글을 이용한 고급 정보 검색
    • 아마존 검색 API를 이용한 서적 검색

  • 9장 네트워크 감시와 보안
    • 소개
    • 자기 네트워크의 패킷 스니핑
    • pcap 포맷으로 패킷 저장
    • HTTP 패킷 헤더에 내용 추가
    • 외부 호스트의 포트 스캐닝
    • 패킷의 IP 주소 조작
    • 저장한 pcap 파일로부터 패킷 데이터를 읽어서 전송하기
    • 브로드캐스트 패킷 탐지

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안