본문 바로가기
네트워크

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

by Lizardee 2023. 9. 17.
Chapter 2: 애플리케이션 계층
  1. 네트워크 애플리케이션의 원리
  2. 웹과 HTTP
  3. 인터넷 전자메일
  4. DNS: 인터넷의 디렉터리 서비스
  5. P2P 파일 분배
  6. 비디오 스트리밍과 콘텐츠 분배 네트워크
  7. 소켓 프로그래밍: 네트워크 애플리케이션 생성

 

2.1 네트워크 애플리케이션의 원리
  • 네트워크 애플리케이션: 다른 위치의 종단 시스템에서 동작하고, 네트워크를 통해 서로 통신하는 프로그램을 작성하는 것
    --> 애플리케이션 소프트웨어는 종단 시스템에만 존재한다.

 

2.1.1 네트워크 애플리케이션 구조 (Network application architecture)

: 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는가?

 

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

  • 서버(server): 항상 동작하고 있는 호스트
  • 클라이언트(client): 서버로 서비스를 요청하는 호스트

--> 서버가 클라이언트 호스트로부터 객체를 요청받으면, 서버는 요청된 객체를 클라이언트 호스트로 보내면서 응답한다.

  • 클라이언트-서버 구조에서 클라이언트는 서로 직접적으로 통신하지 않는다.
  • 서버: 고정 IP 주소라는 잘 알려진 주소를 갖는다. 
  • 서버는 항상 동작하고 있으므로, 클라이언트는 서버 주소로 패킷을 보내서 언제든지 서버에 연결할 수 있다.
  • 데이터 센터(data center): 인기 있는 새로운 웹사이트가 하나의 서버로만 요청을 처리한다면, 이에 맞춰 서버가 신속하고 제대로 동작하지 못할 수 있다. 이러한 이유로 많은 수의 호스트를 갖춘 데이터 센터(data center)가 강력한 가상의 서버를 생성하는 역할로 사용된다.

 

▶ P2P 구조

: 애플리케이션은 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신한다. 특정 서버를 통하지 않고 피어가 통신하므로, 이 구조를 peer-to-peer (P2P)라고 한다.

  • 자기 확장성(self-scalability): 각 피어들이 파일을 요구함으로써 작업 부하를 만들어내지만, 각 피어들은 또한 파일을 다른 피어들에게 분배함으로써 그 시스템에 서비스 능력을 추가한다.
  • 비용 효율적: P2P 구조에서는 일반적으로 상당한 서버 인프라스트럭처와 서버 대역폭을 요구하지 않는다.

 

 

2.1.2 프로세스 간 통신
  • 프로세스(process): 종단 시스템에서 실행되는 프로그램

2개의 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통한 메시지(message) 교환으로 서로 통신한다. 송신 프로세스는 메시지를 만들어 네트워크로 보낸다. 수신 프로세스는 메시지를 받고 역으로 메시지를 보냄으로서 응답한다.

 

클라이언트와 서버 프로세스
  • Client-Server
  • P2P

 

프로세스와 컴퓨터 네트워크 사이의 인터페이스
  • 소켓(socket): 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스

소켓(socket)은 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스이므로, 애플리케이션과 네트워크 사이의 API(Application Programming Interface)라고도 한다.

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

 

프로세스 주소 배정

한 호스트 상에서 수행되고 있는 프로세스가 다른 호스트에서 수행되고 있는 프로세스로 패킷을 보내기 위해서는 수신 프로세스의 주소를 갖고 있을 필요가 있다.

--> IP 주소 + Port 번호

  • IP 주소: 인터넷에서 호스트는 IP 주소로 식별된다.
  • Port 번호: 목적지 Port 번호, 한 호스트가 많은 네트워크 애플리케이션을 수행할 수 있기 때문에 필요하다.

 

 

2.1.3 애플리케이션이 이용 가능한 트랜스포트 서비스
  • 소켓(socket): 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스

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

: 신뢰적 데이터 전송, 처리율, 시간, 보안

 

1) 신뢰적 데이터 전송(data integrity)

프로토콜이 보장된 데이터 전송 서비스를 제공한다면, 이를 신뢰적 데이터 전송(reliable data transfer)을 제공한다고 한다.

  • 손실 허용 애플리케이션(loss-tolerant application): 트랜스포트 계층 프로토콜이 신뢰적 데이터 전송을 제공하지 않을 때, 송신 프로세스가 보낸 데이터는 수신 프로세스에 전혀 도착하지 않을 수 있다.

 

2) 처리율(throughput)

: 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율

  • 대역폭 민감 애플리케이션(bandwidth-sensitive application): 처리율 요구사항을 갖는 애플리케이션 --> UDP
  • 탄력적 애플리케이션(elastic application): 가용한 처리율이 많으면 많은대로, 적으면 적은대로 이용할 수 있는 애플리케이션 --> TCP

- UDP: congestion으로 인한 loss가 발생하긴 하지만, throughput은 유지된다.

- TCP: 버퍼링을 이용한 지연으로, throughput이 감소한다.

 

3) 시간(timing)

: Low delay

 

4) 보안(security)

: 트랜스포트 프로토콜은 애플리케이션에 하나 이상의 보안 서비스를 제공할 수 있다.

 

 

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

▶ 연결지향형 서비스

  1. 핸드셰이킹: client와 server가 서로 전송 제어 정보를 교환한다. (client, server에 패킷이 곧 도달할 테니 준비하라고 알려주는 역할)
  2. --> TCP 연결 생성: 전이중(full-duplex) 연결 (두 프로세스가 서로에게 동시에 메시지를 보낼 수 있음)

▶ 신뢰적인 데이터 전송 서비스

: 모든 데이터를 오류 없이 올바른 순서로 전달한다. TCP 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달하면, 그 바이트 스트림이 손실되거나 중복되지 않게 수신 소켓으로 전달한다.

 

▶ 혼잡 제어 방식

: TCP 혼잡 제어 방식은 네트워크가 혼잡 상태에 이르면, 프로세스(client 또는 server) 속도를 낮춘다.

 

UDP 서비스

▶ 비연결형 서비스

: 두 프로세스가 통신을 하기 전에 핸드셰이킹을 하지 않는다.

 

▶ 비신뢰적인 데이터 전송 서비스

: 하나의 프로세스가 UDP 소켓으로 메시지를 보내면, UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장하지 않는다. 그리고 수신 소켓에 도착하는 메시지들의 순서가 뒤바뀔 수도 있다.

 

▶ 혼잡 제어 방식 x

: UDP의 송신 측은 데이터를 원하는 속도로 하위 계층(네트워크 계층)으로 보낼 수 있다. --> 처리량(throughput)을 유지할 수 있다.

 

인터넷 트랜스포트 프로토콜이 제공하지 않는 서비스
  • TCP(Transmission Control Protocol): 신뢰적 종단 간 데이터 전송을 제공한다.
  • TLS(Transport Layer Security): TCP와 함께 사용되는 보안 프로토콜

But... does not provide

: timing, minimum throughput gurantee, security

 

 

2.1.5 애플리케이션 계층 프로토콜 (application-layer protocol)

: 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법

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