호우동의 개발일지

Today :

article thumbnail

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

인터넷 애플리케이션 지원 유형

  • 인터넷은 애플리케이션에게 2개의 전송 프로토콜을 제공 → TCP와 UDP
    • 여기서 인터넷은 일반적인 TCP/IP 네트워크를 뜻함
    • TCP와 UDP는 서로 다른 서비스 모델을 제공한다.

 


TCP 서비스

  • TCP 서비스 모델은 연결지향적 서비스신뢰적인 데이터 전송 서비스를 제공한다.
    • 연결지향형 서비스 - 과정
      1. 메시지 전송 전에, TCP는 클라이언트와 서버가 서로 제어 정보를 교환하게 한다.
        → 핸드셰이킹 과정: 클라이언트와 서버에 패킷이 곧 도달한다는 것을 알려주는 역할

      2. 핸드셰이킹 과정 이후, TCP 연결이 두 프로세스의 소켓 사이에 존재한다고 칭함
      3. 해당 연결은 메시지를 동시에 보낼 수 있기 때문에 전이중(full-duple) 연결
      4. 애플리케이션이 메시지 전송을 마치면 연결을 끊음

    • 신뢰적 데이터 전송 서비스
      • 통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위해 TCP에 의존
      • TCP는 바이트 스트림이 손실되거나 중복되지 않게 수신 소켓으로 전달한다.
        • 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달할 경우

  • TCP는 혼잡 제어 방식을 채택
    • 혼잡 제어 방식
      • 통신하는 프로세스의 직접 이득보다 인터넷 전체 성능 향상을 위한 서비스 제공
      • TCP 혼잡 제어 방식은 네트워크가 혼잡 상태에 이르면 프로세스의 속도를 낮춤
      • TCP 혼잡 제어는 각 TCP 연결이 네트워크 대역폭을 공평하게 공유할 수 있게끔 제한

 


UDP

  • 최소의 서비스 모델을 가진 간단한 전송 프로토콜
  • 비연결형이기 때문에 두 프로세스 통신 전 핸드셰이킹을 하지 않는다.
  • UDP는 비신뢰적인 데이터 전송 서비스를 제공
    • UDP 소켓을 통해 메시지를 보내면, UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장 X
    • 수신 소켓에 도착하는 메시지들의 순서가 뒤바뀔 수도 있음

  • UDP는 혼잡 제어 방식 X
    • UDP의 송신 측은 데이터를 원하는 속도로 하위 계층에 보낼 수 있다.

 


인터넷 트랜스포트 프로토콜이 제공하지 않는 서비스

  • TCP와 UDP에 대해 처리율 혹은 시간 보장에 대한 언급은 빠져있음
  • 현대 인터넷은 대부분의 시간 민감 애플리케이션에게 만족스러운 서비스를 제공할 수 없다.

 

트랜스포트 프로토콜을 사용하는 인터넷 애플리케이션

인터넷 애플리케이션 별로 다름
인터넷 애플리케이션 별로 다름

  • 전자메일, 원격 터미널 접속, 웹, 파일 전송 = TCP 사용
    → TCP가 모든 데이터가 목적지에 도착하도록 보자 하는 신뢰적 데이터 전송 서비스를 제공

  • 인터넷 전화 애플리케이션(예 : 스카이프) = TCP와 UDP 사용
    • 패킷 손실을 허용하지만, 효율성을 위해 최소의 전송률이 필요 → UDP 선호
      • UDP를 사용하면 혼잡 제어 방식과 패킷 오버헤드를 회피할 수 있음

    • 방화벽이 UDP 트래픽을 차단하도록 설정된 경우
      → 인터넷 전화는 UDP 통신 실패를 대비하여 TCP를 사용하도록 설계

 

 


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


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

  • 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법 정의
  • 아래와 같은 내용을 정의
    1. 교환 메시지 타입
    2. 여러 메시지 타입의 문법
    3. 필드의 의미, 즉 필드에 있는 정보의 의미
    4. 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지 결정하는 규칙

 


RFC

  • 여러 애플리케이션 계층 프로토콜은 RFC에 명시되어 있음
    → 공중 도메인(public domain)에서 찾을 수 있다.

  • 이외의 다른 애플리케이션 계층 프로토콜은 독점(비개방적)이며 공중 도메인을 구할 수 없음
    • 스카이프 → 비개방 애플리케이션 계층 프로토콜 사용

 

HTTP 예시

  • 웹 애플리케이션 계층 프로토콜 HTTP는 RFC로 얻을 수 있음
  • 브라우저 개발자가 HTTP RFC 규칙을 따를 경우
    → HTTP RFC 규칙에 따른 어떠한 웹서버로부터 웹페이지를 가져올 수 있다.

 


네트워크 애플리케이션 vs 애플리케이션 계층 프로토콜

  • 네트워크 애플리케이션과 애플리케이션 계층 프로토콜을 구분하는 것은 중요
  • 애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 요소에 불과

 

차이점 예시

  • 웹 → 웹 서버로부터 문서를 얻게 해주는 네트워크 애플리케이션
    • 웹 애플리케이션의 구성요소
      • 문서 포맷 표준(HTML)
      • 웹 브라우저(크롬, 인터넷 익스플로러)
      • 웹 서버(아파치, 마이크로소프트 서버)
      • 애플리케이션 계층 프로토콜
      • etc…

  • 웹 애플리케이션 계층 프로토콜(HTTP)
    → 브라우저와 웹 서버 사이에 교환되는 메시지의 포맷과 순서를 정함
    따라서 HTTP는 웹 애플리케이션의 한 요소에 불과

 


애플리케이션 분야

  • 웹(web) : 매우 인기 있는 애플리케이션이고 이해하기 쉽게 간단함
  • 전자메일 : 여러 애플리케이션 계층 프로토콜을 사용 → 웹보다 복잡
  • DNS : 인터넷을 위한 디렉터리 서비스를 제공
    • 대부분의 사용자는 DNS와 직접 상호작용을 하지 않는다.
    • 사용자는 다른 애플리케이션을 통해 간접적으로 제어