flow-vector

가장 기본적인 네트워크 애플리케이션으로는 종단시스템에서 실행되는 웹 브라우저와 웹 서버 호스트에서 실행되는 웹 서버 프로그램이 있다.

네트워크 애플리케이션을 개발한다고 하는 것은 종단시스템에서 작동하는 소프트웨어를 개발하는 것이다.

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

현대 네트워크 애플리케이션 구조에는 잘 알려진 아래의 2가지 대표 구조가 있다.

  1. 클라이언트 - 서버 구조 (client -server architecture)
    • 서버
      • 항상 작동하고 있는 호스트를 서버라고 한다.
      • 여러 클라이언트들로 부터 서비스 요청(request)을 받는다
    • 클라이언트
      • 가끔 혹은 항상 작동하고 있을 수 있다.
      • 웹 브라우저
    • 특징
      • 클라이언트들은 서로 직접적으로 통신하지 않고 서버를 거쳐서 통신하게 된다.
      • 서버는 고정 ip를 가지는데 이는 서버에 접속하는 클라이언트들이 항상 동일한 ip 주소를 통해 접속할 수 있도록 하기 위함이다.
      • 보통 하나의 서버가 모든 클라이언트의 요청에 응답하는 것이 불가능하기 때문에 많은 수의 호스트(약 10만개)를 가지는 데이터 센터가 가상의 서버를 생성하는 역할로 사용된다.
  2. P2P 구조 (peer - to - peer architecture)
    • 특징
      • peer라고 불리는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신한다.
      • 대표적인 어플리케이션으로는 비트토렌트가 있다.
      • 자가 확장성(selft-scalability)
        • P2P 파일 공유 어플리케이션의 예시에서 각 피어들은 서로 파일을 요구 함으로서 작업부하를 만들어 내지만 내려받은 파일을 다른 피어들에게 분배 하면서 해당 시스템의 능력을 추가한다.

프로세스간 통신

네트워크에서 프로세스간 통신서로 다른 호스트에서 작동하는 프로세스끼리의 데이터 통신을 의미한다.
프로세스들은 네트워크를 통해 메시지를 교환함으로서 서로 통신을 한다.

클라이언트와 서버 프로세스

  • 클라이언트 프로세스
    • 프로세스간의 통신 세션에서 접속을 초기화 하는 프로세스
    • ex) 웹 브라우저 프로세스
  • 서버 프로세스
    • 프로세스간 통신 세션에서 접속을 기다리는 프로세스
    • ex) 웹 서버 프로세스

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

프로세스는 소켓(socket)이라고 하는 애플리케이션 계층과 전송 계층사이의 인터페이스를 통해 네트워크로 메시지를 보내고 받는다.

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

프로세스 주소 배정

한 호스트의 프로세스가 다른 호스트의 프로세스에게 메세지를 보내기 위해서는 상대방 호스트의 주소를 알아야하는데 이를 인터넷에서는 IP 주소라고 한다.

IP 주소외에도 상대방 호스트의 어떤 프로세스로(수신 소켓) 메세지를 보내야하는지 알아야하는데 이는 PORT 번호로 식별할 수 있다.

잘 알려진 애플리케이션은 약속된 포트 번호를 가지는데 웹 서버는 80번, 메일은 25번을 가진다.

애플리케이션이 이용 가능한 전송 계층 서비스

네트워크 애플리케이션을 개발할 때, 전송 계층의 프로토콜 중 하나를 선택을 해야하는데 어떤 근거로 프로토콜을 선택할 수 있을까?

선택을 하기 위해서는 전송계층의 여러 프로토콜이 제공하는 서비스가 무엇이 있는지 확인하고 개발하려는 애플리케이션에 적합한 서비스를 제공하는 전송계층 프로토콜을 선택하여야 한다.

대표적인 전송게층 서비스의 종류로는 아래의 것들이 있다.

  • 신뢰적 데이터 전송
    • 패킷 손실의 경우
      • 라우터의 버퍼가 가득차서 패킷이 버려지는 경우
      • 전송중 패킷 비트가 잘못 되어서 호스트 혹은 라우터에서 버려지는 경우
    • 어떤 상황에서도 데이터가 올바르고 완전히 애플리케이션이 전달되는 것을 보장한다면 이는 전송계층 프로토콜이 신뢰적 데이터 전송을 제공한다고 할 수 있다.
    • 어떤 애플리케이션은 손실 허용 애플리케이션일 수 있다. 예를 들면 멀티미디어 애플리케이션에서 데이터 손실은 재생되는 미디어의 품질에 영항을 미칠 수 있으나 어느 정도 데이터 손실을 참아낼 수 있다.
  • 처리율
    • 처리율이란 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율이다.
    • 여러 세션들이 네트워크 대역폭을 공유하기 때문에 가용한 처리율은 시간에 따라 달라질 수 있다.
    • 대역폭 민감 애플리케이션
      • 보장된 처리율을 요구하는 애플리케이션
      • ex) 인터넷 전화 애플리케이션이 32kbps로 음성을 인코딩한 경우
    • 탄력적 애플리케이션
      • 처리율에 융통성있게 대응 할 수 있는 애플리케이션
      • ex) 전자 메일, 파일 전송, 웹 전송
  • 시간
    • 송신자가 소켓으로 내보내는 모든 비트가 수신자에게 특정 시간내에 도달하는 것을 보장하는 서비스
    • 엄격한 시간조건이 필요한 애플리케이션에서 요구됨
  • 보안
    • 송신자가 전송하는 데이터를 암호화하고 수신자는 해당 데이터를 해독한다.

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

인터넷은 UDP, TCP 두가지 전송계층 프로토콜을 사용하고 있다. 각각의 프로토콜이 제공하는 서비스에 대해서 알아보자.

  • TCP(Transmission Control Protocol)
    • 연결 지향형 서비스
      • 애플리케이션 계층 메시지 전송전, 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 한다.
        핸드 세이킹을 사용하여 서로의 소켓이 연결된 것을 확인한다.
      • 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있기 때문에 전이중(full-duplex)연결이라고 한다.
      • 메시지 전송이 끝나면 연결을 끊는다.
    • 신뢰적 데이터 전송 서비스
      • 모든 데이터를 오류 없이 올바른 순서로 주고 받는 것을 보장한다.
    • 혼잡 제어 서비스
      • 프로세스의 이득 보다는 인터넷 전체의 성능 향상을 위한 서비스
      • 네트워크가 혼잡상태에 이르면 프로세스 속도를 낮추어, 여러 TCP 연결이 네트워크 대역폭을 공평하게 공유할 수 있도록 제한
  • UDP(User Datagram Protocol)
    • 비연결형 서비스
      • 통신 전 핸트세이킹을 하지 않는다.
    • 비신뢰적 데이터 전송 서비스
      • 데이터 신뢰성을 보장하지 않는다.
    • 혼잡제어하지 않는다
    • 원하는 속도로 네트워크 계층으로 데이터를 보낼 수 있으나 해당 속도가 종단 시스템에서 보장되지 않는다.

애플이케이션 계층에 구현된 TSL(Transport Layer Security)을 통해 보안 서비스를 제공할 수 있다.

TCP, UDP 프로토콜은 처리율과 시간에 대한 서비스를 제공하지 않지만 애플리케이션 설계단에서 해당 문제를 처리하고 있다. 하지만 엄밀히 말하면 시간 혹은 대역폭은 보장되지 않는다.

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

서로 다른 종단 시스템은 메시지를 주고 받게 되는데 애플리케이션 프로토콜은 메시지를 주고받는 방법에 대한 정의를 하고 있다.

  • 교환 메시지 타입(예 : 요청 or 응답)
  • 메시지 타입의 문법
  • 필드의 의미
  • 언제, 어떻게 메시지를 전송하고 응답하는지 결정하는 규칙

대표적인 애플리케이션 프로토콜로는 웹 프로토콜의 HTTP(Hyper Text Transfer Protocal)가 있다.

출처
컴퓨터 네트워크 : 하향식 접근 8판

'Computer Science > Network' 카테고리의 다른 글

애플리케이션 계층 - 웹과 HTTP  (0) 2023.03.22
profile

flow-vector

@flow-vector

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!