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

2025. 8. 13. 23:30·CS/네트워크

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

애플리케이션 소프트웨어는 종단 시스템에 존재합니다.

애플리케이션 구조는 개발자가 설계하며, 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 알려줍니다.

개발자는 이러한 애플리케이션 구조를 선택할 때 대체로 클라이언트-서버 구조와 P2P 구조 중 하나로 선택할 것 입니다.

.

1) 클라이언트-서버 구조

클라이언트-서버 구조에서 서버는 다른 호스트인 클라이언트에게 서비스 요청을 받습니다.

예시로 웹 서버는 클라이언트로부터 요청이오면 요청된 객체를 보내면서 응답합니다.

특징을 살펴보면 다음과 같습니다.

  • 클라이언트끼리는 서로 직접적으로 통신하지 않음
  • 서버는 고정된 IP주소를 가짐

서버는 항상 동작하고 있으므로 클라이언트 서버 주소로 패킷을 보내서 언제든지 서버에 연결할 수 있습니다.

이러한 구조로 만들어진 애플리케이션은 다음과 같습니다.

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


때때로 수많은 요청들이 한꺼번에 들어오면 서버 호스트가 모든 요청에 응답할 수 없을때가 있습니다.

이에 많은 수의 호스트를 갖춘 데이터 센터를 사용하여 가상의 서버를 생성합니다. 인기있는 서비스(구글, 유튜브 등)은 하나 이상의 데이터 센터를 이용합니다. 보통 하나의 데이터센터에 10만개 정도의 서버를 갖추고 있으며, 서비스 제공자들은 데이터 센터로부터 데이터를 보내기 위해 비용을 지불해야 합니다.

.

2) P2P 구조

P2P구조에서는 항상 켜져 있는 인프라스트럭처 서버에 최소로 의존합니다. 대신에 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하게 합니다.


피어는 서비스 제공자가 소유하지 않고 사용자들이 제어하는 데스크톱과 랩톱이며, 대부분의 피어들은 가정, 대학, 사무실에 위치합니다.

특정 서버를 통하지 않고 피어가 통신하므로 이 구조를 피어 투 피어(peer-to-peer, p2p)라고 합니다. 예시로 비트토렌트가 있습니다.

피어 투 피어(peer-to-peer, P2P): 특정 서버를 통하지 않고 피어끼리 통신


P2P의 가장 주목할 만한 특성은 자가 확장성(self-scalability)입니다. P2P 파일 공유 애플리케이션에서 각 피어들은 다른 피어들에게 파일을 분배함으로써 서비스 능력을 높입니다. 이러한 장점이 있지만 분산 구조 특성 상 보안, 성능, 신뢰성 면에서 주의를 기울여야 합니다.

.

2. 프로세스 간 통신

프로세스는 종단 시스템에서 실행되는 프로그램입니다. 2개의 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통해 메시지(message)를 교환하며 서로 통신합니다. 

프로세스: 컴퓨터에서 실행되는 프로그램


웹 애플리케이션에서 두 프로세스 간의 통신 세션에서 통신을 초기화하는 프로세스를 클라이언트라하고, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버 라고 합니다.

 

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

 

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

소켓은 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스로 크게 IP주소와 포트 번호로 이루어집니다.

IP주소는 인터넷에서 호스트를 식별하고 포트번호는 목적지 호스트 내의 수신 프로세스를 명시합니다.

소켓: 네트워크에서 프로세스끼리 데이터를 주고받기 위해 만드는 가상의 연결 포인트

인터페이스: 서로 다른 두개의 시스템, 프로그램 등이 서로 소통하는 규격, 접점

 

인기있는 애플리케이션은 특정한 포트 번호가 할당됩니다. 예시로 웹 서버는 80, 메일 서버는25번으로 식별됩니다.
.

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

1) 트랜프로트 계층 프로토콜의 서비스

인터넷을 포함해서 많은 네트워크는 하나 이상의 트랜스포트 프로토콜을 제공합니다.

애플리케이션을 개발할 때는 사용 가능한 트랜스포트 프로토콜중 하나를 선택해야 하는데, 보통 가장 적합한 서비스를 제공하는 프로토콜을 선택합니다.

서비스 품질요소 종류는 다음과 같습니다.

  • 신뢰적 데이터 전송
    • 한 애플리케이션이 보낸 데이터가 올바르고 완전하게 전달되도록 보장
    • ex) 전자메일, 파일 전송, 원격 호스트 접속, 웹 문서 전송, 재무 등
    • 반대: 손실 허용 애플리케이션(loss-tolerant application)
  • 처리율 (양)
    • 초당 얼마나 많은 데이터를 전송할 수 있는지 
    • 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율
    • 명시된 속도에서 보장된 가용 처리율을 제공
    • 대역폭 민감 애플리케이션: 처리율 요구사항을 갖는 애플리케이션
    • 탄력적 애플리케이션: 가용한 처리율을 유동적으로 이용
  • 시간 (지연)
    • 데이터가 얼마나 빠르게 도착하는지(지연시간 보장)
    • ex) 인터넷 전화, 원격 회의 등
  • 보안
    • 데이터 암호화, 인증, 무결성 보장

이러한 서비스 품질 요소를 고려해서 적합한 서비스를 선택하고 애플리케이션을 개발해야 합니다.

다양한 네트워크 애플리케이션의 요구사항

 

위의 표는 다양한 네트워크 애플리케이션의 요구사항을 나타냅니다.

.

2) 인터넷이 제공하는 프로토콜 서비스

인터넷은 UDP(User Datagram Protocol)와 TCP(Transmission Control Protocol)를 제공합니다.

각각을 비교해보겠습니다.

  • TCP
    • 연결지향형 서비스: 클라이언트와 서버가 서로 전송 제어 정보를 교환하게 함
    • 신뢰적인 데이터 전송: 오류 없이 올바른 순서로 전달
    • 혼잡 제어 방식: 송신 속도를 조절해 네트워크 과부하 방지, 통신하는 프로세스의 직접 이득보다 인터넷의 전체 성능 향상을 위함
  • UDP
    • 최소의 서비스 모델
    • 비 연결형
    • 비 신뢰적인 데이터 전송: 수신소켓에 도착하는것을 보장하지 않음, 순서 뒤바뀔 수 있음
    • 혼잡제어 X: 원하는 속도로 하위 계층으로 보낼 수 있음, 혼잡 시 패킷 손실 가능성 증가

사용하는 종류는 다음과 같습니다.


RFC: 인터넷 엔지니어링 태스크 포스(IETF)같은 표준화 기구가 발행한 공식 표준 문서


.

4. 애플리케이션 계층 프로토콜의 메시지 정의

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

정의하는 내용은 다음과 같습니다.

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

애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 요소일 뿐입니다. 예시로 웹은 문서 포맷 표준(HTML), 웹 브라우저, 웹 서버 등 여러 요소들로 구성됩니다.

'CS > 네트워크' 카테고리의 다른 글

[네트워크] HTTP 메시지 포맷  (0) 2025.09.02
[네트워크] HTTP 개요, 비지속 연결과 지속 연결  (2) 2025.08.28
[네트워크] TCP/IP 5계층과 캡슐화  (4) 2025.08.05
[네트워크] 패킷 교환 네트워크에서의 지연, 손실과 처리율  (3) 2025.07.28
[네트워크] 네트워크 코어  (4) 2025.07.23
'CS/네트워크' 카테고리의 다른 글
  • [네트워크] HTTP 메시지 포맷
  • [네트워크] HTTP 개요, 비지속 연결과 지속 연결
  • [네트워크] TCP/IP 5계층과 캡슐화
  • [네트워크] 패킷 교환 네트워크에서의 지연, 손실과 처리율
단군왕건영
단군왕건영
널리 세상을 이롭게 하고 싶은 개발자
  • 단군왕건영
    홍익인간 개발자
    단군왕건영
  • 전체
    오늘
    어제
    • 분류 전체보기 (81) N
      • TroubleShooting (14)
      • Backend (11) N
        • Java (2)
        • Spring (7) N
        • JPA (2)
      • DB (1)
      • Algorithm (7)
        • 백준 (4)
      • Frontend (0)
        • React (0)
      • Infra (3)
      • CS (37)
        • 컴퓨터구조 (25)
        • 네트워크 (12)
      • Git (3)
      • Mac (2)
      • 회고 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    springboot
    Jenkins
    java
    컴퓨터구조
    백준
    컴퓨터 구조
    MariaDB
    docker
    spring
    네트워크
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
단군왕건영
[네트워크] 네트워크 애플리케이션의 원리
상단으로

티스토리툴바