컴퓨터 사이언스에서는 '바이러스', '트로이의 목마', '버그' 등의 다양한 비유를 사용한다. 이 비유들은 구체적인 소프트웨어적 현상을 설명하기 위해 쓰이며, 이러한 비유들을 잘 사용하면 소프트웨어 개발 프로세스를 더욱 잘 이해할 수 있게 된다.
소프트웨어 개발에서 일어나는 활동들에는 다음과 같은 것들이 있다.
보다 일반적인 맥락에서 신뢰성 있는 데이터 전송 문제에 대해 알아보자.
이 섹션에서는 네트워크 계층이 제공하는 host-to-host 전송 서비스를 process-to-process 전송 서비스로 확장하는 전송 계층의 멀티플렉싱과 디멀티플렉싱에 대해 알아본다.
애플리케이션 계층과 네트워크 계층 사이에 위치한 전송 계층은 계층적 네트워크 구조에서 핵심적인 역할을 한다.
네트워크 애플리케이션에서는 서로 다른 종단 시스템에서 위치한 클라이언트 프로그램과 서버 프로그램이 하나의 쌍을 이룬다.
넷플릭스와 유튜브는 인터넷 트래픽을 아주 많이 잡아 먹고 있다.
이 섹션에서는 한 서버에서 다수의 호스트로 큰 파일을 배포하는 P2P 애플리케이션에 대해 알아본다.
호스트는 사람이 기억하기 쉬운 호스트명을 통해 식별된다. 하지만 이렇게 변동-길이의 문자열은 라우터로 처리하기 어렵기에 호스트는 IP 주소로도 식별할 수 있다.
인터넷 이메일 시스템은 세 개의 주요 구성 요소, 사용자 에이전트(user agent), 메일 서버, SMTP로 이루어져 있다.