자바 네트워크 프로그래밍 [자바 8과 함께하는 네트워크 애플리케이션 개발]
- 원서명Learning Network Programming with Java (ISBN 9781785885471)
- 지은이리차드 리스(Richard M Reese)
- 옮긴이유연재
- ISBN : 9788960779563
- 30,000원
- 2016년 12월 30일 펴냄 (절판)
- 페이퍼백 | 364쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/java-network)
요약
자바를 이용하여 네트워크 애플리케이션을 개발하는 데 필요한 기술을 배우고, 이를 실제로 활용할 수 있도록 하는 지침서다. 네트워크 주소(IPv4/IPv6), TCP/UDP, 클라이언트/서버, P2P, 보안 및 암호화 등 네트워크에 대한 기본 개념과 활용 예제를 살펴본다. 또한 자바 8 이전 버전과 자바 8을 비교해 독자들이 빠르게 학습할 수 있도록 도와준다.
이 책에서 다루는 내용
■ 소켓을 사용한 다른 애플리케이션과의 연결
■ 애플리케이션 간의 통신을 향상시키기 위한 채널 및 버퍼 사용
■ 네트워크 서비스 접속 및 클라이언트/서버 애플리케이션 개발
■ P2P 애플리케이션의 주요 요소와 가능한 현재 기술 탐색
■ 멀티캐스팅을 수행하는 UDP 사용
■ 코어의 사용과 고급 스레딩 기술을 통한 확장성 해결
■ 더 높은 보안을 위한 애플리케이션 기술 통합
■ 환경 설정 및 이기종 환경에서 작동하는 애플리케이션의 사용을 위한 상호운용성 문제 해결
이 책의 대상 독자
이미 자바에 능숙하고 네트워크 기반 자바 애플리케이션의 개발 방법을 알고 싶은 개발자를 위한 책이다. 기본 자바와 객체지향 프로그래밍(object-oriented programming) 개념에 대한 친숙함도 필요하다. 이 책을 통해 네트워크 프로그래밍의 기본과 다수의 다른 소켓을 사용해 안전하고 확장 가능한 애플리케이션을 생성하는 방법을 배운다.
이 책의 구성
1장, ‘네트워크 프로그래밍 시작’에서는 필수적인 네트워크 용어 및 개념을 소개한다. 자바에서 지원하는 네트워크를 간단한 예제와 함께 설명한다. 서버의 스레드 버전과 함께 간단한 클라이언트/서버 애플리케이션을 보여준다.
2장, ‘네트워크 주소’에서는 네트워크에서 노드가 주소를 사용하는 방법을 설명한다. 자바에서 IPv4와 IPv6의 지원과 함께 주소를 나타내는 방법을 살펴본다. 또한 자바에서 다양한 네트워크 속성을 구성하는 방법을 다룬다.
3장, ‘네트워크 NIO 지원’에서는 NIO 패키지에서 버퍼와 채널을 사용한 통신 지원 방법을 살펴본다. 이 기술은 클라이언트/서버 애플리케이션과 함께 설명하며, 비동기 통신을 위한 NIO 지원도 살펴본다.
4장, ‘클라이언트/서버 개발’에서는 중요하고 널리 사용되는 프로토콜인 HTTP를 사용하는 방법을 살펴본다. 자바는 다양한 방법으로 HTTP 프로토콜을 지원한다. 이 기술은 자바에서 쿠키(cookie)를 다루는 방법의 예제와 함께 설명한다.
5장, ‘P2P 네트워크’에서는 P2P(peer-to-peer) 네트워크에서 기존 클라이언트/서버 아키텍처에 유연한 대안을 제공하는 방법을 설명한다. 기본 P2P 개념은 자바에서 이런 아키텍처를 지원하는 방법의 예제와 함께 소개한다. FreePastry는 오픈소스 P2P 솔루션 프레임워크를 설명하는 데 사용된다.
6장, ‘UDP와 멀티캐스팅’에서는 TCP의 대안인 UDP의 사용 방법을 설명한다. UDP는 신뢰성이 떨어지기는 하지만 인터넷을 사용해 통신하는 애플리케이션에 더 효율적인 방법을 제공한다. 이 프로토콜에 대한 자바의 광범위한 지원과 UDP가 스트리밍 미디어를 지원하는 방법을 설명한다.
7장, ‘네트워크 확장성’에서는 더 많은 요청이 서버에 발생할 때 시스템이 이러한 요청을 해결하기 위해 필요한 방법을 설명한다. 스레드 풀(thread pool), 퓨처(future) 및 NIO 셀렉터(selector)를 포함해 이러한 요청을 지원하는 여러 스레딩 기술을 소개한다.
8장, ‘네트워크 보안’에서는 애플리케이션을 다양한 위협으로부터 보호하는 방법을 다룬다. 자바에서는 암호화(encryption) 및 보안 해싱 기법(secure hashing technique)을 사용해 지원한다. 대칭 및 비대칭 암호화 기술도 살펴보며, TLS/SSL의 사용도 설명한다.
9장, ‘네트워크 상호운용성’에서는 자바 애플리케이션이 다른 프로그래밍 언어로 작성된 애플리케이션과 정보를 교환할 수 있는 방법을 설명한다. 바이트 순서(byte order)를 포함한 애플리케이션의 상호운용성에 영향을 미치는 문제를 확인한다. 또한 다른 구현 간의 통신은 소켓과 미들웨어를 사용해 살펴본다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
목차
목차
- 1장. 네트워크 프로그래밍 시작
- InetAddress 클래스를 사용한 네트워크 주소
- NIO 지원
- URLConnection 클래스 사용
- 버퍼와 채널을 이용한 URLConnection 클래스 사용
- 클라이언트/서버 아키텍처
- 간단한 에코 서버 생성
- 간단한 에코 클라이언트 생성
- 자바 8을 사용한 에코 서버와 클라이언트 지원
- UDP와 멀티캐스팅
- 멀티캐스트 서버 생성
- 멀티캐스트 클라이언트 생성
- 확장성
- 스레드 서버 생성
- 스레드 서버 사용
- 보안
- SSL 서버 생성
- SSL 클라이언트 생성
- 보안 키 생성
- 요약
- 2장. 네트워크 주소
- 네트워크 기본
- 네트워크 기본 이해
- 네트워크 아키텍처와 프로토콜
- 네트워크 기본 이해
- NetworkInterface 클래스 사용
- Mac 주소 획득
- 특별한 Mac 주소 획득
- 다중 MAC 주소 획득
- Mac 주소 획득
- 네트워크 주소 개념
- URL/URI/URN
- URI 클래스 사용
- URI 인스턴스 생성
- URI 부분 분리
- URL 클래스 사용
- URL 인스턴스 생성
- URL 부분 분리
- IP 주소와 InetAddress 클래스
- 주소 정보 획득
- 주소 범위 문제
- 도달 가능성 테스트
- Inet4Address 소개
- IPv4의 사설 주소
- IPv4 주소 타입
- Inet4Address 클래스
- 특별한 IPv4 주소
- Inet6Address 클래스 소개
- IPv6의 사설 주소
- Inet6Address 클래스
- 특별한 IPv6 주소
- IP 주소 타입 테스트
- IPv4 호환 IPv6 주소 사용
- 네트워크 속성 제어
- 요약
- 네트워크 기본
- 3장. 네트워크 NIO 지원
- 자바 NIO
- 버퍼 소개
- 채널을 사용한 타임 서버
- 타임 서버 생성
- 타임 클라이언트 생성
- 채팅 서버/클라이언트 애플리케이션
- 채팅 서버
- 채팅 클라이언트
- 서버/클라이언트 상호작용
- HelperMethods 클래스
- 가변 길이 메시지 처리
- 채팅 서버/클라이언트 애플리케이션 실행
- 다중 클라이언트 처리
- 부품 서버
- 부품 클라이언트 핸들러
- 부품 클라이언트
- 부품 클라이언트/서버 실행
- 비동기 소켓 채널
- 비동기 서버 소켓 채널 서버 생성
- 비동기 소켓 채널 클라이언트 생성
- 기타 버퍼 작업
- 대량 데이터 전송
- 뷰 사용
- 읽기 전용 버퍼 사용
- 소켓 옵션 제어
- 요약
- 4장. 클라이언트/서버 개발
- HTTP 프로토콜 구조
- HTTP 메시지의 특성
- 요청 초기 라인 형식
- 헤더 라인
- 메시지 몸체
- 클라이언트/서버 상호작용 예제
- HTTP 클라이언트/서버 애플리케이션에서 자바 소켓 지원
- 간단한 HTTP 서버 구축
- 간단한 HTTP 클라이언트 구축
- 표준 자바 클래스를 사용한 클라이언트/서버 개발
- HttpURLConnection 클래스 사용
- URL 인코딩
- HTTPServer 클래스 사용
- 간단한 HttpServer 클래스 구현
- 응답 헤더 관리
- HttpURLConnection 클래스 사용
- 오픈소스 자바 HTTP 서버
- 서버 구성
- 쿠키 처리
- 요약
- 5장. P2P 네트워크
- P2P 기능/특성
- 애플리케이션 기반 P2P 네트워크
- P2P 애플리케이션용 자바 지원
- 분산 해시 테이블
- DHT 컴포넌트
- DHT 구현
- JDHT 사용
- FreePastry 사용
- FreePastry 예제
- FreePastryExample 클래스의 이해
- FreePastryApplication 클래스의 이해
- 특정 노드에게 메시지 전송
- FreePastry 예제
- 요약
- 6장. UDP와 멀티캐스팅
- UDP에 대한 자바 지원
- TCP와 UDP
- UDP 클라이언트/서버
- UDP 서버 애플리케이션
- UDP 클라이언트 애플리케이션
- 작동하는 UDP 클라이언트/서버
- UDP를 위한 채널 지원
- UDP 에코 서버 애플리케이션
- UDP 에코 클라이언트 애플리케이션
- 작동하는 UDP 에코 클라이언트/서버
- UDP 멀티캐스팅
- UDP 멀티캐스트 서버
- UDP 멀티캐스트 클라이언트
- 작동하는 UDP 멀티캐스트 클라이언트/서버
- 채널에 의한 UDP 멀티캐스팅
- UDP 채널 멀티캐스트 서버
- UDP 채널 멀티캐스트 클라이언트
- 작동하는 UDP 채널 멀티캐스트 클라이언트/서버
- UDP 스트리밍
- UDP 오디오 서버 구현
- UDP 오디오 클라이언트 구현
- 요약
- 7장. 네트워크 확장성
- 멀티스레드 서버 개요
- thread-per-request 접근법
- thread-per-request 서버
- thread-per-request 클라이언트
- 작동하는 thread-per-request 애플리케이션
- Thread-per-connection 접근법
- thread-per-connection 서버
- thread-per-connection 클라이언트
- 작동하는 thread-per-connection 애플리케이션
- 스레드 풀
- ThreadPoolExecutor 클래스 특성
- 간단한 스레드 풀 서버
- 간단한 스레드 풀 클라이언트
- 작동하는 스레드 풀 클라이언트/서버
- Callable와 스레드 풀
- Callable 사용
- Future 사용
- HttpServer 실행기 사용
- 셀렉터 사용
- 셀렉터 생성
- 채널 등록
- 타임 클라이언트/서버를 지원하는 셀렉터 사용
- 채널 타임 서버
- 날짜와 시간 클라이언트 애플리케이션
- 작동하는 날짜와 시간 서버/클라이언트
- 네트워크 타임아웃 처리
- 요약
- 8장. 네트워크 보안
- 보안
- 보안 통신 용어
- 암호화 기본
- 대칭 암호화 기법
- 키 생성
- 대칭 키를 이용한 암호화 텍스트
- 복호화 텍스트
- 비대칭 암호화 기법
- 비대칭 키 생성과 저장
- 비대칭 키를 사용한 암호화/복호화 텍스트
- 비대칭 키 파일 저장
- 대칭 암호화 기법
- 키스토어 생성
- keytool을 사용한 키스토어 생성과 유지
- Keytool 커맨드라인 인자
- 자바를 사용한 키스토어 생성과 유지
- 대칭 암호화 클라이언트/서버
- 대칭 서버 애플리케이션
- 대칭 클라이언트 애플리케이션
- 작동하는 대칭 클라이언트/서버
- 비대칭 암호화 클라이언트/서버
- 비대칭 서버 애플리케이션
- 비대칭 클라이언트 애플리케이션
- 작동하는 비대칭 클라이언트/서버
- TLS/SSL
- SSL 서버
- SSL 클라이언트
- 작동하는 SSL 클라이언트/서버
- 보안 해시 함수
- 요약
- 보안
- 9장. 네트워크 상호운용성
- 자바 바이트 순서
- 기타 언어와의 인터페이스
- JVM 기반 언어와 인터페이스
- 비JVM 언어와 인터페이스
- 간단한 소켓을 이용한 통신
- 자바 서버
- C# 클라이언트
- 작동하는 클라이언트/서버
- 미들웨어를 통한 상호운용성
- RESTful 서비스 생성
- RESTful 서비스 테스트
- RESTful 클라이언트 생성
- 요약
도서 오류 신고
정오표
정오표
[p.237 : 2행]
클라이언트 요청에서
->
클라이언트 요청 중에
[p.237 : 5행]
요청이 처리되고, 이후에 새로운 요청은 받아들인다.
->
새로운 요청은 현재 요청을 처리한 후 받아들인다.