Top

TCP/IP Illustrated, Volume 1, Second Edition 한국어판 [TCP/IP 네트워크 프로토콜의 이해]

  • 원서명TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition) (ISBN 9780321336316)
  • 지은이케빈 폴, 리차드 스티븐스
  • 옮긴이김중규, 이광수, 이재광, 홍충선
  • ISBN : 9788960773837
  • 58,000원
  • 2013년 01월 21일 펴냄
  • 페이퍼백 | 1,184쪽 | 188*250mm
  • 시리즈 : 네트워크 프로그래밍

책 소개

이 책은 오늘날의 TCP/IP 프로토콜 모음에 대한 완벽 가이드다. 최신의 혁신적 수정 사항들을 완전하게 반영했으며, 최신 리눅스, 윈도우, 맥 OS 환경 등의 실제적인 예제를 통해 각 프로토콜이 어떻게 동작하는지를 보여준다. 이 책은 TCP/IP의 동작 원리, 일반적인 조건에서 동작 내용, 또 다양한 애플리케이션이나 네트워크상에서 TCP/IP가 어떻게 적용되는지 이해하기 위한 최적의 안내서다. TCP/IP의 핵심적인 목표와 구조적인 개념을 소개하고, TCP/IP가 다양한 네트워크들을 어떻게 안정적으로 연결하고 또 여러 서비스를 어떻게 동시에 지원할 수 있는지 보여준다.


[ 소개 ]

“이 책에서는 설명하는 지식은 인터넷 작업의 고도화와 안전성 제고를 목표로 하거나 지속적으로 발생하는 문제에 대한 해결책을 강구하고자 하는 엔지니어들에게 큰 도움이 될 것이다.”
- 빈트 서프(Vint Cerf) / 인터넷의 선구자


『TCP/IP Illustrated, Volume 1, Second Edition』은 오늘날의 TCP/IP 프로토콜 모음에 대한 상세하고도 생생한 안내서다. 최신의 혁신적 수정 사항들을 완전하게 반영했으며, 최신 리눅스, 윈도우, 맥 OS 환경 등으로부터의 현실적 예제들을 통해 각 프로토콜이 어떻게 동작하는지 보여준다. 이것은 TCP/IP의 동작 원리, 일반적인 조건에서의 동작 내용, 다양한 애플리케이션이나 네트워크상에서 TCP/IP가 어떻게 적용되는지를 이해하기 위한 최선의 방법이다.

작고한 리차드 스티븐스(Richard Stevens)가 저술한 초판을 바탕으로 2판의 저자인 케빈 폴(Kevin R. Fall)은 TCP/IP 프로토콜 연구의 선도자로서의 최첨단 경험들을 추가했으며, 최신 프로토콜들과 모범 사례들을 반영해 책의 내용을 대폭 수정했다. 케빈은 먼저 TCP/IP의 핵심적인 목표들과 구조적 개념들을 소개하고, TCP/IP가 다양한 네트워크들을 어떻게 안정적으로 연결할 수 있는지, 또 여러 서비스를 어떻게 동시에 지원할 수 있는지 보여준다. 그런 다음 IPv4 네트워크와 IPv6 네트워크에서의 인터넷 주소 체계를 찬찬히 설명한다. 그 후 이더넷이나 와이파이 등의 링크 계층 프로토콜에서부터 네트워크 계층, 트랜스포트 계층, 응용 계층에 이르기까지 TCP/IP의 구조와 기능들을 하위 계층에서 상위 계층으로 옮겨가며 설명한다.

ARP, DHCP, NAT, 방화벽, ICMPv4/ICMPv6, 브로드캐스팅, 멀티캐스팅, UDP, DNS 등을 비롯한 수많은 프로토콜들을 자세하게 소개한다. 그리고 TCP와 신뢰성 있는 전송에 관련된 연결 관리, 타임아웃, 재전송, 대화형 데이터 흐름, 혼잡 제어 등도 자세히 다룬다. 끝으로 보안과 암호학의 기본적인 개념들을 소개하고, 보안성과 프라이버시 보호를 위한 EAP, IPsec, TLS, DNSSEC, DKIM 등과 같은 최근의 주요 프로토콜들도 설명한다.

독자의 현재 TCP/IP에 대한 지식 수준에 관계없이 이 책은 전체 TCP/IP 프로토콜들에 대한 직관적 이해를 제고시켜줄 것이며, 이를 통해 좀 더 나은 애플리케이션을 작성할 수도 있고, 좀 더 효율적이면서도 신뢰할 수 있는 네트워크를 운영할 수도 있을 것이다.


[ 이 책의 대상 독자 ]

2판에서 대상으로 삼은 독자층은 1판의 경우와 같다. 이 책을 이해하는 데 네트워킹 개념에 대한 사전 지식은 필요하지 않지만, 사전 지식이 있는 고급 독자라면 세부 사항이나 참고 자료 등을 더 잘 활용할 수 있을 것이다. 추가적인 내용을 찾아보고 싶은 독자들을 위해 각 장의 끝에 풍부한 참고 자료들을 제시했다.


[ 2판에서의 내용상 변화 ]

내용에 있어 1판과의 가장 중요한 변화는 전반적으로 다루는 범위의 재구성과 보안 관련 내용을 많이 추가한 것이다. 인터넷상의 모든 계층에서 사용되는 거의 모든 프로토콜들을 다루는 대신 2판에서는 먼저 현재 널리 사용되고 있거나 가까운 장래에 널리 사용될 것으로 예상되는 비 보안 프로토콜들을 자세히 소개하는데, 여기에는 이더넷(802.3), Wi-Fi(802.11), PPP, ARP, IPv4, IPv6, UDP, TCP, DHCP, DNS 등이 포함된다. 시스템 관리자나 일반 사용자 모두 이러한 프로토콜들을 접하기 쉬울 것이다.

2판에서 보안은 두 가지 형태로 다루고 있다. 먼저 해당사항이 있는 각 장에서 한 절을 할애해 그 장에서 다루는 프로토콜에 관련된 공격들과 대응책들을 기술한다. 이러한 기술에서 공격을 구성하기 위한 방법을 구체적으로 제시하고 있지는 않으며, 대신 프로토콜의 구현이 (때로는 규격 자체가) 충분히 안정돼 있지 않을 때 발생할 수 있는 문제점 유형들에 대한 실무적 해설이 제시된다. 오늘날의 인터넷에서 불완전한 규격이나 안이한 구현으로 인해 비교적 단순한 공격으로도 주요 업무 시스템들이 침해될 수 있다.

보안에 관한 두 번째의 중요한 논의는 18장에서 이뤄지는데, 여기에서는 보안과 암호학을 자세히 살펴보며, 또한 IPsec, TLS, DNSSEC, DKIM 등의 프로토콜들도 소개한다. 무결성이나 안전한 운영의 확보를 요하는 모든 서비스나 애플리케이션의 구현에서 이상의 프로토콜들이 중요하다는 것은 오늘날 널리 인식돼 있다. 인터넷의 상업적 중요성이 증가함에 따라 보안에 대한 필요성도 (그리고 그에 대한 위협의 수도) 이에 비례해 증가하고 있다.

1판에는 IPv6이 포함되지 않았지만, 2011년 2월 미할당 IPv4 주소 그룹들이 고갈됨에 따라 IPv6의 사용이 크게 증가할 것으로 예상된다. IPv6의 주요 탄생 동기는 IPv4의 주소 고갈 문제를 해결하기 위한 것이며, 아직은 IPv4만큼 보편화돼 있지는 않지만 인터넷에 연결된 (휴대폰, 가정용 기기, 환경 센서 등과 같은) 소형 기기의 수가 증가함에 따라 점차 중요성을 더해가고 있다. (2011년 6월 8일로 정해진) 세계 IPv6의 날과 같은 이벤트들이 하위 프로토콜상의 상당한 변화와 기능 확대에도 불구하고 인터넷의 가동에 별 문제가 없음을 확인시켜주는 데 도움이 되고 있다.

2판의 구성에서 두 번째로 고려한 점은 별로 사용되지 않는 프로토콜들에 관한 내용은 축소하고 1판의 출간 이래 상당한 수정이 이뤄진 프로토콜들에 대한 수정 사항들을 반영하는 것이다. RARP, BOOTP, NFS, SMTP, SNMP 등을 다루는 장들은 없앴으며, SLIP 프로토콜에 대한 설명은 DHCP와 PPP(PPPoE 포함)에 대한 설명을 확장하는 것으로 대체했다. (1판의 9장에서 설명했던) IP 포워딩 기능은 2판에서는 5장의 IPv4와 IPv6 프로토콜에 관한 전반적인 내용에 편입했다. (RIP, OSPF, BGP 등의) 동적 라우팅 프로토콜에 관한 설명은 없앴는데, 이는 OSPF와 BGP만으로도 책 한 권 분량은 되기 때문이다. ICMP에서 시작해 IP, TCP, UDP 등에 이르기까지 IPv4와 IPv6 동작 차이가 클 경우 이러한 차이점을 다뤘다. IPv6에 대한 별도의 장을 두는 대신 해당 사항이 있을 경우 각각의 핵심 프로토콜에서 IPv6의 영향에 대해 기술했다. 인터넷 애플리케이션들과 지원 프로토콜들을 다뤘던 1판의 15장과 25~30장의 대부분은 삭제했으며, 하위 핵심 프로토콜의 동작을 보여주기 위해 필요한 것들만은 남겨뒀다.

새로운 내용들을 다루는 몇 개의 장이 추가됐다. 1장에서는 네트워킹 관련 이슈들과 아키텍처에 대한 일반 개요에서부터 시작해 인터넷 관련 내용들을 소개한다. 인터넷 주소체계 아키텍처에 대해서는 2장에서 다룬다. 6장은 호스트 구성과 시스템을 네트워크에 연결하는 방법 등을 다루는 내용으로 새로 추가했다. 7장에서는 방화벽과 NAT(Network Address Translation, 네트워크 주소 변환)를 다루는데, 여기에는 라우팅 가능한 영역과 라우팅 불가능한 영역 사이에서 주소 공간을 분할하기 위해 NAT가 어떻게 사용되는지도 다뤘다. 1판에서 사용된 도구들 외에 (그래픽 사용자 인터페이스를 갖춘 무료 네트워크 트래픽 모니터 애플리케이션인) 와이어샤크가 추가됐다.


[ 1판에 쏟아진 각계의 찬사 ]

이 책은 TCP/IP 개발자와 사용자를 위한 바이블이나 다름없다. 이 책을 펴든 지 몇 분 만에 나 자신과 동료들이 고민해왔던 시나리오들을 찾을 수 있었다. 스티븐스는 이 책에서 기존의 네트워크 계통 도사라는 사람들이 모호하게 감춰왔던 수많은 비밀들을 명쾌하게 밝혀준다. 이 책은 다년간 TCP/IP 구현에 종사하면서 지금까지 보아온 책들 중에서 가장 훌륭한 책이다.
- 로버트 시암파(Robert A. Ciampa) / 네트워크 엔지니어, 3COM의 Synernetics 부문

스티븐스의 모든 책이 읽기 쉬우면서도 기술적으로 훌륭한 내용을 담고 있지만, 이 책이야말로 단연 최고다. 그 동안 많은 책이 TCP/IP 프로토콜들을 기술했지만, 스티븐스는 다른 경쟁 서적과는 비교할 수 없는 깊이와 현실 세계의 세부 사항을 제공한다. 이 책은 독자로 하여금 TCP/IP 내부를 들여다볼 수 있게 도와주며, 프로토콜이 어떻게 동작하는지를 보여준다.
- 스티븐 베이커(Steven Baker) / 「유닉스 리뷰」의 네트워킹 칼럼니스트

『TCP/IP Illustrated』는 개발자, 네트워크 관리자, 또는 TCP/IP 기술에 대한 이해를 필요로 하는 누구에게나 훌륭한 참고 서적이다. 『TCP/IP Illustrated』는 TCP/IP 관련 주제들을 포괄적으로 다루며, 초심자를 위한 충분한 배경 지식과 해설을 제공하면서도 전문가들도 만족시킬 정도의 세부 사항들을 제공한다.
- 밥 윌리엄즈(Bob Williams) / 넷매니지 사의 마케팅 부문 부사장

이 책의 차별성은 스티븐스가 프로토콜들에 대해 설명하는 것뿐만 아니라 직접 프로토콜들을 보여주고자 한다는 점이다. 스티븐스는 명쾌한 설명, 각 장 말미의 연습문제, 프로토콜 헤더 및 데이터에 관한 상세한 다이어그램, 실제 네트워크 트래픽 예제 등의 다양한 도구를 이용해 프로토콜들을 가르쳐준다.
- 월터 진츠(Walter Zintz) / 유닉스월드

이론만 소개하는 책들과는 비교도 할 수 없다. (중략) 스티븐스는 다중 호스트 기반의 구성을 취해 TCP/IP 예제를 위한 설명에 그림들을 사용한다. 『TCP/IP Illustrated』는 이론을 보완하는 현실적 사례들에 기초하고 있다. 이는 TCP/IP에 관한 기존의 책들과 구별되는 특징이며, 이렇듯 사례를 이용한 설명은 이 책의 내용을 이해하는 데 도움이 되고 또한 많은 정보를 제공한다.
- 피터 하버록(Peter M. Haverlock) / IBM TCP/IP Development 컨설턴트

이 책에는 훌륭한 그림들이 들어있으며, 깔끔한 문체를 사용해 읽기 쉽게 작성됐다. 한마디로 복잡한 주제를 이해하기 쉽게 만들어준 책이다. 모든 사람에게 필독서로 추천한다.
- 엘리자베스 진칸(Elizabeth Zinkann) / 시스템 관리자

스티븐스는 훌륭한 교재이자 참고 서적을 저술했다. 이 책은 훌륭한 구성과 깔끔한 서술을 갖췄으며, 또한 IP, TCP, 기타 지원 프로토콜과 응용 등의 논리와 운영에 관한 세부 사항을 수많은 훌륭한 그림과 함께 기술한다.
- 스콧 브래드너(Scott Bradner) / 하버드 대학 OIT/NSD 컨설턴트


[ 추천의 글 ]

널리 알려진 주제에 대해 역사적 사실과 기술적 내용을 풍부하게 서술하면서도 고도의 정확성을 유지하고 있는 책을 발견하기란 쉽지 않다. 이 책의 놀라운 점 한 가지는 ‘적나라한’ 기술 방식인데, TCP/IP의 결함에 대해서도 감추지 않는 이러한 기술 방식은 오히려 이 서적의 신빙성을 더해준다. TCP/IP 아키텍처는 그 탄생 시점을 반영하고 있다. 엄청나게 늘어난 애플리케이션은 말할 것도 없이 수백만 배 이상 확대된 사용 규모에 따라 여러 측면에서 추가된 요구사항들에 TCP/IP가 적응할 수 있었던 것은 놀라운 일이다. TCP/IP 아키텍처와 프로토콜들의 범위와 한계에 대한 이해는 미래의 진화와 혁신에 대한 사고에 있어 견실한 기초로 작용할 것이다.

인터넷 아키텍처가 초창기에 형성될 당시에는 ‘기관’이라는 개념이 정립돼 있지 않았다. 결과적으로 대부분의 네트워크들은 자체적인 IP 주소 공간을 갖고 라우팅 시스템에 자신의 주소들을 직접 ‘공표’했다. 상용 서비스의 도입 이후 자사 고객들을 대신해 인터넷 주소 블록을 ‘공표하는’ 중개자로서의 인터넷 서비스 제공자ISP들이 등장했다. 이러한 이유로 대부분의 주소 공간은 ‘공급자 종속’ 방식으로 배정돼 있으며, ‘공급자 독립’ 주소 체계의 사용은 점차 드물게 됐다. 그 결과 라우팅 경로 요약이 생겨났으며, 글로벌 라우팅 테이블 크기도 한없이 늘어나는 것을 막을 수 있었다. 이러한 전략은 나름의 이점들도 있지만, 공급자 종속 주소의 사용자들이 글로벌 라우팅 테이블에 각자의 주소를 등록하지 않으므로 ‘다중 홈’ 문제가 발생하게 됐다. 또한 IP 주소 ‘고갈’로 인해 네트워크 주소 변환이 생겨났으며, 이는 공급자 종속성과 다중 홈 문제를 심화시켰다.

이 책을 읽다 보면 작은 수의 네트워크와 응용 환경에 적용됐던 비교적 단순한 개념들에서 얼마나 복잡하게 진화돼 왔는지를 생각해보면 놀라운 느낌을 받게 된다. 이 책의 각 장을 통해 TCP/IP가 새로운 운용 조건이나 도전 과제, 시스템 규모의 급속한 성장 등으로 인해 발생한 수많은 요구 사항들을 수용하기 위해 얼마나 복잡해졌는지 알 수 있을 것이다.

인터넷의 ‘기관’ 사용자 보호와 관련된 문제로 인해 경계선 보안을 제공하는 방화벽이 생겨나게 됐다. 방화벽이 유용하기는 하지만 지역 인터넷 설비에 대한 공격은 내부 침해를 통해 발생할 수도 있다. 예를 들면 감염된 컴퓨터를 내부 네트워크상에 연결시킬 수도 있고, USB 포트를 통해 내부의 컴퓨터를 감염시키기 위해 감염된 휴대용 저장기기가 사용될 수도 있다.

340×1조×1조×1조 개의 주소를 제공하는 IP 버전 6의 도입을 통해 인터넷 주소 공간을 확장할 필요 외에도 DNSSEC(Domain Name System Security Extension, DNS 보안 확장)을 위시한 다양한 보안 강화 메커니즘을 도입할 필요가 있었음은 명백하다.

이 책의 독특한 점은 TCP/IP 역사에 대해 진지하고 자세히 서술했다는 점이다. 이러한 서술을 통해 네트워킹 문제들에 대한 해결책들이 어떻게 진화해왔는지에 대한 배경과 발전 사항들을 살펴볼 수 있다. 이 책은 또한 해결되지 않은 문제 영역들을 밝히는 일과 서술의 정확성을 제고하기 위한 노력을 아끼지 않고 있다. 인터넷 작업의 정밀성과 안전성을 제고하고 만성적인 문제들에 대한 해결책을 탐색하는 일에 열의를 갖고 있는 엔지니어라면 이 책에서 얻는 지식들이 큰 도움이 될 것이다. 이 책의 저자들은 최신 인터넷 기술들을 면밀하게 서술한 점에 대해 칭송받을 만한 자격이 있다.

- 빈트 서프(Vint Cerf)
2011년 6월 우드허스트에서

저자/역자 소개

[ 저자 서문 ]

『TCP/IP Illustrated, Volume 1, Second Edition』을 접하게 된 여러분을 환영한다. 이 책은 TCP/IP 프로토콜들을 최신 상태로 자세히 서술하는 것이 목표다. 이 책에서는 TCP/IP 프로토콜들이 어떻게 작동하는지에 대한 서술에 그치지 않고 다양한 분석 도구를 사용해 TCP/IP 프로토콜 동작 모습을 살펴본다. 이를 통해 TCP/IP 프로토콜 설계 결정의 배경과 프로토콜들 사이의 상호작용을 이해할 수 있을 뿐만 아니라, 프로토콜 구현 소프트웨어의 소스코드를 읽거나 실험 설비를 설치해보지 않고도 구현 세부 사항들을 접할 수 있을 것이다. 물론 소스코드를 읽거나 실험 설비를 설치해보는 것은 이해의 심화에 도움이 될 것이다.

지난 30년 동안 네트워킹은 급속히 발전해왔다. 원래는 연구 프로젝트이며 호기심의 대상으로 출발했던 인터넷은 오늘날 정부, 기업, 개인 모두가 의존하는 글로벌 통신 기반으로 발전했다. TCP/IP 프로토콜들은 인터넷상의 모든 기기가 정보를 교환하기 위해 사용하는 토대가 되는 방법들을 정의한다. 이제 인터넷과 TCP/IP는 IPv6으로 넘어가는 진화 과정에 있으며, 사실상 이러한 변화는 10여 년이 넘게 지체 중이다. 이 책 전반에 걸쳐 IPv6와 현재의 IPv4 양쪽 모두를 서술하지만, 중요한 차이점들도 강조한다. 유감스럽게도 IPv6과 IPv4는 호환되지 않으며, 따라서 이러한 진화의 영향을 파악하려면 신중하고 섬세한 이해가 필요하다.

이 책은 현재의 TCP/IP 프로토콜의 작동 원리에 대한 이해를 높이고자 하는 모든 사람을 위한 책이며, 여기에는 TCP/IP 프로토콜들을 다루는 네트워크 운영자 및 관리자, 네트워크 소프트웨어 개발자, 학생, 사용자 등이 포함된다. 이 책은 1판에 익숙한 독자들뿐만 아니라 이 책을 처음 접하는 독자들에게도 흥미로운 내용들을 포함한다. 이 책의 기존 내용들과 새로 추가된 내용들이 독자들에게 흥미롭고 유용하길 희망한다.

1판에 대한 논평

『TCP/IP Illustrated』 1판의 출간 이래 거의 이십 년이란 세월이 지났다. 이 책은 TCP/IP 프로토콜들을 자세하게 이해하고자 하는 학생들이나 전문가들에게 매우 귀중한 자료들을 포함하고 있으며, 이는 다른 유사 도서들과의 중요한 차이점이다. 오늘날까지도 이 책은 TCP/IP 프로토콜들의 동작에 대한 자세한 정보에 관해서는 가장 훌륭한 참고 서적으로 남아있다. 그러나 정보통신 기술 분야에서는 가장 훌륭한 도서들이라도 세월이 지나면 낡은 것이 되고 말며, 이는 TCP/IP Illustrated 시리즈도 예외일 수는 없다. 2판에서는 스티븐스 박사의 수많은 저술에 공통된 높은 서술 수준과 상세성을 유지하면서도 새로운 내용들을 면밀하게 추가하고자 노력했다.

이 책의 1판에서는 링크 계층에서부터 응용 계층과 네트워크 관리에 이르기까지 광범위한 프로토콜들과 이들의 동작을 다뤘다. 오늘날 이렇게 광범위한 내용을 한 권의 책에 포함시키자면 너무 두꺼운 책이 될 것이다. 이러한 이유로 2판에서는 핵심 프로토콜 위주로 서술했으며, 여기에는 인터넷에서 구성, 명명, 데이터 전달, 보안 등의 기본 서비스 제공에 주로 사용되는 비교적 낮은 레벨의 프로토콜들이 포함된다. 응용, 라우팅, 웹서비스, 기타 중요 주제 등은 이어지는 후속 권들에서 다룬다.

1판이 출판된 이후 TCP/IP 구현의 표준 준수성과 안정성을 개선함에 있어 상당한 진전이 이뤄졌다. 1판에서는 많은 예제에서 구현 오류나 표준에서 벗어난 동작들을 지적했는데, 오늘날의 TCP/IP 구현, 특히 IPv4에 대한 구현에서는 이러한 문제들이 대부분 해소됐다. 지난 18년 동안 TCP/IP 프로토콜 사용이 얼마나 확대됐는지를 생각하면 이러한 상황은 별로 놀라운 일은 아닐 것이다. 오작동하는 구현들은 비교적 드물며, 이는 TCP/IP 프로토콜의 성숙성을 방증한다고 볼 수 있다. 오늘날 핵심 프로토콜들의 동작에서 나타나는 문제점들은 잘 사용되지 않는 프로토콜 기능의 고의적 사용에 따른 경우가 많으며, 이는 1판에서는 중점적으로 다루지 않았던 일종의 보안 관련 사항들로서 2판에서는 이들에 대해 상당한 노력을 할애했다.

21세기의 인터넷 환경

1판이 출판된 이후 인터넷의 사용 패턴이나 중요성에 상당한 변화가 있었다. 가장 명백한 분수령적인 사건은 1990년대 초반에 시작된 월드와이드웹의 탄생과 상업화이며, 이로 인해 다양한 동기를 갖는 수많은 사람이 인터넷을 이용하게 됐다. 이에 따라 원래 소규모의 학술 기관 환경에서 구현됐던 프로토콜과 시스템은 주소 공간의 제한이나 보안 문제의 증가 등의 문제점들을 겪게 됐다.

보안 위협에 대한 대응으로 네트워크 관리자와 보안 관리자들은 특별한 통제 요소들을 네트워크에 도입했다. 오늘날 인터넷 접속 지점에 방화벽의 설치가 일반화됐으며, 이는 대형 기관들뿐만 아니라 소규모 사업체나 일반 가정의 경우도 마찬가지다. 지난 10여 년 동안 IP 주소와 보안에 대한 수요가 증가하면서 최근의 거의 모든 라우터에서 NAT(Network Address Translation, 네트워크 주소 변환 장치)가 지원되며 NAT의 사용이 광범위하게 확대되고 있다. NAT의 도입으로 인해 인터넷 사이트들은 인터넷 서비스 제공자로부터 받은 비교적 적은 수의 라우팅 가능한 인터넷 주소만으로도 많은 수의 컴퓨터에 IP 주소를 배정할 수 있게 됐는데, 동시에 인터넷에 접속하는 사용자 수만큼의 주소만 있으면 됐다. NAT 도입의 결과로 (거의 무한정의 주소를 제공하는) IPv6으로의 이행이 늦추어지게 됐으며, 일부 오래된 프로토콜들과의 상호운용성 문제가 발생하게 됐다.

1990년대 중반 무렵 PC 사용자들이 인터넷 접속을 요구하기 시작하면서 PC 소프트웨어의 최대 공급자인 마이크로소프트는 전용 소프트웨어를 통한 인터넷 접속 제공이라는 원래의 정책을 버리고 자사의 대부분 제품에서 TCP/IP 호환성을 지원하기 위한 노력을 진행했다. 이후 윈도우 운영체제를 탑재한 PC가 오늘날 인터넷에 연결된 PC들의 주종을 이루게 됐다. 시간이 지나면서 리눅스 기반의 시스템들도 상당히 많아졌으며, 이로 인해 선두 주자로서의 마이크로소프트의 아성은 위협을 받고 있다. 한때 인터넷에 연결된 시스템의 다수를 차지하고 있었던 오라클의 솔라리스나 버클리의 BSD 기반 시스템 등을 포함하는 기타 운영체제들은 이제 인터넷 연결 시스템들 중 비교적 작은 비중을 차지하고 있을 뿐이다. (Mach 기반의) 애플 OS X 운영체제가 새로운 경쟁자로 떠올랐으며, 특히 휴대용 컴퓨터 사용자들 사이에서 인기를 얻고 있다. 2003년에 휴대용 컴퓨터의 매출이 데스크톱 컴퓨터의 매출을 앞질렀으며, 이들의 번창으로 인해 광범위한 지역에서 무선 인프라를 통한 고속 인터넷 접속에 대한 수요를 촉진했다. 2012년 이후 인터넷 접속을 위한 가장 보편적인 방법은 스마트폰일 것으로 예상된다. 태블릿 컴퓨터 또한 성장 중인 중요한 경쟁자일 것이다.

오늘날 무선 네트워크는 음식점, 공항, 커피전문점, 기타 공공장소 등과 같은 수많은 장소에서 제공된다. 대개의 무선 네트워크는 짧은 거리에서 무료 또는 (고정 요금 체계의) 유료 고속 무선 인터넷 접속을 제공하는 하드웨어를 사용해 제공되며, 이러한 무선 네트워크 하드웨어는 사무실이나 가정에서 사용되는 LAN과도 호환성을 갖는다. (LTE, HSPA, UMTS, EV-DO 등과 같은) 휴대폰 표준에 기초한 ‘무선 고속통신망’ 기술들도 선진국들에서 (그리고 최신의 무선 기술로 이행 중인 일부 개발도상국들에서도) 보편화되고 있는데, 이들의 경우 종종 제한적인 대역폭을 제공하며 통신량에 기초한 요금 체계를 따른다. 두 가지 유형의 인프라 모두 휴대용 컴퓨터나 좀 더 소형 기기를 사용해 이동하면서도 인터넷을 이용하기를 원하는 사용자들의 욕구를 다루고 있다. 어느 유형의 인프라를 사용하든 무선 네트워크를 통해 인터넷에 접속하는 이동성 사용자들의 존재는 TCP/IP 프로토콜 아키텍처에 두 가지 중요한 기술적 도전 과제를 제기한다. 첫째, 이동성은 호스트 컴퓨터의 주소가 인접 라우터의 식별 정보에 기초해 배정된다는 가정을 위배하는 것으로 인터넷의 라우팅 및 주소 체계에 영향을 미친다. 둘째, (일반적으로 유선망의 경우 네트워크상에 과도한 트래픽이 발생하지 않는 한 데이터 손실이 발생하지 않는 데 비해) 무선 링크는 연결 중단을 겪을 수 있으며 이로 인해 유선 링크와는 다른 이유로 데이터 손실이 발생할 수 있다.

끝으로 인터넷에서 ’오버레이(overlay)‘ 네트워크를 형성하는 소위 p2p 애플리케이션들이 급부상했다. p2p 애플리케이션들은 어떤 작업을 수행하기 위해 중앙 서버에 의존하는 대신 통신 가능한 일단의 동격 컴퓨터들을 정하고 상호작용을 통해 작업을 수행한다. 동격 컴퓨터들을 운영하는 것은 다른 사용자들이며, 이들은 고정된 서버 인프라에 비해 참여했다가 떠나는 일이 신속히 이뤄진다. ‘오버레이’ 개념은 일반 IP 기반 네트워크상에서 상호작용하는 동격 컴퓨터들이 또 다른 네트워크를 형성한다는 사실을 개념화시킨 것이다(실은 IP 기반 네트워크 또한 하위의 물리적 링크 상에서 형성된 오버레이라고 볼 수 있다). p2p 애플리케이션들의 발전은 트래픽 흐름이나 전자상거래를 연구하는 사람들에게는 지대한 관심사이지만, 이 책에서 기술하는 핵심 프로토콜들에 큰 영향을 미치고 있지는 않다. 그러나 오버레이 네트워크 개념은 점차 네트워킹 기술에서 중요한 관심사가 되고 있다.


[ 저자 소개 ]

케빈 폴(Kevin R. Fall)
TCP/IP 분야에서 25년 이상의 경력이 있으며, IAB에서도 활동한다. 또한 네트워크 성능 보장이 어려운 극한 환경에서의 네트워킹을 연구하는 IRTF의 DTNRG(Delay Tolerant Networking Research Group) 연구반에서 공동 의장을 맡고 있다. 폴 박사는 또한 IEEE 펠로우라는 지위도 갖고 있다.

리차드 스티븐스(W. Richard Stevens)
개척자적인 저술가로, 수십 년 동안 네트워크 전문가들에게 TCP/IP 기술들을 가르쳤으며, 이를 통해 인터넷이 일상생활의 중심이 될 수 있게 기여해왔다. 스티븐스의 베스트셀러에는 3권으로 이뤄진 『TCP/IP Illustarted』(Addison-Wesley), 『유닉스 네트워크 프로그래밍』(Prentice Hall) 등이 있다.


[ 옮긴이의 말 ]

오늘날 네트워크 및 네트워크 간 연결에 관한 기술은 이 시대에 아마 가장 빠르게 성장해 왔고, 또 성장해 나갈 것으로 생각한다. 특히 매년 새로운 형태의 소셜 네트워킹 애플리케이션의 등장이 이러한 주장을 증명하고 있다. 최근 매일 인터넷을 사용하는 사람들이 점점 더 늘어나는 추세다. 우리는 최신 뉴스나 날씨 등을 확인하거나 연구, 쇼핑, 항공, 철도 예약을 할 때 인터넷을 사용한다. 이와 같이 고도의 정보화 사회에서 인터넷 전문가가 되려면 인터넷과 관련된 네트워크를 사용하고, 관리하고 실행하기 위한 훈련이 필요하다. 이를 위해 가장 적합하다고 생각되는 책은 리차드 스티븐스가 저술한 것을 바탕으로 케빈 폴이 개정한 『TCP/IP Illustrated, Volume 1, Second Edition』이다. 우리는 TCP/IP 프로토콜 모음에 대해 아주 자세하게 설명한 안내서로서 많은 사람에게 큰 도움이 되리라고 판단해 이 책의 번역을 맡았다. 특히 이 책은 최신의 혁신적인 수정 사항을 완벽하게 반영하고 있을 뿐만 아니라 최신 리눅스, 윈도우, 맥 OS 환경 등에서 다양한 예제를 통해 각 프로토콜이 어떻게 동작하는지 보여준다. 이 책은 TCP/IP의 동작 원리, 일반적인 조건에서 동작 내용, 또 다양한 애플리케이션이나 네트워크상에서 TCP/IP가 어떻게 적용되는지를 이해하기 위한 최선의 도움서라 할 만하다.

이 책을 접하는 독자들은 현재 TCP/IP에 대한 지식 수준에 관계없이 전체 TCP/IP 프로토콜에 대한 직관적인 이해를 갖게 해줄 뿐만 아니라, 이를 통해 좀 더 나은 애플리케이션을 작성할 수도 있고, 좀 더 효율적이면서도 신뢰할 수 있는 네트워크를 운영할 수도 있을 것으로 생각된다. 따라서 이 책이 국내 인터넷 분야에 활동하고 있는 많은 분들에게 조금이나마 도움이 됐으면 하는 바람이다.

- 대표 역자 이재광


[ 옮긴이 소개 ]

김중규
대구대학교 정보통신공학과 교수

이광수
숙명여자대학교 컴퓨터공학과 교수

이재광
한남대학교 컴퓨터공학과 교수

홍충선
경희대학교 컴퓨터공학과 교수

목차

목차
  • 1장 개요
    • 1.1 아키텍처에 관한 원칙
      • 1.1.1 패킷, 연결, 데이터그램
      • 1.1.2 단대단 원칙과 운명 공동체
      • 1.1.3 오류 제어와 흐름 제어
    • 1.2 설계와 구현
      • 1.2.1 계층화
      • 1.2.2 계층 구현상의 다중화, 역다중화, 캡슐화
    • 1.3 TCP/IP 아키텍처와 프로토콜 모음
      • 1.3.1 ARPANET 참조 모델
      • 1.3.2 TCP/IP에서 다중화, 역다중화, 캡슐화
      • 1.3.3 포트 번호
      • 1.3.4 이름, 주소, 그리고 DNS
    • 1.4 인터넷, 인트라넷, 엑스트라넷
    • 1.5 애플리케이션의 설계
      • 1.5.1 클라이언트/서버
      • 1.5.2 p2p
      • 1.5.3 API
    • 1.6 표준화 절차
      • 1.6.1 RFC
      • 1.6.2 기타 표준
    • 1.7 구현과 소프트웨어 배포
    • 1.8 인터넷 아키텍처에 관련된 공격
    • 1.9 정리
    • 1.10 참고 자료
  • 2장 인터넷 주소 구조
    • 2.1 개요
    • 2.2 IP 주소의 표현
    • 2.3 IP 주소의 기본 구조
      • 2.3.1 클래스 기반 주소 지정
      • 2.3.2 서브넷 주소 지정
      • 2.3.3 서브넷 마스크
      • 2.3.4 VLSM
      • 2.3.5 브로드캐스트 주소
      • 2.3.6 IPv6 주소와 인터페이스 ID
    • 2.4 CIDR과 병합
      • 2.4.1 접두사
      • 2.4.2 병합
    • 2.5 특별한 용도 주소
      • 2.5.1 IPv4/IPv6 주소 변환기
      • 2.5.2 멀티캐스트 주소
      • 2.5.3 IPv4 멀티캐스트 주소
      • 2.5.4 IPv6 멀티캐스트 주소
      • 2.5.5 애니캐스트 주소
    • 2.6 할당
      • 2.6.1 유니캐스트
      • 2.6.2 멀티캐스트
    • 2.7 유니캐스트 주소 배정
      • 2.7.1 단일 제공자/네트워크 없음/단일 주소
      • 2.7.2 단일 제공자/단일 네트워크/단일 주소
      • 2.7.3 단일 제공자/복수의 네트워크/복수의 주소
      • 2.7.4 복수의 제공자/복수의 네트워크/복수의 주소(다중 홈 구성)
    • 2.8 IP 주소 관련 공격
    • 2.9 정리
    • 2.10 참고 자료
  • 3장 링크 계층
    • 3.1 개요
    • 3.2 이더넷과 IEEE 802 LAN/MAN 표준
      • 3.2.1 IEEE 802 LAN/MAN 표준
      • 3.2.2 이더넷 프레임 형식
      • 3.2.3 802.1p/q: 가상 LAN 및 QoS 태그
      • 3.2.4 802.1AX: 링크 병합(예전 802.3ad)
    • 3.3 전이중, 절전, 자동 협상, 802.1X 흐름 제어
      • 3.3.1 이중 모드의 불일치
      • 3.3.2 WoL(Wake-on LAN), 절전, 매직 패킷
      • 3.3.3 링크 계층 흐름 제어
    • 3.4 브리지와 스위치
      • 3.4.1 STP(스패닝 트리 프로토콜)
      • 3.4.2 802.1ak: MRP(다중 등록 프로토콜)
    • 3.5 무선 LAN: IEEE 802.11(Wi-Fi)
      • 3.5.1 802.11 프레임
      • 3.5.2 절전 모드와 TSF(시간 동기화 기능)
      • 3.5.3 802.11 MAC(매체 접근 제어)
      • 3.5.4 물리 계층 세부 사항: 전송률, 채널, 주파수
      • 3.5.5 Wi-Fi 보안
      • 3.5.6 Wi-Fi 메시(802.11s)
    • 3.6 PPP
      • 3.6.1 링크 제어 프로토콜(LCP)
      • 3.6.2 다중 링크 PPP(MP)
      • 3.6.3 압축 제어 프로토콜(CCP)
      • 3.6.4 PPP 인증
      • 3.6.5 네트워크 제어 프로토콜(NCP)
      • 3.6.6 헤더 압축
      • 3.6.7 예제
    • 3.7 루프백
    • 3.8 MTU와 경로 MTU
    • 3.9 터널링의 기초
      • 3.9.1 단방향 링크
    • 3.10 링크 계층에 대한 공격
    • 3.11 정리
    • 3.12 참고 자료
  • 4장 ARP: 주소 결정 프로토콜
    • 4.1 개요
    • 4.2 예제
      • 4.2.1 직접 전달과 ARP
    • 4.3 ARP 캐시
    • 4.4 ARP 프레임 형식
    • 4.5 ARP 예제
      • 4.5.1 정상적인 예제
      • 4.5.2 존재하지 않는 호스트에 대한 ARP 요청
    • 4.6 ARP 캐시 타임아웃
    • 4.7 프락시 ARP
    • 4.8 무상 ARP와 주소 충돌 탐지(ACD)
    • 4.9 arp 명령
    • 4.10 임베디드 장치의 IPv4 주소 설정에 ARP 사용
    • 4.11 ARP 관련 공격
    • 4.12 정리
    • 4.13 참고 자료
  • 5장 인터넷 프로토콜
    • 5.1 개요
    • 5.2 IPv4 헤더와 IPv6 헤더
      • 5.2.1 IP 헤더 필드
      • 5.2.2 인터넷 검사합
      • 5.2.3 DS 필드와 ECN(예전의 ToS 바이트나 IPv6 트래픽 클래스)
      • 5.2.4 IP 옵션
    • 5.3 IPv6 확장 헤더
      • 5.3.1 IPv6 옵션
      • 5.3.2 라우팅 헤더
      • 5.3.3 단편 헤더
    • 5.4 IP 포워딩
      • 5.4.1 포워딩 테이블
      • 5.4.2 IP 포워딩 동작
      • 5.4.3 예제
      • 5.4.4 토의
    • 5.5 모바일 IP
      • 5.5.1 기본 모델: 양방향 터널링
      • 5.5.2 경로 최적화(RO)
      • 5.5.3 토의
    • 5.6 IP 데이터그램에 대한 호스트의 처리
      • 5.6.1 호스트 모델
      • 5.6.2 주소의 선택
    • 5.7 IP 관련 공격
    • 5.8 정리
    • 5.9 참고 자료
  • 6장 시스템 구성: DHCP와 자동 구성
    • 6.1 개요
    • 6.2 동적 호스트 구성 프로토콜
      • 6.2.1 주소 풀과 임대
      • 6.2.2 DHCP와 BOOTP 메시지 형식
      • 6.2.3 DHCP와 BOOTP 옵션
      • 6.2.4 DHCP 프로토콜 운영
      • 6.2.5 DHCPv6
      • 6.2.6 중계기에서 DHCP 사용
      • 6.2.7 DHCP 인증
      • 6.2.8 재구성 확장
      • 6.2.9 성급한 허용
      • 6.2.10 지역 정보(LCI와 LoST)
      • 6.2.11 이동성과 핸드오프 정보(MoS와 ANDSF)
      • 6.2.12 DHCP 스누핑
    • 6.3 상태 없는 주소 자동 구성(SLAAC)
      • 6.3.1 IPv4 링크 로컬 주소의 동적 구성
      • 6.3.2 링크 로컬 주소를 위한 IPv6 SLAAC
    • 6.4 DHCP와 DNS의 상호작용
    • 6.5 PPP over 이더넷(PPPoE)
    • 6.6 시스템 구성을 포함하는 공격
    • 6.7 정리
    • 6.8 참고 자료
  • 7장 방화벽과 네트워크 주소 변환
    • 7.1 개요
    • 7.2 방화벽
      • 7.2.1 패킷 필터링 방화벽
      • 7.2.2 프록시 방화벽
    • 7.3 네트워크 주소 변환(NAT)
      • 7.3.1 전통적인 NAT: 기본 NAT와 NAPT
      • 7.3.2 주소와 포트 변환 과정
      • 7.3.3 필터링 동작
      • 7.3.4 NAT 후면의 서버
      • 7.3.5 헤어피닝과 NAT 루프백
      • 7.3.6 NAT 편집기
      • 7.3.7 서비스 제공자 NAT(SPNAT)와 서비스 제공자 IPv6 천이
    • 7.4 NAT 횡단
      • 7.4.1 핀홀과 홀 뚫기
      • 7.4.2 일방적인 자체 주소 고정(UNSAF)
      • 7.4.3 NAT를 위한 세션 횡단 유틸리티(STUN)
      • 7.4.4 중계기를 활용해 NAT 주의를 횡단(TURN)
      • 7.4.5 대화식의 연결성 설정(ICE)
    • 7.5 패킷 필터링 방화벽과 NAT 구성
      • 7.5.1 방화벽 규칙
      • 7.5.2 NAT 규칙
      • 7.5.3 NAT와 방화벽의 직접적인 상호작용: UPnP, NAT-PMP, PCP
    • 7.6 IPv4/IPv6 공존과 이전을 위한 NAT
      • 7.6.1 이중-스택 Lite
      • 7.6.2 NAT와 ALG를 사용하는 IPv4/IPv6 변환
    • 7.7 방화벽과 NAT를 포함하는 공격
    • 7.8 정리
    • 7.9 참고 자료
  • 8장 ICMPv4와 ICMPv6: 인터넷 제어 메시지 프로토콜
    • 8.1 개요
      • 8.1.1 캡슐화 IPv4와 IPv6
    • 8.2 ICMP 메시지
      • 8.2.1 ICMPv4 메시지
      • 8.2.2 ICMPv6 메시지
      • 8.2.3 ICMP 메시지의 처리
    • 8.3 ICMP 오류 메시지
      • 8.3.1 확장된 ICMP와 멀티파트 메시지
      • 8.3.2 목적지 도달 불가(ICMPv4 타입 3, ICMPv6 타입 1)와 너무 큰 패킷(ICMPv6 타입 2)
    • 8.3.3 재지정 (ICMPv4 타입 5, ICMPv6 타입 137)
      • 8.3.4 ICMP 시간 초과(ICMPv4 타입 11, ICMPv6 타입 3)
      • 8.3.5 매개변수 문제(ICMPv4 타입 12, ICMPv6 타입 4)
    • 8.4 ICMP 조회/정보성 메시지
      • 8.4.1에코 요청/응답(ICMPv4 타입 0/8, ICMPv6 타입 129/128)
      • 8.4.2 라우터 발견: 라우터 간청과 광고(ICMPv4 타입 9, 10)
      • 8.4.3 홈 에이전트 주소 발견 요청/응답(ICMPv6 타입 144/145)
      • 8.4.4 모바일 접두사 간청/광고(ICMPv6 타입 146/147)
      • 8.4.5 모바일 IPv6 급속 핸드오버 메시지(ICMPv6 타입 154)
      • 8.4.6멀티캐스트 리스너 조회/보고/종료(ICMPv6 타입 130/131/132)
      • 8.4.7 버전 2 멀티캐스트 리스너 발견(MLDv2)(ICMPv6 타입 143)
      • 8.4.8 멀티캐스트 라우터 발견(IGMP 타입 48/49/50, ICMPv6 타입 151/152/153)
    • 8.5 이웃 발견 IPv6
      • 8.5.1 ICMPv6 라우터 간청과 광고(ICMPv6 타입 133, 134)
      • 8.5.2 ICMPv6 이웃 간청과 광고(IMCPv6 타입 135, 136)
      • 8.5.3 ICMPv6 역이웃 발견 간청/광고(ICMPv6 타입 141/142)
      • 8.5.4 이웃 도달 불가 탐지(NUD)
      • 8.5.5 안전한 이웃 발견(SEND)
      • 8.5.6 ICMPv6 이웃 발견(ND) 옵션
    • 8.6 ICMPv4와 ICMPv6의 변환
      • 8.6.1 ICMPv4를 ICMPv6로 변환
      • 8.6.2 ICMPv6를 ICMPv4로 변환
    • 8.7 ICMP를 포함하는 공격
    • 8.8 정리
    • 8.9 참고 자료
  • 9장 브로드캐스팅과 로컬 멀티캐스팅
    • 9.1 개요
    • 9.2 브로드캐스팅
      • 9.2.1 브로드캐스트 주소 사용
      • 9.2.2 브로드캐스트 데이터그램 보내기
    • 9.3 멀티캐스팅
      • 9.3.1 IP 멀티캐스트 주소를 802 MAC/이더넷 주소로 변환
      • 9.3.2 예제
      • 9.3.3 멀티캐스트 데이터그램 보내기
      • 9.3.4 멀티캐스트 데이터그램 수신
      • 9.3.5 호스트 주소 필터링
    • 9.4 인터넷 그룹 관리 프로토콜과 멀티캐스트 리스너 발견 프로토콜
      • 9.4.1 그룹 멤버로 IGMP와 MLD 처리(‘그룹 멤버 파트’)
      • 9.4.2 멀티캐스트 라우터에서의 IGMP와 MLD 처리(‘멀티캐스트 라우터 파트’)
      • 9.4.3 예제
      • 9.4.4 경량 IGMPv3와 MLDv2
      • 9.4.5 IGMP와 MLD의 강건함
      • 9.4.6 IGMP와 MLD의 카운터와 변수
      • 9.4.7 IGMP와 MLD 스누핑
    • 9.5 IGMP와 MLD 포함 공격
    • 9.6 정리
    • 9.7 참고 자료
  • 10장 사용자 데이터그램 프로토콜과 IP 단편화
    • 10.1 개요
    • 10.2 UDP 헤더
    • 10.3 UDP 검사합
    • 10.4 예제
    • 10.5 UDP와 IPv6
      • 10.5.1 Teredo: IPv4 네트워크를 통한 IPv6 터널링
    • 10.6 UDP-Lite
    • 10.7 IP 단편화
      • 10.7.1 예제: UDP/IPv4 단편화
      • 10.7.2 재조립 타임아웃
    • 10.8 UDP를 이용한 경로 MTU 발견
      • 10.8.1 예제
    • 10.9 IP 단편화와 ARP/ND 사이의 상호작용
    • 10.10 최대 UDP 데이터그램 크기
      • 10.10.1 구현 제한
      • 10.10.2 데이터그램 절단
    • 10.11 UDP 서버 설계
      • 10.11.1 IP 주소와 UDP 포트 번호
      • 10.11.2 로컬 IP 주소의 제약
      • 10.11.3 다중 주소 사용
      • 10.11.4 외부 IP 주소의 제한
      • 10.11.5 포트당 다중 서버 사용
      • 10.11.6 스패닝 주소들 : IPv4와 IPv6
      • 10.11.7 흐름 제어와 혼잡 제어의 부족
    • 10.12 UDP/IPv4의 UDP/IPv6 데이터그램으로 변환
    • 10.13 인터넷에서 UDP
    • 10.14 UDP와 IP 단편화를 포함한 공격
    • 10.15 정리
    • 10.16 참고 자료
  • 11장 이름 변환과 도메인 네임 시스템
    • 11.1 개요
    • 11.2 DNS 네임스페이스
      • 11.2.1 DNS 이름 문법
    • 11.3 네임 서버와 영역
    • 11.4 캐싱
    • 11.5 DNS 프로토콜
      • 11.5.1 DNS 메시지 형식
      • 11.5.2 DNS 확장 형식(EDNS0)
      • 11.5.3 UDP와 TCP
      • 11.5.4 질문(조회)과 영역 섹션 형식
      • 11.5.5 응답, 인가, 부가적인 정보 섹션 형식
      • 11.5.6 자원 레코드 유형
      • 11.5.7 동적 갱신(DNS UPDATE)
      • 11.5.8 영역 전달과 DNS 통보
    • 11.6 분류 목록, 라운드로빈, 분리 DNS
    • 11.7 개방 DNS 서버와 DynDNS
    • 11.8 투명성과 확장성
    • 11.9 IPv4에서 IPv6로 DNS 변환(DNS64)
    • 11.10 LLMNR과 mDNS
    • 11.11 LDAP
    • 11.12 DNS상의 공격
    • 11.13 정리
    • 11.14 참고 자료
  • 12장 TCP: 전송 제어 프로토콜
    • 12.1 개요
      • 12.1.1 ARQ와 전송
      • 12.1.2 패킷의 윈도우와 슬라이딩 윈도우
      • 12.1.3 가변 윈도우: 흐름 제어와 혼잡 제어
      • 12.1.4 재전송 타임아웃 설정
    • 12.2 TCP 소개
      • 12.2.1 TCP 서비스 모델
      • 12.2.2 TCP에서 신뢰성
    • 12.3 TCP 헤더와 캡슐화
    • 12.4 정리
    • 12.5 참고 자료
  • 13장 TCP 연결 관리
    • 13.1 개요
    • 13.2 TCP 연결 설정과 종료
      • 13.2.1 TCP 절반 폐쇄
      • 13.2.2 동시 개방과 폐쇄
      • 13.2.3 초기 순서 번호(ISN)
      • 13.2.4 예제
      • 13.2.5 연결 설정의 타임아웃
      • 13.2.6 연결과 변환기
    • 13.3 TCP 옵션
      • 13.3.1 최대 세그먼트 크기 옵션
      • 13.3.2 선택 확인 응답(SACK) 옵션
      • 13.3.3 윈도우 스케일(WSCALE 혹은 WSOPT) 옵션
      • 13.3.4 타임스탬프 옵션과 PAWS
      • 13.3.5 사용자 타임아웃(UTO) 옵션
      • 13.3.6 인증 옵션(TCP-AO)
    • 13.4 TCP의 경로 MTU 발견
      • 13.4.1 예제
    • 13.5 TCP 상태 천이
      • 13.5.1 TCP 상태 천이도
      • 13.5.2 TIME_WAIT(2MSL 대기) 상태
      • 13.5.3 침묵 시간 개념
      • 13.5.4 FINWAIT2 상태
      • 13.5.5 동시 개방과 폐쇄 천이
    • 13.6 재설정 세그먼트
      • 13.6.1 존재하지 않는 포트에 대한 연결 요구
      • 13.6.2 연결 중단
      • 13.6.3 절반 개방 연결
      • 13.6.4 시간_대기 감소(TWA)
    • 13.7 TCP 서버 동작
      • 13.7.1 TCP 포트 번호
      • 13.7.2 로컬 IP 주소의 제한
      • 13.7.3 외부 종단점의 제한
      • 13.7.4 수신 연결 큐
    • 13.8 TCP 연결 관리를 포함하는 공격
    • 13.9 정리
    • 13.10 참고 자료
  • 14장 TCP 타임아웃과 재전송
    • 14.1 개요
    • 14.2 간단한 타임아웃과 재전송 예제
    • 14.3 재전송 타임아웃의 설정
      • 14.3.1 고전적인 방법
      • 14.3.2 표준 방법
      • 14.3.3 리눅스 방법
      • 14.3.4 RTT 추정기 동작
      • 14.3.5 손실과 재순서에 강인한 RTTM
    • 14.4 타이머 기반 재전송
      • 14.4.1 예제
    • 14.5 빠른 재전송
      • 14.5.1 예제
    • 14.6 선택 확인 응답을 가진 재전송
      • 14.6.1 SACK 수신기 동작
      • 14.6.2 SACK 송신기 동작
      • 16.6.3 예제
    • 14.7 의사 타임아웃과 재전송
      • 14.7.1 중복 SACK(DSACK) 확장
      • 14.7.2 아이펠 검출 알고리즘
      • 14.7.3 전진 RTO 복구(F-RTO)
      • 14.7.4 아이펠 응답 알고리즘
    • 14.8 패킷 재순서화와 중복
      • 14.8.1 재순서화
      • 14.8.2 중복
    • 14.9 목적지 매트릭스
    • 14.10 재패킷화
    • 14.11 TCP 재전송을 포함하는 공격
    • 14.12 정리
    • 14.13 참고 자료
  • 15장 TCP 데이터 흐름과 윈도우 관리
    • 15.1 개요
    • 15.2 대화형 통신
    • 15.3 지연된 확인 응답
    • 15.4 네이글 알고리즘
      • 15.4.1 지연된 ACK과 네이글 알고리즘 상호작용
      • 15.4.2 네이글 알고리즘 기능 억제
    • 15.5 흐름 제어와 윈도우 관리
      • 15.5.1 슬라이딩 윈도우
      • 15.5.2 제로 윈도우와 TCP 지속 타이머
      • 15.5.3 어리석은 윈도우 신드롬(SWS)
      • 15.5.4 대용량 버퍼와 자동 조정
    • 15.6 긴급 메커니즘
      • 15.6.1 예제
    • 15.7 윈도우 관리를 포함한 공격
    • 15.8 정리
    • 15.9 참고 자료
  • 16장 TCP 혼잡 제어
    • 16.1 개요
      • 16.1.1 TCP에서 혼잡의 검출
      • 16.1.2 TCP 송신자의 느린 전송 속도
    • 16.2 고전적인 알고리즘
      • 16.2.1 저속 시작
      • 16.2.2 혼잡 회피
      • 16.2.3 저속 시작과 혼잡 회피 사이의 선택 방법
      • 16.2.4 Tahoe, Reno와 빠른 회복
      • 16.2.5 표준 TCP
    • 16.3 표준 알고리즘의 발전
      • 16.3.1 NewReno
      • 16.3.2 SACK을 이용한 TCP 혼잡 제어
      • 16.3.3 FACK와 Rate Halving
      • 16.3.4 제한 전송
      • 16.3.5 혼잡 윈도우 유효성 검사(CWV)
    • 16.4 Eifel 응답 알고리즘을 이용한 Spurious RTO의 제어
    • 16.5 확장 예제
      • 16.5.1 저속 시작 동작
      • 16.5.2 송신자 일시 정지와 지역 혼잡(이벤트 1)
      • 16.5.3 지역 혼잡의 회복과 stretch ACK
      • 16.5.4 빠른 재전송과 SACK 회복(이벤트 2)
      • 16.5.5 추가적인 지역 혼잡과 빠른 재전송 이벤트
      • 16.5.6 시간 초과, 재전송, cwnd 변경 취소
      • 16.5.7 연결 완료
    • 16.6 혼잡 상태 공유
    • 16.7 TCP 친화성
    • 16.8 고속 환경에서의 TCP
      • 16.8.1 고속 TCP(HSTCP)와 제한된 저속 시작
      • 16.8.2 이진 증가 혼잡 제어(BIC와 CUBIC)
    • 16.9 지연 기반 혼잡 제어
      • 16.9.1 베가스
      • 16.9.2 패스트
      • 16.9.3 TCP 웨스트우드와 웨스트우드+
      • 16.9.4 복합 TCP
    • 16.10 버퍼 포화
    • 16.11 활성 대기열 관리와 ECN
    • 16.12 TCP 혼잡 제어와 관련된 공격
    • 16.13 정리
    • 16.14 참고 자료
  • 17장 TCP 유지
    • 17.1 개요
    • 17.2 설명
      • 17.2.1 유지의 예
    • 17.3 TCP 유지와 관련된 공격
    • 17.4 정리
    • 17.5 참고 자료
  • 18장 보안: EAP, IPSec, TLS, DNSSEC, DKIM
    • 18.1 개요
    • 18.2 정보 보호의 기본 원리
    • 18.3 네트워크 통신에서의 위협
    • 18.4 기본 암호화와 보안 메커니즘
      • 18.4.1 암호학
      • 18.4.2 Rivest, Shamir, Adleman(RSA) 공개키 암호화
      • 18.4.3 디피 헬만 키 교환 프로토콜(Diffie-Hellman 또는 DH)
      • 18.4.4 Signcryption와 타원 곡선 암호(ECC)
      • 18.4.5 키 파생과 완벽한 순방향 보안(PFS)
      • 18.4.6 의사 난수, 생성기, 기능 계열
      • 18.4.7 일회용 숫자와 salt
      • 18.4.8 암호화 해시 함수와 메시지 요약
      • 18.4.9 메시지 인증 코드(MAC, HMAC, CMAC, GMAC)
      • 18.4.10 암호화 스위트와 암호 스위트
    • 18.5 인증서, 인증기관(CA), PKI
    • 18.5.1 공개키 인증서, 인증기관, X.509
    • 18.5.2 인증서의 검증과 폐기
    • 18.5.3 인증서 속성
    • 18.6 TCP/IP 보안 프로토콜과 계층 구조
    • 18.7 네트워크 접근 제어: 802.1X, 802.1AE, EAP, PANA
      • 18.7.1 EAP 기법과 키 기원
      • 18.7.2 EAP 재인증 프로토콜(ERP)
      • 18.7.3 네트워크 접속에 대한 인증 운반 프로토콜(PANA)
    • 18.8 계층 3 IP 보안(IPSec)
      • 18.8.1 인터넷 키 교환(IKEv2) 프로토콜
      • 18.8.2 인증 헤더(AH)
      • 18.8.3 캡슐 보안 페이로드(ESP)
      • 18.8.4 멀티캐스트
      • 18.8.5 L2TP/IPsec
      • 18.8.6 IPsec NAT 탐색
      • 18.8.7 예제
    • 18.9 트랜스포트 계층 보안(TLS와 DTLS)
      • 18.9.1 TLS 1.2
      • 18.9.2 TLS with Datagrams(DTLS)
    • 18.10 DNS 보안(DNSSEC)
      • 18.10.1 DNSSEC 자원 레코드
      • 18.10.2 DNSSEC 연산
      • 18.10.3 트랜잭션 인증(TSIG, TKEY, SIG(0))
      • 18.10.4 DNS64를 지닌 DNSSEC
    • 18.11 DomainKeys Identified Mail(DKIM)
      • 18.11.1 DKIM 서명
      • 18.11.2 예제
    • 18.12 보안 프로토콜에서의 공격
    • 18.13 정리
    • 18.14 참고 자료

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[ p200 그림 3-23 ]

2016. 10. 18 수정 사항

[p.176: 첫 행]
FCS(Frame Control Word)
->
FCW(Frame Control Word)