2014년 6월 9일 월요일

TCP 개요, 기능, 특성

TCP 개요, 역사, 표준

  • TCP 역사
    • ARPAnet
      • 1970년대 초창기의 인터넷은 ARPAnet이라고 불리는 작은 연구 인터네트워크에 불과
      • ARPA(또는 DARPA)는 미국 국방부 고등 연구 계획국(United States Defense Advanced Research Projects Agency)의 약자
      • 이 네트워크는 호스트가 서로 연결할 수 있도록 하는 기술인 네트워크 제어 프로토콜(NCP, Network Control Protocol)을 사용
    • 초창기 TCP
      • RFC 375로 전송 제어 프로그램(Transmission Control Program)이라 불림
      • 기본적으로 애플리케이션이 인터네트워크에서 동작하기 위해 필요한 모든 것을 책임짐
      • 초창기 TCP는 오늘날의 TCP와 IP 기능을 모두 가지고 있음
    • TCP와 IP의 분리
      • 4계층 기능은 전송 제어 프로토콜(Transmission Control Protocol)
      • 3계층은 인터넷 프로토콜로 분리
      • TCP 버전 4에서 확정 -> 그러므로 IP의 첫 버전도 "버전 4"로 명명
      • 1981년 9월 RFC 793 "Transmission Control Protocol"은 TCP 버전 4를 정의했으며 현재까지 유효한 표준으로 쓰이고 있음
  • TCP 동작 개요
    • TCP/IP 프로토콜 슈트의 핵심 전송 계층 프로토콜은 전송 제어 프로토콜(TCP)이다.
    • TCP는 연결형이고, 승인을 제공하며, 신뢰할 수 있는 다양한 기능을 갖춘 프로토콜로 안정적이지 않은 인터넷 프로토콜(IP) 위에서 애플리케이션이 안정적으로 데이터를 송신하는 방법을 제공한다.
    • TCP는 애플리케이션이 데이터를 바이트 스트림으로 보낼 수 있도록 하며 그 바이트 스트림을 적절한 크기의 세그먼트로 자동 패키징한다.
    • 그리고 TCP의 특수 슬라이딩 윈도우 체계는 수신자가 모든 데이터를 수신하고, 필요할 경우 재전송을 하며, 상대방의 송신 속도를 조절할 수 있는 흐름 제어 기능을 제공한다.
  • TCP 표준
    • RFC 793은 TCP를 정의하는 표준이지만 근래의 TCP가 동작하는 모든 세부 사항을 기술하지는 않음
  • 보조 TCP 표준
RFC 이름 설명
813 Window and Acknowledgment Strategy in TCP TCP 슬라이딩 윈도우 승인 시스템과 그로 인해 발생할 수 있는 문제, 해결 방법을 설명한다.
879 The TCP Maximum Segment Size and Related Topics TCP 메시지 크기를 제어하는 중요한 최대 세그먼트 크기(MSS) 인자를 설명하고 이 인자를 IP 데이터그램 크기와 연관시킨다.
896 Congestion Control in IP/TCP Internetworks 혼잡 문제를 다루며 TCP를 이용해 그 문제를 해결하는 방법을 설명한다. 제목에 나온 프로토콜 이름이 거꾸로(IP/TCP) 적혀 있다는 것에 주목하자.
1122 Requirements for Internet Hosts - Communication Layers 호스트에서 TCP를 구현하는 중요한 세부 사항을 설명한다.
1146 TCP Alternate Checksum Options TCP 장비가 기존과는 다른 체크섬 계산법을 사용하도록 하는 방법을 명시한다.
1323 TCP Extensions for High Performance 고속 링크를 위한 TCP 확장과 새로운 TCP 옵션을 정의한다.
2018 TCP Selective Acknowledgment Options TCP 장비가 특정 세그먼트만을 재전송하도록 선택하는 기능을 설명한다.
2581 TCP Congestion Control TCP 네트워크에서 혼잡을 제어하는 데 사용하는 4가지 알고리즘인 느린 시작, 혼잡 회피, 빠른 재전송, 빠른 회복을 설명한다.
2988 Computing TCP's Retransmission Timer 장비가 데이터를 재전송하기 전에 승인 메시지를 기다리는 시간을 정의하는 TCP 재전송 타이머를 설정하는 문제를 다룬다.


TCP 기능

  • TCP가 수행하는 기능
    • 주소지정/다중화
      • 여러 프로세스에서 온 데이터를 다중화하여 하위 네트워크 계층 프로토콜로 송신되도록 하는 것은 TCP의 중요한 임무다
      • 동시에 이들 상위 계층 애플리케이션은 TCP 포트를 통해 식별된다.
    • 연결 수립, 유지, 종료
      • TCP는 장비가 데이터를 이동시킬 수 있는 연결을 협상하고 수립하기 위해 따라야 할 절차 모음을 제공한다.
      • 연결이 수립되면 TCP는 연결을 유지하고 혹시 발생할 지 모르는 문제를 처리하기 위한 방법이 있다.
      • 장비가 TCP 연결로 할 일을 마치면 그 연결을 종료하기 위한 특수한 절차도 수행된다.
    • 데이터 처리와 패키징
      • 애플리케이션이 상위 계층에서 데이터를 송신할 수 있는 방법을 제공한다.
      • 이 데이터는 메시지로 패키징되고 목적지 TCP 소프트웨어로 전달된다.
    • 데이터 전송
      • 송신 장비의 TCP 구현은 패키징된 데이터를 다른 장비의 TCP 프로세스로 전달할 책임이 있다.
    • 신뢰성과 전송 품질 서비스 제공
      • 애플리케이션이 데이터를 신뢰할 수 있게 송신할 수 있도록 여러 서비스와 기능을 제공한다.
    • 흐름 제어와 혼잡 회피 기능 제공
      • 두 장비 간의 데이터 흐름을 제어하고 관리할 수 있도록 한다.
      • 두 장비 간 통신에서 발생할 수 있는 혼잡을 처리하는 기능도 포함한다.
  • TCP가 수행하지 않는 기능
    • 애플리케이션 사용 명시 안함
      • 전송 프로토콜만을 정의하므로 애플리케이션이 어떻게 TCP를 사용해야 하는지 구체적으로 명시하지 않는다.
    • 보안 제공 안함
      • 전송하는 데이터의 인증이나 프라이버시를 보장하기 위한 어떤 방법도 제공하지 않음
    • 메시지 경계 유지 안함
      • TCP는 데이터를 분리된 메시지가 아닌 연속된 스트림으로 송신
      • 한 메시지가 어디에서 끝나고 다음 메시지는 어디에서 시작되는지를 명시하는 것은 애플리케이션에게 달려있음
    • 통신 보장 안함
      • TCP는 승인을 받지 않는 전송을 탐지하고 필요할 경우 재전송
      • 어떤 문제가 통신을 방해할 경우  TCP는 계속 재전송을 시도함


TCP 특성

  • 연결형
    • TCP는 장비가 데이터를 송신하기 전에 먼저 연결을 수립할 것을 요구
  • 양방향
    • 일단 연결이 수립되면 TCP 장비는 누가 연결을 초기화했는지에 관계없이 데이터를 양방향으로 송수신함
  • 다중 연결과 종단 식별
    • 연결된 두 장비가 사용하는 소켓 쌍은 TCP 연결의 종단을 식별
  • 신뢰성
    • TCP는 모든 데이터가 목적지에 도달할 수 있도록 송신, 수신한 데이터를 추적하기 때문에 TCP 통신은 신뢰성이 있다.
  • 승인
    • 신뢰성을 제공하는 데 핵심이 되는 특성은 TCP가 모든 전송에 대한 승인 메시지를 보낸다는 것이다.
  • 스트림 기반
    • TCP는 애플리케이션이 연속적인 데이터 스트림을 송신할 수 있도록 한다.
    • 애플리케이션은 이 스트림을 블록으로 나누는 것을 걱정할 필요가 없다. TCP가 알아서 해준다.
  • 구조화되지 않은 데이터
    • TCP의 스트림 기반 특성때문에 애플리케이션은 메시지간 구별하는 방법을 제공해야 한다.
  • 데이터 흐름 관리
    • TCP는 데이터가 일정한 속도로 평탄하게 흐르고, 전송 경로 중 발생하는 문제를 처리할 수 있도록 연결을 관리한다.

견고성 원칙
"자신이 수행하는 작업은 보수적으로, 다른 사람에게서 무언가를 받을 때는 관대하게"















TCP/IP 사용자 데이터그램 프로토콜(UDP)

UDP 개요, 역사, 표준
사용자 데이터그램 프로토콜(UDP, User Datagram Protocol)은 전송 계층에서 신뢰성, 승인, 흐름 제어 기능을 필요로 하지 않는 애플리케이션을 위해 개발됐다. UDP는 단순하고 빠르게 설계됐고 전송 계층 주소지정(UDP 포트), 선택적인 체크섬 기능을 제외하면 거의 아무 것도 제공하지 않는다.

UDP 동작

  • UDP가 하는 일
    1. 상위 계층 데이터 전송
    2. UDP 메시지 캡슐화
    3. 메시지를 IP로 전달함
  • UDP가 하지 않는 일
    • 데이터를 송신하기 전에 연결을 수립하는 것
    • 데이터를 수신했다는 것을 알리는 승인을 송신하는 것
    • 메시지가 목적지에 도달할 것이라고 보장하는 것
    • 손실 메시지를 탐지하여 재전송하는 것
    • 데이터가 송신한 순서대로 수신되는 것
    • 장비 간의 혼잡이나 흐름을 처리하는 방법을 제공하는 것

UDP 메시지 포맷


  • 출발지 포트
      • 2바이트
    • 출발지 장비에서 UDP 메시지를 생성한 프로세스의 16비트 포트번호
    • 이것은 클라이언트가 서버에게 데이터를 송신할 때 사용한 임시 클라이언트 포트번호, 또는 서버가 클라이언트에게 응답을 보낼 때 사용한 유명/등록 서버 포트를 의미
  • 목적지 포트
      • 2바이트
    • 목적지 장비에서 UDP 메시지를 수신하는 프로세스의 16비트 포트번호
    • 이것은 클라이언트 요청이 도달할 유명/등록 서버 포트, 또는 서버의 응답이 도달할 임시 클라이언트 포트번호를 의미
  • 길이
      • 2바이트
    • 헤더와 데이터 필드를 포함한 전체 UDP 데이터그램의 길이
  • 체크섬
      • 2바이트
    • 전체 UDP 데이터그램과 특수 가상 헤더 필드에 대해 계산되는 선택적인 체크섬
  • 데이터
      • 가변적
    • UDP로 송신할 캡슐화된 상위 계층 메시지


UDP 가상 헤더 포맷

  • 가상 헤더의 전체 길이는 11바이트다. 이 뒤에 1바이트의 0이 붙어 구성된 12바이트가 실제 UDP 메시지 앞에 붙는다.
  • 이 가상 헤더와 실제 UDP 메시지 전체에 대하여 계산된 체크섬 값이 UDP 헤더의 체크섬 필드에 채워진다.
  • 가상 헤더는 이 계산에만 쓰이고 버려지며 실제로 송신되지는 않는다.