본문 바로가기

통신_전자

UDP와 TCP

> UDP(User Datagram Packet)
 - 프로세스 대 프로세스 통신을 생성하기 위해서 포트번호를 사용함
 - 전송계층에서 제어 메커니즘을 제공
 - 흐름제어는 없고 수신된 패킷에 대한 확인응답도 없음
 - 초보적인 오류제어 가능은 제공(오류 발견시 폐기)
 - UDP 헤더의 Checksum을 통해서(옵션) 헤더와 데이터 모두 포함한 사용자 데이터그램 전체에 대한 오류 탐지
  . 송신지에서 계산되고 목적지에서 검사됨
  . 목적지에서 체크섬 에러 발견 시, 즉시 폐기
  . UDP에서 Checksum은 옵션으로 사용됨.
 - 비연결형, 신뢰성 없는 전송 프로토콜
 - 최소한의 오버헤드만 사용하는 매우 간단한 프로토콜
 - 작은 메시지를 보내고자 하고 또한 신뢰성에 대해서 걱정하지 않는 프로세스는 UDP를 사용
 - 비연결형 서비스인만큼 연결을 맺고, 끊는 작업이 없기 때문에 각 사용자 데이터그램은 다른 경로를 통하여 전달
 - 흐름제어 없음(윈도우 메커니즘이 없다. 수신측에서는 들어오는 메시지로 인해 오버플로우가 발생할 수 있다. 

   따라서 UDP를 이용하는 프로세스에서 필요한 경우에는 자체적으로 이러한 서비스를 제공)
 - 오류제어 없음(Checksum을 제외한 오류제어 메커니즘이 없음. 메시지가 손실되거나 중복되었는지 송신자가 알 수 없음.)
 - 혼잡제어 없음(UDP는 비연결형 프로토콜이기 떄문에 혼잡제어를 제공하지 않음)
 - 수신측의 응용은 조각의 순서를 맞출 수 없기 때문에 긴 메시지 전달이 안된다.
    예) DNS Server, 실시간 스트리밍, RIP 같은 경로 갱신 프로토콜로 사용
 - 사용자 데이터그램이라는 UDP패킷은 8바이트 고정 크기 헤더를 가짐

 

> TCP
 - UDP에서 프로세스는 미리 정해진 크기 이내의 메시지를 만들어 각각에 자신의 헤더를 붙인 후, 전송을 위해서 IP에게로 전달된다. 각 메시지를 사용자 데이터그램이라고 하며, 궁극적으로는 하나의 IP 데이터그램이 됨.(데이터그램들 간의 연관성을 따지지 않음)
 - 반면 TCP에서 송신 프로세스는 바이트 스트림의 형태로 데이터를 송수신함
 - 송수신 프로세스가 동일한 속도로 데이터를 생성하고 소비할 수 없기 때문에 각 방향마다 송신 버퍼와 수신버퍼의 두 개의 버퍼가 있음
 - 확인응답을 수신하기 전까지 바이트를 버퍼에 계속 보관
 - TCP는 바이트 스트림의 형태이지만, 이에 대한 서비스 제공자로서의 IP는 바이트 스트림의 형태가 아닌 패킷의 형태로 데이터를 전달한다. 따라서 TCP는 일련의 바이트를 세그먼트라고 하는 패킷으로 그룹화. TCP는 제어를 목적으로 각각의 세그먼트에 헤더를 붙이고 전송을 위해서 IP 계층에 이러한 세그먼트들을 배달한
 - Checksum 필수
 - 연결지향 서비스
 - TCP 세그먼트는 IP 데이터그램으로 캡슐화되어 순서에 어긋나게 전송되거나 손실될 수 있지만( 두 TCP간의 가상 연결 설정, 양방향으로 데이터 교환, 연결종료라는) 연결지향 서비스를 통해서 순서에 맞게 바이트를 전달할 책임이 있음
 - TCP가 프로세스로부터 데이터 바이트를 수신하여 송신 버퍼에 보관하면, TCP는 각 바이트마다 번호를 매긴다. 예를들어, 임의의 값이 1,057이고 전송하고자 하는 총 데이터가 6,000바이트라면, 1,057부터 7,056까지의 번호가 전송되는 바이트 각각에 매겨진다. 바이트 순서화는 흐름 및 오류 제어에서 사용
 - TCP는 전송하고자 하는 세그먼트에 하나의 순서 번호를 할당한다. 각 세그먼트의 순서 번호는 그 세그먼트에 있는 첫 번째 바이트 번호로 설정
 - 오류제어가 수행되기 위해서 송신 전송 계층은 어떤 패킷이 재전송되어야 하는지 알아야 하며, 또한 수신 전송 계층은 어떤 패킷이 중복되었는지 또는 어떤 패킷이 순서에 어긋나게 도착했는지 알아야한다. 이를 위하여 패킷이 가지고 있는 것이 순서번호(Sequence Number)다.
 - 세그먼트 내의 확인응답 번호의 값은 수신하기를 기대하는 다음 바이트의 번호를 나타냄
 - 흐름제어 :  TCP는 UDP와 다르게 흐름 제어를 제공. 송신 TCP는 송신 프로세스로부터 수신되는 데이터의 양을 조절하며, 수신 TCP는 송신 TCP로부터 전송되는 데이터의 양을 조절한다. 이것은 수신측에서 데이터가 과도하게 수신됨으로 인한 데이터의 손실을 방지하기 위한 것
   . 만일 정보가 소비되는 속도보다 더 빨리 생성된다면, 소비되는 측에서 데이터가 과도하게 수신되어 정보의 일부가 손실 될 수 있다. 반면, 정보가 소비되는 속도보다 더 늦게 생성된다면, 소비측에서는 정보의 수신을 기다리게 되어 시스템이 덜 효율적으로 될 것이다. 흐름제어는 전자의 문제와 연관.
  - 오류제어
   . 신뢰성 있는 서비스를 제공하기 위하여, TCP는 오류제어 메카니즘을 구현. 오류제어에서는 세그먼트가(손실 또는 훼손된 세그먼트 등의) 오류 감지를 위한 데이터의 단위이기는 하지만, 오류제어는 바이트-단위 동작
 - 네트워크 계층은 신뢰성을 제공하지 않기 때문에, 응용 계층에서 신뢰성을 요구하는 경우에는 전송계층에서 신뢰성을 제공할 수 있어야 함
  . 회손된 패킷을 감지 및 폐기
  . 손실되거나 제거된 패킷을 추적해 재전송
  . 중복 수신 패킷을 확인하고 폐기
  . 손실된 패킷이 도착할 때까지 순서에 어긋나게 들어온 패킷을 버퍼에 저장
 - 혼잡제어
  . TCP는 UDP와 다르게 망의 혼잡을 고려. 송신측에서 전송되는 데이터의 양은(흐름제어에 의해서) 수신측에 의해서 조절될 뿐만 아니라 망의 혼잡 정도에 의해서도 결정. 

[참조] 정보통신기술용어해설, http://www.ktword.co.kr/

반응형