책 소개
요약
네트워크 애플리케이션을 전문적으로 다루려는 개발자부터 시스템 관리자까지 두루 보면서 항상 참고해야 할 책이다. 먼저 파이썬의 네트워크 관련 라이브러리를 활용한 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장, ‘네트워크 감시와 보안’ 네트워크 패킷을 획득, 저장, 분석, 조작할 수 있는 기술을 소개한다. 이런 기술을 습득하고 나면, 간단한 파이썬 스크립트를 이용해 여러분 네트워크의 보안 관련 문제를 스스로 점검해볼 수 있다.
목차
목차
- 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 파일로부터 패킷 데이터를 읽어서 전송하기
- 브로드캐스트 패킷 탐지