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