Go 언어를 활용한 네트워크 프로그래밍
도서+교보Only(교보배송)을 함께 15,000원 이상 구매 시 무료배송
15,000원 미만 시 2,500원 배송비 부과
20,000원 미만 시 2,500원 배송비 부과
15,000원 미만 시 2,500원 배송비 부과
1Box 기준 : 도서 10권
알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

책 소개
이 책이 속한 분야
- 국내도서 > 컴퓨터/IT > 프로그래밍 언어 > 프로그래밍일반
- 국내도서 > 컴퓨터/IT > 네트워크 > 네트워크일반 > 네트워크일반
- 국내도서 > 컴퓨터/IT > 대학교재
- 국내도서 > 대학교재 > 컴퓨터
작가정보
(Adam Woodbeck)
애덤 우드벡은 바라쿠다 네트워크(Barracuda Networks)의 시니어 소프트웨어 엔지니어이며, 주로 Go 언어를 사용한 분산 클라우드 환경을 구현하고 있다. Go 언어로 작성된 네트워크 기반 서비스의 아키텍트로도 활동하고 있다.
숭실대학교에서 정보통신공학 학사와 석사를 취득하였다. Go 언어의 매력에 빠져 2017년부터 시스템 엔지니어로 근무하며 다양한 시스템 도구와 대규모 트래픽 서비스를 Go 언어로 구현하고 운영하였다. 또한, 기존에 작성된 시스템 중 개선이 필요한 부분을 Go 언어로 포팅하여 비약적인 성능 향상을 이루기도 했다. 평소 동료 개발자들에게 Go 언어의 매력을 전하는 한편, 백발의 개발자를 꿈꾸며 개발과 삽질을 즐기는 중이다.
목차
- 옮긴이 머리말 xi
베타리더 후기 xiii
머리말 xv
이 책에 대하여 xvii
PART I | 네트워크 아키텍처 1
CHAPTER 1 | 네트워크 시스템 개요 3
네트워크 토폴로지 선택하기 3
대역폭 vs? 레이턴시 7
개방형 시스템 상호 연결 참조 모델 8
TCP/IP 모델 13
이 장에서 배운 것 17
CHAPTER 2 | 리소스의 위치와 트래픽 라우팅 19
인터넷 프로토콜 20
IPv4 주소 지정 20
IPv6 주소 지정 30
인터넷 제어 메시지 프로토콜 36
인터넷 트래픽 라우팅 37
라우팅 프로토콜 38
이름과 주소 해석 40
이 장에서 배운 것 48
PART II | 소켓 계층 프로그래밍 49
CHAPTER 3 | 신뢰성 있는 TCP 데이터 스트림 51
TCP를 신뢰성 있게 만드는 것 52
TCP 세션 사용 52
Go 언어 표준 라이브러리를 이용한 TCP 연결 수립 58
이 장에서 배운 것 81
CHAPTER 4 | TCP 데이터 전송하기 82
net.Conn 인터페이스 사용하기 82
데이터 송수신 83
io 패키지를 이용한 안정적인 네트워크 애플리케이션 만들기 98
Go의 TCPConn 객체 살펴보기 110
일반적인 Go TCP 네트워크 문제 해결 114
이 장에서 배운 것 116
CHAPTER 5 | 신뢰성 없는 UDP 통신 117
간단하고 신뢰성 없는 UDP 사용하기 118
UDP 데이터 송수신 119
파편화 피하기 128
이 장에서 배운 것 131
CHAPTER 6 | UDP 통신의 신뢰성 확보 132
TFTP를 이용한 신뢰성 있는 파일 전송 132
TFTP 타입 133
TFTP 서버 145
UDP로 파일 다운로드 150
이 장에서 배운 것 154
CHAPTER 7 | 유닉스 도메인 소켓 155
유닉스 도메인 소켓이란 156
유닉스 도메인 소켓 파일에 바인딩 157
클라이언트와 인증하는 서비스 작성 170
이 장에서 배운 것 177
PART III | 애플리케이션 계층 프로그래밍 179
CHAPTER 8 | HTTP 클라이언트 작성 181
HTTP의 기초 이해 182
Go에서 웹 리소스 가져오기 191
HTTP로 데이터 전송하기 197
이 장에서 배운 것 204
CHAPTER 9 | HTTP 서비스 작성 205
Go HTTP 서버 해부 206
핸들러 212
미들웨어 222
멀티플렉서 228
HTTP/2 서버 푸시 232
이 장에서 배운 것 238
CHAPTER 10 | Caddy: 모던 웹 서버 239
Caddy란? 240
Caddy 사용해 보기 241
Caddy 환경구성 및 실행하기 242
모듈과 어댑터로 Caddy 확장하기 248
백엔드 웹 서비스로 요청 리버스 프락시하기 257
이 장에서 배운 것 265
CHAPTER 11 | TLS를 사용한 통신 보안 266
전송 계층 보안 심층 탐구 267
전송 중인 데이터의 보안 271
상호 TLS 인증 283
이 장에서 배운 것 295
PART IV | 서비스 아키텍처 297
CHAPTER 12 | 데이터 직렬화 299
객체 직렬화하기 300
직렬화된 객체 전송하기 316
이 장에서 배운 것 328
CHAPTER 13 | 로깅과 메트릭스 329
이벤트 로깅 330
코드 계측하기 354
기본적인 HTTP 서버 계측하기 359
이 장에서 배운 것 366
CHAPTER 14 | 클라우드로 이동 368
기초 작업하기 369
AWS Lambda 372
구글 Cloud Function 381
애저 Functions 387
이 장에서 배운 것 396
찾아보기 398
책 속으로
《Go 언어를 활용한 네트워크 프로그래밍》은 기본적인 내용을 충실하게 다루고 있으면서 특정 벤더나 기교에 치우치지 않는 선에서 고급 내용도 다루는, 총체적인 지식을 습득할 수 있는 좋은 책입니다. 특히, 단순하게 코드를 나열하는 수준에서 그치지 않고 한 주제에 대해 기초적인 지식부터 왜 그렇게 해야 하는지, 어떻게 하는 것이 좋은지에 대한 타당성도 함께 제시합니다. 그렇기에 관련 지식이 부족한 분들이 보시기에도 좋고, 어느 정도 잘 알고 계신 분께도 고급 내용을 습득할 수 있는 책이라고 생각합니다. _xi쪽
OSI의 애플리케이션 계층과 마찬가지로 TCP/IP 모델에서의 애플리케이션 계층(application layer)은 소프트웨어 애플리케이션과 직접 상호 작용합니다. 우리가 작성하는 대부분의 소프트웨어는 이 계층의 프로토콜을 사용하며, 웹 브라우저가 웹 페이지를 검색할 때에도 네트워크 스택의 이 계층으로부터 데이터를 읽습니다. _14쪽
DialTimeout에 관해서 여러 IP 주소로 해석되는 호스트에 다이얼 시 Go에서는 각 IP 주소 중 먼저 연결되는 주소를 기본 IP 주소로 연결 시도합니다. 첫 번째로 성공한 연결 시도에 대한 연결만 유지되고 그 외의 모든 연결 시도는 취소됩니다. 모든 연결 시도가 실패하거나 콘텍스트의 데드라인이 지나면 net.Dialer.DialContext 에러를 반환합니다. _67쪽
82페이지의 ‘net.Conn 인터페이스 사용하기’에서 클라이언트와 서버 간의 TCP와 같은 스트림 지향 연결을 처리하는 net.Conn 인터페이스에 대해 살펴보았습니다. 이 인터페이스는 UDP가 스트림 지향적인 프로토콜이 아니기 때문에 UDP 연결에 사용하기에는 좋지 않습니다. UDP는 TCP처럼 세션을 관리하거나 핸드셰이크 절차가 없습니다. UDP에는 확인 패킷에 대한 개념이나 데이터 재전송, 흐름 제어와 같은 개념이 없습니다. _119쪽
웹 브라우저와 마찬가지로 Go에서는 net/http 패키지의 HTTP 클라이언트를 사용하여 웹 서버와 통신할 수 있습니다. 웹 브라우저와는 달리 Go는 화면에 HTML 페이지를 직접 렌더링해 주지 않습니다. 대신에 Go를 이용하여 주식 정보와 같은 웹사이트로부터 데이터를 스크래핑하거나, 폼 데이터를 제출하거나, 애플리케이션 계층 프로토콜로 HTTP를 사용하는 API와 통신을 하는 데 사용할 수 있습니다. _191쪽
Caddy는 환경구성 포맷으로 JSON을 네이티브하게 지원하며, localhost의 2019번 포트에 관리자 API가 존재하여서 새로운 환경구성 정보를 포함하는 JSON을 관리자 API로 POST 요청을 보내어 즉시 환경구성 정보를 변경할 수 있습니다. 사람이 JSON을 읽고 처리하기 어렵기 때문에 환경구성 어댑터를 사용하여 TOML과 같은 사람이 읽기 쉬운 형태의 포맷을 JSON으로 변환할 수 있습니다. Caddy의 환경구성 정보를 JSON 외의 포맷으로 작성하려는데 적당한 환경구성 어댑터가 없다면, 이번 장을 살펴보고 직접 원하는 어댑터를 구현할 수 있습니다. _265쪽
출판사 서평
《Go 언어를 활용한 네트워크 프로그래밍》은 Go 언어를 사용하여 보안에 강하며, 신뢰할 수 있고, 가독성이 좋은, 그리고 실제 서비스에 사용할 수 있는 네트워크 코드를 작성할 수 있도록 도와줍니다. 전반부에서는 네트워크와 트래픽 라우팅에 대한 기본 지식을 배우며, 후반부에서는 배운 지식을 활용하여 TCP와 UDP, 유닉스 소켓을 사용하는, 신뢰성 있는 데이터 통신 프로그램을 작성합니다.
HTTP나 HTTP/2와 같은 상위 계층의 네트워크 프로토콜을 점진적으로 경험하고, TLS를 사용하여 네트워크를 통해 서버와 클라이언트, 서드파티 API 사이에서 안전하게 통신하는 애플리케이션을 구현합니다. 한마디로 이 책은 Go 언어에 내재된 병렬성과 빠른 컴파일 속도, 그리고 풍부한 표준 라이브러리를 활용할 수 있는 다양한 방법을 살펴봅니다.
주요 내용
■ IPv4, IPv6의 구조, 멀티캐스트, DNS, 그리고 네트워크 주소 해석과 같은 인터넷 프로토콜의 기초
■ 소켓 레벨 통신에서 신뢰성을 확보하는 방법
■ 핸들러와 미들웨어, 멀티플렉서를 사용하여 최소한의 코드로 HTTP 애플리케이션을 작성하는 방법
■ TLS를 사용하여 애플리케이션에 인증과 암호화를 통합하는 도구 사용법
■ Go 언어가 쉽게 처리할 수 있는 데이터 포맷인 JSON이나 Gob, XML, 프로토콜 버퍼를 활용하여 데이터를 직렬화하고 저장하거나 전송하는 방법
■ 요청이나 에러 등의 정보를 포함하는 메트릭스를 만들기 위한 코드 계측 방법
■ 애플리케이션을 클라우드에 배포하는 방법과 시점
기본정보
ISBN | 9791191600643 ( 1191600645 ) | ||
---|---|---|---|
발행(출시)일자 | 2022년 01월 14일 | ||
쪽수 | 428쪽 | ||
크기 |
187 * 244
* 29
mm
/ 811 g
|
||
총권수 | 1권 | ||
원서명/저자명 | Network Programming with Go/Adam Woodbeck |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립