인터넷이 무엇인지 설명하는 데에는 두 가지 방식이 있다. 첫 번째는 인터넷을 구성하는 요소들을 통한 설명이고, 나머지는
이전 장에서는 높은 수준에서 인터넷 및 네트워킹 프로토콜에 대해 알아 봤다. 이제는 컴퓨터 네트워크의 구성 요소들에 대해 조금 더 깊이 알아보자.
네트워크 코어는 인터넷 종단 시스템들을 상호 연결시키는 패킷 스위치 및 링크의 그물망이다.
이상적으로는 두 종단 시스템 사이에서 원하는 만큼의 데이터를 지연없이 전송할 수 있다면 좋겠지만, 실제로는 그럴 수 없다.
계층화된 구조를 이용하면 거대하고 복잡한 인터넷 시스템을 좀 더 단순하게 이해할 수 있다.
컴퓨터 네트워크는 네트워크 애플리케이션들을 위해 존재한다. 이 장에서는 네트워크 애플레케이션의 개념과 구현에 대해 알아보도록 하자.
HTTP는 웹의 핵심 애플리케이션 계층 프로토콜이다.
HTTP 메시지에는 요청 메시지와 응답 메시지의 두 종류가 있다.
인터넷 이메일 시스템은 세 개의 주요 구성 요소, 사용자 에이전트(user agent), 메일 서버, SMTP로 이루어져 있다.
호스트는 사람이 기억하기 쉬운 호스트명을 통해 식별된다. 하지만 이렇게 변동-길이의 문자열은 라우터로 처리하기 어렵기에 호스트는 IP 주소로도 식별할 수 있다.
이 섹션에서는 한 서버에서 다수의 호스트로 큰 파일을 배포하는 P2P 애플리케이션에 대해 알아본다.
넷플릭스와 유튜브는 인터넷 트래픽을 아주 많이 잡아 먹고 있다.
네트워크 애플리케이션에서는 서로 다른 종단 시스템에서 위치한 클라이언트 프로그램과 서버 프로그램이 하나의 쌍을 이룬다.
애플리케이션 계층과 네트워크 계층 사이에 위치한 전송 계층은 계층적 네트워크 구조에서 핵심적인 역할을 한다.
이 섹션에서는 네트워크 계층이 제공하는 host-to-host 전송 서비스를 process-to-process 전송 서비스로 확장하는 전송 계층의 멀티플렉싱과 디멀티플렉싱에 대해 알아본다.
이 섹션에서는 UDP가 무엇을 어떻게 하는지 자세히 알아본다.
보다 일반적인 맥락에서 신뢰성 있는 데이터 전송 문제에 대해 알아보자.