[네트워크] 비연결형 트랜스포트 : UDP

참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음

비연결형 트랜스포트(UDP)

  • UDP는 다중화와 역다중화 기능, 그리고 오류검사기능을 제외하고는 IP(인터넷 프로토콜, 네트워크 계층의 프로토콜)과 크게 다르지 않다.
  • UDP는 연결을 시도하는두 프로세스 사이에 핸드쉐이크를 사용하지 않기 때문에 비연결형 트랜스포트라고 불린다.
  • UDP는 데이터 무결성을 보장하지도 않고, 데이터가 순서대로 수신되는 것도 보장하지 않는다.
  • UDP의 간단한 오류검사 기능 역시도 IPv4에서는 잘 사용하지 않고 IPv6에서 의무적으로 사용하고 있다.
  • 그래도 UDP는 연결하는 시간이 걸리지 않기 때문에 속도가 빠르다는 장점때문에 실시간 미디어를 사용하는 어플리케이션에서는 여전히 많이 사용되고 있다.
  • 또 UDP는 한번에 많은 호스트가 함께 연결될 수 있는 point-2-point connection이다.
  • 대표적으로 UDP를 사용하는 서비스들은 다음과 같다.

    • RIP(Routing Information Protocol) : 30초마다 자신의 라우팅 정보를 인접한 라우터에 계속 전달하는 서비스를 위해 UDP를 사용한다.
    • DNS : DNS의 많은 query & response 를 수행하기 위햐서는 연결 설정 시간을 요구하지 않는 UDP가 적합하다. DNS 에서 사용하는 query 와 response 는 그 크기가 작기 때문에 더더욱 UDP를 사용하는 것이 유리하다. 만약 패킷 손실이 발생한다고 하더라도 그냥 다시 보내주는것이 더 빠를 수 있기 떄문이다.
    • SNMP(Simple Network Management Protocol) : 네트워크에 이상이 있을 때 그 정보를 받아오는 프로토콜인데, 이 역시도 UDP가 가지는 overhead 가 더 작기 때문에 UDP를 사용한다.

UDP 세그먼트 구조

UDP-segement-structure

  • UDP 세그먼트는 8바이트의 헤더와 데이터로 구성된다.
  • 8바이트의 헤더는 출발지 포트번호, 목적지 포트번호, 헤더와 데이터의 총 길이, 체크섬 필드를 가지고 각 2바이트씩 할당받는다.
  • 이 헤더들 중에서 체크섬 필드는 세그먼트의 헤더, 데이터, 그리고 Pseudo-header 의 값들의 합으로 이루어진 16비트 이진수이다.

    • Pseudo-header 는 실제로 데이터 전송에는 사용되지 않지만 오류를 검사하는 체크섬을 계산하기 위해서만 사용된다.
    • Pseudo-header 에는 출발지 ip주소, 목적지 ip주소, UDP 프로토콜 번호(17), UDP의 총 길이를 포함한다.
    • 체크섬은 계산은 세그먼트의 헤더, 데이터, 수도헤더를 모두 더한 뒤에 1의 보수를 취해 만들어진다.
    • 이렇게 만들어진 체크섬은 세그먼트에 담겨 목적지로 전달되고, 목적지는 체크섬과 모든 데이터들의 덧셈 결과의 합이 모두 1이 되는지 확인하고 만약 각 비트에 0이 하나라도 있다면 오류로 판단한다.

Written by@전여훈 (Click Me!)
고민이 담긴 코드를 만들자, 고민하기 위해 공부하자.