장바구니 담기 close

장바구니에 상품을 담았습니다.

리눅스 커널 네트워킹

리눅스 커널 네트워킹 커널 코드로 배우는 리눅스 네트워킹의 구현과 이론 (위키북스 유닉스&리눅스 시리즈 2)

  • 라미 로젠
  • |
  • 위키북스
  • |
  • 2016-09-12 출간
  • |
  • 716페이지
  • |
  • 190 X 241 X 39 mm /1329g
  • |
  • ISBN 9791158390471
★★★★★ 평점(10/10) | 리뷰(1)
판매가

42,000원

즉시할인가

37,800

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
37,800

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

『리눅스 커널 네트워킹』은 현재 리눅스 네트워킹 구현과 내부 이론의 깊이 있는 여정을 안내할 것이다. 리눅스 커널 네트워킹은 그 자체가 복잡한 주제이라서 이 책에서는 네트워킹과 직접적으로 관련되지 않은 주제로 여러분을 부담스럽게 하지 않을 것이다. 이 책은 여러분이 찾는 것과 직접적으로 연관되지 않는 성가신 코드로 지나치게 부담스럽게 하지도 않는다. 여러분이 필요한 내용만 보게 될 것이고, 각 장에서는 당면 주제를 깊이 있게 설명하고 각 장의 끝에서는 빠르게 본문 내용을 참조할 수 있다.

『리눅스 커널 네트워킹』은 네트워킹이 어떻게 구현돼 있는지 이해하는 유일한 최신 안내서이다. 현재 수많은 장치가 리눅스 또는 리눅스를 기반으로 한 운영체제(예: 안드로이드)를 사용하고 있으며, Xen과 KVM 같은 리눅스 기반 가상화 기술을 비롯해 데이터 센터 분야에서도 리눅스가 폭넓게 사용되고 있으므로 이 책은 앞으로 수년 동안 필독서가 될 것이다.

★ 이 책에서 다루는 내용 ★

◎ 소켓 버퍼를 빅롯한 커널 네트워킹 기초
◎ ARP, 이웃 탐색, ICMP 같은 핵심 프로토콜의 구현 원리
◎ IPv4와 IPv6에 관한 심층적 고찰
◎ 리눅스 라우팅에 관해 알아야 할 모든 것
◎ 넷필터와 IPsec의 구현 원리
◎ 리눅스 무선 네트워킹
◎ 네트워크 네임스페이스, NFC, IEEE 802.15.4, 블루투스, 인피니밴드 등의 추가 주제

목차

▣ 01장: 들어가며
리눅스 네트워크 스택
네트워크 장치
네트워크 장치의 NAPI(New API)
패킷의 수신과 송신
소켓 버퍼
리눅스 커널 네트워킹 개발 모델
정리

▣ 02장: 넷링크 소켓
넷링크 계열
넷링크 소켓 라이브러리
sockaddr_nl 구조체
TCP/IP 네트워킹 제어를 위한 사용자 공간 패키지
커널 넷링크 소켓
넷링크 메시지 헤더
NETLINK_ROUTE 메시지
라우팅 테이블에서의 라우팅 항목의 추가와 삭제
일반 넷링크 프로토콜
일반 넷링크 메시지 생성과 전송
소켓 감시 인터페이스
정리
빠른 참조

▣ 03장: 인터넷 제어 메시지 프로토콜(ICMP)
ICMPv4
ICMPv4 초기화
ICMPv4 헤더
ICMPv4 메시지 수신
ICMPv4 메시지 전송: “목적지에 연결할 수 없음”
- 코드 2: ICMP_PROT_UNREACH(프로토콜에 연결할 수 없음)
- 코드 3: ICMP_PORT_UNREACH (“포트에 연결할 수 없음”)
- 코드 4: ICMP_FRAG_NEEDED
- 코드 5: ICMP_SR_FAILED
ICMPv6
ICMPv6 초기화
ICMPv6 헤더
ICMPv6 메시지 수신
ICMPv6 메시지 전송
- 예제: “홉 제한 시간 초과” ICMPv6 메시지 전송
- 예제: “단편화 재조립 시간 초과” ICMPv6 메시지 전송
- 예제: “목적지에 연결할 수 없음”/“포트에 연결할 수 없음” ICMPv6 메시지 전송
- 예제: “단편화 필요” ICMPv6 메시지 전송
- 예제: “매개변수 문제” ICMPv6 메시지 전송
ICMP 소켓(“핑 소켓”)
정리
빠른 참조
- 함수
- 표
procfs 항목
- sysctl_icmp_echo_ignore_all
- sysctl_icmp_echo_ignore_broadcasts
- sysctl_icmp_ignore_bogus_error_responses
- sysctl_icmp_ratelimit
- sysctl_icmp_ratemask
- sysctl_icmp_errors_use_inbound_ifaddr
iptables를 이용해 “목적지에 연결할 수 없음” 메시지 생성하기

▣ 04장: IPv4
IPv4 헤더
IPv4 초기화
IPv4 패킷 수신
IPv4 멀티캐스트 패킷 수신
IP 옵션
타임스탬프 옵션
경로 저장 옵션
IP 옵션과 단편화
IP 옵션 만들기
IPv4 패킷 전송
단편화
빠른 경로
느린 경로
역단편화
포워딩
정리
빠른 참조
- 함수
- 매크로

▣ 05장: IPv4 라우팅 서브시스템
포워딩과 FIB
라우팅 서브시스템의 탐색 수행
FIB 테이블
FIB 정보
캐싱
다음 홉(fib_nh)
- FIB 다음 홉 예외
정책 라우팅
FIB 별칭(fib_alias)
ICMPv4 재지정 메시지
ICMPv4 재지정 메시지 생성
ICMPv4 재지정 메시지 수신
IPv4 라우팅 캐시
- Rx 경로
- Tx 경로
정리
빠른 참조
- 함수
- 매크로
- 표
- 경로 플래그

▣ 06장: 고급 라우팅
멀티캐스트 라우팅
IGMP 프로토콜
멀티캐스트 라우팅 테이블
멀티캐스트 포워딩 캐시(MFC)
멀티캐스트 라우터
Vif 장치
IPv4 멀티캐스트 Rx 경로
ip_mr_forward() 함수
ipmr_queue_xmit() 함수
ipmr_forward_finish() 함수
멀티캐스트 통신의 TTL
정책 라우팅
정책 라우팅 관리
정책 라우팅 구현
다중경로 라우팅
정리
빠른 참조
- 함수
- 매크로
- procfs 멀티캐스트 항목
- 표

▣ 07장: 리눅스 이웃 서브시스템
이웃 서브시스템의 핵심 요소
이웃 생성과 해제
사용자 공간과 이웃 서브시스템 간의 상호작용
네트워크 이벤트 처리
ARP 프로토콜(IPv4)
ARP: 의뢰 요청 전송
ARP: 의뢰 요청 수신과 응답
NDISC 프로토콜 (IPv6)
중복 주소 탐지(DAD)
NDISC: 의뢰 요청 전송
NDISC: 이웃 의뢰와 알림 수신
정리
빠른 참조
- 함수
- 매크로
- neigh_statistics 구조체
- 표

▣ 08장: IPv6
간단한 IPv6 소개
IPv6 주소
특수한 주소
멀티캐스트 주소
IPv6 헤더
확장 헤더
IPv6 초기화
자동설정
IPv6 패킷 수신
로컬 전달
포워딩
IPv6 멀티캐스트 패킷 수신
멀티캐스트 리스너 탐색(MLD)
멀티캐스트 그룹 참가와 탈퇴
MLDv2 멀티캐스트 리스너 보고
멀티캐스트 출발지 필터링(MSF)
- 출발지 필터링을 이용한 멀티캐스트 그룹 참가와 탈퇴
- 예제: 출발지 필터링을 위한 MCAST_MSFILTER 사용
IPv6 패킷 전송
IPv6 라우팅
정리
빠른 참조
- 함수
- 매크로
- 표
- 특수한 주소
- IPv6 라우팅 테이블 관리

▣ 09장: 넷필터
넷필터 프레임워크
넷필터 훅
넷필터 훅의 등록
연결 추적
연결 추적 초기화
연결 추적 항목
연결 추적 도우미와 예상
IPTables
로컬 호스트로 전달
패킷 포워딩
네트워크 주소 변환(NAT)
NAT 초기화
NAT 훅 콜백과 연결 추적 훅 콜백
NAT 훅 콜백
연결 추적 확장
정리
빠른 참조
- 함수
- 매크로
- 표
- 도구와 라이브러리

▣ 10장: IPsec
개요
IKE(인터넷 키 교환)
IPsec와 암호화
XFRM 프레임워크
XFRM 초기화
XFRM 정책
XFRM 상태(보안 연관)
ESP 구현(IPv4)
IPv4 ESP 초기화
IPsec 패킷 수신(전송 모드)
IPsec 패킷 전송(전송 모드)
XFRM 탐색
IPsec에서의 NAT 이동
NAT-T 동작 모드
정리
빠른 참조
- 함수
- 표

▣ 11장: 4계층 프로토콜
소켓
소켓 생성
UDP(사용자 데이터그램 프로토콜)
UDP 초기화
UDP를 이용한 패킷 전송
네트워크 계층(L3)에서 UDP로 패킷 수신
TCP(전송 제어 프로토콜)
TCP 헤더
TCP 초기화
TCP 타이머
TCP 소켓 초기화
TCP 연결 설정
네트워크 계층(L3)에서 TCP로 패킷 수신
TCP를 이용한 패킷 송신
SCTP(스트림 제어 전송 프로토콜)
SCTP 패킷과 청크
SCTP 공통 헤더
SCTP 청크 헤더
SCTP 청크
SCTP 연관
SCTP 연관 설정
SCTP로 패킷 수신
SCTP를 이용한 패킷 송신
SCTP 하트비트(HEARTBEAT)
SCTP 멀티스트리밍
SCTP 멀티호밍
DCCP(데이터그램 혼잡 제어 프로토콜)
DCCP 헤더
DCCP 초기화
DCCP 소켓 초기화
네트워크 계층(L3)에서 DCCP로 패킷 수신
DCCP를 이용한 패킷 송신
DCCP와 NAT
정리
빠른 참조
- 함수
- 매크로
- 표

▣ 12장: 리눅스의 무선
MAC80211 서브시스템
802.11 MAC 헤더
프레임 제어
다른 802.11 MAC 헤더 멤버
네트워크 토폴로지
기반구조 BSS
IBSS 또는 애드 혹 모드
절전 모드
절전 기능 진입
절전 기능에서 나가기
멀티캐스트/브로드캐스트 버퍼 처리
관리 계층(MLME)
검사
인증
연관
재연관
Mac80211 구현
Rx 경로
Tx 경로
단편화
Mac80211 debugfs
무선 모드
높은 처리량(ieee802.11n)
패킷 집합
- 블록 확인응답 요청(BAR)
- 블록 확인응답
메시 네트워킹(802.11s)
HWMP 프로토콜
메시 네트워크 설정
리눅스 무선 개발 과정
정리
빠른 참조
- 함수
- 표

▣ 13장: 인피니밴드
RDMA와 인피니밴드 개요
RDMA 스택 구성
RDMA 기술의 장점
인피니밴드의 하드웨어 구성 요소
인피니밴드의 주소
인피니밴드 기능
인피니밴드 패킷
관리 개체
RDMA 자원
RDMA 장치
보호 도메인(PD)
주소 처리(AH)
메모리 영역(MR; Memory Region)
빠른 메모리 영역(FMR; Fast Memory Region) 풀
메모리 윈도우(MW; Memory Window)
완료 큐(CQ; Completion Queue)
신뢰적 확장 연결(XRC) 도메인
공유 수신 큐(SRQ)
큐 쌍(QP)
- QP 전송 타입
- QP 상태 기계
작업 요청 처리
RDMA 아키텍처에서 지원되는 연산
- 작업 완료 상태
멀티캐스트 그룹
사용자 공간과 커널 수준 RDMA API의 차이점
정리
빠른 참조
- 함수

▣ 14장: 고급 주제
네트워크 네임스페이스
네임스페이스 구현
UTS 네임스페이스 구현
네트워크 네임스페이스 구현
- 네트워크 네임스페이스 객체(struct net)
- 네트워크 네임스페이스 구현: 다른 자료구조
네트워크 네임스페이스 관리
- 다른 네트워크 네임스페이스로 네트워크 인터페이스 옮기기
- 두 네트워크 네임스페이스 사이의 통신
cgroup
cgroup 구현
cgroup 장치 컨트롤러: 간단한 예제
cgroup 메모리 컨트롤러: 간단한 예제
cls_cgroup 분류자
cgroup 서브시스템 마운트
바쁜 폴링 소켓
전역적으로 활성화하기
소켓마다 활성화하기
조율과 구성
성능
리눅스 블루투스 서브시스템
HCI 계층
- HCI 장치
- HCI와 하위 계층(링크 컨트롤러)
- HCI와 상위 계층(L2CAP/SCO)
HCI 연결
L2CAP
BNEP
- 블루투스 패킷 수신: 다이어그램
L2CAP 확장 기능
블루투스 도구
IEEE 802.15.4와 6LoWPAN
이웃 탐색 최적화
리눅스 커널 6LoWPAN
- 6LoWPAN 초기화
근거리 무선 통신(NFC)
NFC 태그
NFC 장치
통신 모드와 동작 모드
호스트-컨트롤러 인터페이스
리눅스 NFC 지원
- NFC 소켓
- NFC 넷링크 API
- NFC 초기화
- 드라이버 API
사용자 공간 아키텍처
안드로이드 NFC
알림 연쇄
PCI 서브시스템
웨이크 온 랜(WOL; Wake-On-LAN)
티밍 네트워크 장치
PPPoE 프로토콜
PPPoE 헤더
PPPoE 초기화
- PPPoX 소켓
PPPoE를 이용한 패킷 송수신
안드로이드
안드로이드 네트워킹
안드로이드 내부: 참고 자료
정리
빠른 참조
- 함수
- 매크로

▣ 부록A: 리눅스 API
sk_buff 구조체
skb_shared_info 구조체
net_device 구조체
RDMA(원격 DMA)
RDMA 장치
- ib_register_client() 함수
- ib_client 구조체
- ib_unregister_client() 함수
- ib_get_client_data() 함수
- ib_set_client_data()
- INIT_IB_EVENT_HANDLER 매크로
- ib_register_event_handler() 함수
- ib_event_handler 구조체
- ib_event 구조체
- ib_unregister_event_handler() 함수
- ib_query_device() 함수
- ib_query_port() 함수
- rdma_port_get_link_layer() 함수
- ib_query_gid() 함수
- ib_query_pkey() 함수
- ib_modify_device() 함수
- ib_modify_port() 함수
- ib_find_gid() 함수
- ib_find_pkey() 함수
- rdma_node_get_transport() 함수
- rdma_node_get_transport() 함수
- ib_mtu_to_int() 함수
- ib_width_enum_to_int() 함수
- ib_rate_to_mult() 함수
- ib_rate_to_mbps() 함수
보호 도메인(PD; Protection Domain)
- ib_alloc_pd() 함수
- ib_dealloc_pd() 함수
확장된 신뢰성 있는 연결(XRC)
- ib_alloc_xrcd() 함수
- ib_dealloc_xrcd_cq() 함수
공유 수신 큐(SRQ)
- ib_create_srq() 함수
- ib_modify_srq() 함수
- ib_query_srq() 함수
- ib_destroy_srq() 함수
- ib_post_srq_recv() 함수
주소 처리(AH)
- ib_create_ah() 함수
- ib_init_ah_from_wc() 함수
- ib_create_ah_from_wc() 함수
- ib_modify_ah() 함수
- ib_query_ah() 함수
- ib_destroy_ah() 함수
멀티캐스트 그룹
- ib_attach_mcast() 함수
- ib_detach_mcast() 함수
완료 큐(CQ; Completion Queue)
- ib_create_cq() 함수
- ib_resize_cq() 함수
- ib_modify_cq() 함수
- ib_peek_cq() 함수
- ib_req_notify_cq() 함수
- ib_req_ncomp_notif() 함수
- ib_poll_cq() 함수
- ib_destroy_cq() 함수
큐 쌍(QP; Queue Pair)
- ib_create_qp() 함수
- ib_modify_qp() 함수
- ib_query_qp() 함수
- ib_open_qp() 함수
- ib_close_qp() 함수
- ib_post_recv() 함수
- ib_post_send() 함수
메모리 윈도우(MW)
- ib_alloc_mw() 함수
- ib_bind_mw() 함수
- ib_dealloc_mw() 함수
메모리 영역(MR)
- ib_get_dma_mr() 함수
- ib_dma_mapping_error() 함수
- ib_dma_map_single() 함수
- ib_dma_unmap_single() 함수
- ib_dma_map_single_attrs() 함수
- ib_dma_unmap_single_attrs() 함수
- ib_dma_map_page() 함수
- ib_dma_unmap_page() 함수
- ib_dma_map_sg() 함수
- ib_dma_unmap_sg()
- ib_dma_map_sg_attr() 함수
- ib_dma_unmap_sg() 함수
- ib_sg_dma_address() 함수
- ib_sg_dma_len() 함수
- ib_dma_sync_single_for_cpu() 함수
- ib_dma_sync_single_for_device() 함수
- ib_dma_alloc_coherent() 함수
- ib_dma_free_coherent() 함수
- ib_reg_phys_mr() 함수
- ib_rereg_phys_mr() 함수
- ib_query_mr() 함수
- ib_mr_attr 구조체
- ib_dereg_mr() 함수

▣ 부록B: 네트워크 관리
arp
arping
arptables
arpwatch
ApacheBench (ab)
brctl
conntrack-tools
crtools
ebtables
ether-wake
ethtool
깃(git)
hciconfig
hcidump
hcitool
ifconfig
ifenslave
iperf
iperf 사용
iproute2
iptables와 iptables6
ipvsadm
iw
iwconfig
libreswan 프로젝트
l2ping
lowpan-tools
lshw
lscpu
lspci
mrouted
nc
ngrep
netperf
netsniff-ng
netstat
nmap(네트워크 변환기)
openswan
OpenVPN
packeth
ping
pimd
poptop
ppp
pktgen
radvd
route
RP-PPPoE
sar
smcroute
snort
suricata
strongSwan
sysctl
taskset
tcpdump
top
tracepath
traceroute
tshark
tunctl
udevadm
unshare
vconfig
wpa_supplicant
wireshark
XORP

▣ 부록C: 용어해설

저자소개

저자 라미 로젠(Rami Rosen)은 소프트웨어 엔지니어이며, 이스라엘 고등 기술 연구소인 테크니온의 컴퓨터과학과를 졸업했다. 지난 17년 동안 세 가지 혁신적인 스타트업과 반도체 회사의 소프트웨어 개발자로 근무했다. 현재 이스라엘에 살고 있으며, 첨단 리눅스 커널 프로젝트(특히 네트워킹에 관련된)에 참여하고 있다. 그는 여러 편의 논문을 발표했고 리눅스 커널 네트워킹과 가상화에 관해 강의했다.

도서소개

『리눅스 커널 네트워킹』은 최신의 리눅스 네트워킹 서브 시스템을 다루는 책이다. 리눅스 네트워킹 서브 시스템이 기초적이고, 안정적이지만 수많은 프로토콜과 기술이 녹아들어 있는 네트워킹 서브 시스템 코드를 분석한다는 것은 쉽지 않다. 그동안 리눅스 커널 코어나 드라이버에 관련한 책은 많이 있었지만, 리눅스 네트워킹 서브시스템의 구현에 대한 자세한 세부사항을 알려주는 책은 거의 없었다. 이 책은 리눅스 네트워킹 서브 시스템의 전반적인 흐름을 파악할 수 있게 하며, 요즘 같이 리눅스 커널 버전이 하루가 다르게 올라가는 세상에서 최신 버전으로 리눅스 네트워킹을 이해하는 데 많은 도움이 될 것이다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.