응용 프로그램 계층은 컴퓨터 네트워크에서 가장 중요하고 가장 눈에 띄는 계층입니다. 애플리케이션은 이 계층에 존재하며 사용자는 네트워크를 통해 해당 애플리케이션과 상호작용합니다.
네트워크 응용 프로그램을 구성하는 데 사용되는 두 가지 중요한 모델이 있습니다. 클라이언트-서버 모델과 P2P 모델입니다.
첫 번째이자 가장 오래된 모델은 클라이언트-서버 모델입니다. 클라이언트는 요청을 보내고 서버는 작업을 수행하고 응답을 반환합니다.
웹 서버가 가장 대표적인 클라이언트-서버 아키텍처를 따르고 있습니다.
P2P 모델은 네트워크 애플리케이션을위한 또 다른 가능한 아키텍처로 등장했습니다.
피어(Peer)라고하는 간헐적으로 연결된 호스트 쌍 간의 직접 통신을 할 수 있습니다. 피어는 서비스 제공 업체의 소유가 아니라 사용자가 제어하는 데스크톱 및 랩톱이며 대부분의 피어는 가정, 대학 및 사무실에 있습니다. 모든 피어는 서버와 클라이언트로 작동하며 두 역할을 모두 수행할 수 있습니다.
다음과 같은 대표적인 특징이 있습니다.
실제 통신하는 것은 프로그램이 아닌 프로세스입니다. 두 개의 서로 다른 최종 시스템의 프로세스는 컴퓨터 네트워크를 통해 메시지를 교환하여 서로 통신 합니다.
그리고 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스를 클라이언트 프로세스라 하고, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버 프로세스라고 구분할 수 있습니다.
프로세스는 소켓을 통해 네트워크로 메시지를 보내고 받습니다. 소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스입니다.
메시지를 받으려면 프로세스에 식별자가 있어야합니다.
프로세스가 실행되는 호스트의 IP 주소는 프로세스를 식별하는 데 충분할까요? 아닙니다. 동일한 호스트에서 여러 프로세서를 실행할 수 있기때문입니다.
따라서 한 호스트에서 실행중인 프로세스가 다른 호스트에서 실행중인 프로세스로 패킷을 보내려면 수신 프로세스에 다음 주소 가 있어야합니다
예를 들어 https://velog.io/
웹 서버에 HTTP 메시지를 보내려면 다음을 수행해야합니다.
인터넷을 포함한 많은 네트워크들은 하나 이상의 트랜스포트 프로토콜을 제공합니다. 따라서 우리는 사용 가능한 트랜스포트 프로토콜 중 하나를 선택하여야 합니다. (= 우리가 여행을 하기 위해 기차 혹은 비행기를 선택하는 것과 마찬가지)
이때 살펴봐야할 것은 크게 4가지 서비스입니다.
아래는 애플리케이션마다 요구사항을 비교한 표입니다.
다음시간에는 애플리케이션 계층 프로토콜에서 HTTP, SMTP, DNS가 가장 유명한데 그 첫번째로 HTTP 프로토콜에 대해 살펴볼것입니다.