티스토리 뷰

TCP/IP 5계층 모델에서 가장 상위 층에 해당되는 애플리케이션 계층에 대해 살펴보자.

애플리케이션 계층은 최상위층으로 이 위에는 이를 사용하는 사용자가 있다.

 


2.1 네트워크 애플리케이션의 원리

네트워크 애플리케이션을 위한 통신은 아래 그림과 같이 종단 시스템 간의 애플리케이션 계층에서 발생한다.

 


2.1.1 네트워크 애플리케이션 구조

애플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있고 애플리케이션에 특정 서비스 집합을 제공한다.

애플리케이션 구조(application architecture)는 애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시한다.

 

현대 애플리케이션에 사용되는 두 가지 우수한 구조를 살펴보자.

애플리케이션 개발자는 이 두 가지 중 하나로 작성할 것이다.

 

1. 클라이언트-서버 구조(client-server architecture)

서버가 클라이언트 호스트로부터 무언가 요청을 받으면 서버는 클라이언트 호스트로 요청된 것을 보내어 응답하는 구조이다.

 

서버와 클라이언트

  • Server: 항상 켜져 있는 호스트
  • Client: 가끔 혹은 항상 켜져 있는 호스트

😀 쉽게 비유하면 서버는 많이 가지고 있는 쪽이고 클라이언트는 아쉬운 쪽이다. 전화를 예로 들면 서버는 전화를 받는 쪽이 되고 클라이언트는 전화를 거는 쪽이 된다.

 

특징

  • 클라이언트-서버 구조에서 클라이언트는 서로 직접적으로 통신하지 않는다.
  • 서버가 고정 IP 주소를 가진다.

데이터 센터(data center)

  • 인기 있는 웹 사이트가 하나의 서버로만 요청을 처리하는 경우 서버가 제대로 작동하지 못할 수 있으므로 많은 수의 호스트를 갖춘 데이터 센터(data center)가 강력한 가상의 서버를 생성하는 데 흔히 사용된다.

클라이언트-서버 구조를 가지는 애플리케이션)

  • 웹, 파일 전송, 원격 로그인, 전자메일

클라이언트-서버 구조

2. P2P 구조

피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 한다.

 

  • 항상  켜져있는 기반구조 서버에 최소로 의존한다.
  • 클라이언트-서버 구조와 다르게 메인 서버가 1개만 존재하는 것이 아니다.
  • 서버에서만 데이터를 가지고 왔던 클라이언트-서버 구조와 다르게 해당 데이터를 가지고 있는 다른 client에서 가져와도 된다.
  • 특정 서버를 통하지 않고 피어가 통신하므로 이 구조를 피어-투-피어(peer-to-peer, P2P) 한다.

즉, P2P 구조는 클라이언트-서버 구조의 확장 모델이라고 볼 수 있다.

 

특징

  • 자가 확장성(self-scalability)
    • 각 피어들이 파일을 다른 피어들에게 분배함으로 그 시스템에 서비스 능력을 추가한다.
  • 비용 효율적이다.
    • 상당한 서버 기반구조와 서버 대역폭을 요구하지 않기 때문이다.

P2P 구조를 가지는 애플리케이션)

  • 파일 공유, 피어-지원 다운로드 가속기, 인터넷 전화 및 비디오 컨퍼런스

P2P 구조

 


2.1.2 프로세스 간 통신

프로세스란 실제 메모리에 탑재되어 동작하는 것으로 종단 시스템에서 실행되는 프로그램이다.
프로세스가 같은 종단 시스템에서 실행될 때 그들은 서로 프로세스간에 통신한다.
2개의 다른 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통한 메시지(message) 교환으로 서로 통신한다.

 

1. 클라이트와 서버 프로세스

클라이언트

  • 두 프로세스 간의 통신 세션에서 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스

서버

  • 세션을 시작하기 위해 접속을 기다리는 프로세스

 

2. 프로세스와 컴퓨터 네트워크 사이의 인터페이스

프로세스는 소켓(socket)을 통해 네트워크로 메시지를 보내고 받는다.

 

😀 비유하면 프로세스는 집(house)이고, 소켓은 출입구(door)이 된다.

  1. 프로세스가 메시지를 다른 호스트의 프로세스로 보내고 싶을 때, 그것을 출입구(소켓) 바깥 네트워크로 메시지를 밀어낸다.
  2. 메시지가 목적지 호스트에 도착하면 메시지는 수신 프로세스의 출입구를 거치고 수신 프로세스는 메시지를 처리한다.

소켓

  • 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스이다.
  • 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스이므로, 애플리케이션과 네트워크 사이의 API(Application Programming Interface)라고도 한다.

✖️ 애플리케이션 개발자는 소켓의 애플리케이션 계층에 대한 모든 통제권을 갖지만 소켓의 트랜스포트 계층에 대한 통제권은 거의 갖지 못한다.

애플리케이션 프로세스, 소켓, 하위 트랜스포트 프로토콜

 

3. 프로세스 주소 배정

특정 목적지로 우편 메일을 보내기 위해서는 목적지가 주소를 갖고 있어야 한다.

마찬가지로 수신 프로세스 식별을 위해

호스트의 주소와 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자가 명시될 필요가 있다.

 

  • 인터넷에서 호스트는 IP 주소로 식별된다.
  • 수신 호스트에서 수행되고 있는 수신 프로세스는 목적지 포트 번호(port number)로 식별된다.
    • 일반적으로 한 호스트가 많은 네트워크 응용을 수행할 수 있기 때문

예) 웹 서버는 포트 번호 80번으로 식별된다. 메일 서버는 포트 번호 25번으로 식별된다.

 

IP Address, port를 보고 만날 프로세스를 결정한다.

 


2.1.3 애플리케이션이 이용 가능한 트랜스포트 서비스

트랜스포트 계층 프로토콜이 그것을 이용하는 애플리케이션들에게 제공할 수 있는 서비스에는 크게 네가지가 있다.

1. 신뢰적 데이터 전송

2. 처리량

3. 시간

4. 보안

 


2.1.4 인터넷 전송 프로토콜이 제공하는 서비스

인터넷은 애플리케이션에게 2개의 전송 프로토콜, 즉 UDP와 TCP를 제공한다.

 

1. TCP 서비스

TCP 서비스 모델은 연결지향형 서비스와 신뢰적인 데이터 전송 서비스를 포함한다.

 

  • 연결지향형 서비스: 애플리케이션 계층 메시지를 전송하기 전에 TCP는 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 한다.
  • 신뢰적인 데이터 전송 서비스: 통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위해 TCP에 의존한다.
  • 혼잡제어 방식: 통신하는 프로세스의 직접 이득보다는 인터넷의 전체 성능향상을 위한 서비스를 포함한다. TCP 혼잡제어는 각 TCP 연결이 네트워크 대역폭을 공평하게 공유할 수 있게끔 제한하려고 시도한다.

 

2. UDP 서비스

최소의 서비스 모델을 가진 간단한 전송 프로토콜이다.

 

  • 비연결형이며 비신뢰적인 데이터 전송 서비스를 제공한다.
  • 혼잡제어 방식을 포함하지 않는다.

인기 있는 애플리케이션, 애플리케이션 계층 프로토콜, 하위 트랜스포트 프로토콜

 

 


2.1.5 애플리케이션 계층 프로토콜

애플리케이션 계층 프로토콜은 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법을 정의한다.

  • 교환 메시지 타입(예: 요청 메시지와 응답 메시지)
  • 여러 메시지 타입의 문법(예: 메시지 내부의 필드와 필드 간의 구별 방법)
  • 필드의 의미, 즉 필드에 있는 정보의 의미
  • 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지 결정하는 규칙