티스토리 뷰

Web

UDP

DevES 2016.09.22 14:37

UDP 서비스


UDP는 최소의 서비스 모델을 가진 간단한 전송 프로토콜. 


UDP는 비연결형이라 두 프로세스간 통신 전에 핸드쉐이킹을 하지 않음


UDP는 비신뢰적인 데이터 전송 서비스 제공(UDP는 메시지가 수신 소켓에 도착하는 것을 보장하지 않음)


UDP는 혼잡제어 방식을 포함하지 않음. 따라서 UDP의 송신 측은 데이터를 원하는 속도로 하위 계층(네트워크 계층)으로 보낼 수 있음. 

이를 통해 일부 손실은 감수할 수 있으나 효율적이기 위해서 최소 전송 속도를 요구하기에 

실시간 애플리케이션 개발자들은 때떄로 애플리케이션이 UDP상에서 수행되는 것을 선택함. 

이로써 TCP의 혼잡제어와 패킷 오버헤드 문제를 회피가능함. 

반면 대부분의 방화벽이 UDP 트래픽을 차단하도록 설정되어 있기 떄문에 

설계자들은 점차적으로 TCP상에서 멀티미디어와 실시간 애플리케이션들이 수행되는 것을 선택하고 있다.


비연결형 트랜스포트: UDP


UDP는 다중화/역다중화 기능과 간단한 오류 검사 기능을 제외하면 IP에 아무것도 추가하지 않음

애플리케이션 개발자가 TCP대신 UDP를 선택한다면, 애플리케이션은 거의 IP와 직접 통신하는 것임.


다중화, 역다중화가 뭐지?

  • 하나의 IP로 들어온 패킷을 여러 개의 소켓 중 어느 소켓으로 전달할 것인지? => 역다중화 필요(트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업)
  • 여러 개의 소켓으로부터 들어오는 패킷을 서로 공유하는 네트워크 계층을 통해 전송 -> 다중화 필요()


UDP는 세그먼트를 송신하기 전에 송신 트랜스포트 계층 개체들과 수신 트랜스포트 계층 개체들 사이에 핸드셰이크를 사용하지 않는다는 점에주의. 이런 이유로 UDP를 비연결형 이라고 한다.


UDP 소켓: 출발지 포트번호/목적지 포트번호/기타 헤더 필드들/ 애플리케이션 데이터(메시지)


DNS는 일반적인 UDP를 사용하는 애플리케이션 계층 프로토콜의 예임


호스트에서 DNS 애플리케이션이 질의를 생성할 때, DNS 질의 메시지를 작성하고 UDP에게 메시지를 넘겨줌. 

목적지 종단 시스템 상에서 동작하는 UDP 개체와 함께, 호스트 측 UDP는 어떠한 핸드셰이크도 수행하지 않고 메시지에 헤더 필드를 추가한 후에 최종 세그먼트를 네트워크 계층에 넘겨줌. 

네트워크 계층은 UDP 세그먼트를 데이터그램으로 캡슐화하고 네임 서버에 데이터그램을 송신함. 그때, 질의 호스트에서의 DNS 애플리케이션은 질의에 대한 응답을 기다림.

만약 질의 호스트가 응답을 수신하지 못하면(아마 하의의 네트워크가 질의나 응답을 분실해서 그럴꺼임.), 질의를 다른 네임 서버에게 송신하거나 요청한 애플리케이션에게 응답을 수신할 수 없다는 것을 통보함


UDP의 특징

  • 애플리케이션 레벨이 데이터 송신에 대해 정교한 제어를 할 수 있음
    • 애플리케이션 프로세스가 데이터를 UDP에 전달하면 바로 UDP는 데이터를 UDP 세그먼트로 만들고, 즉시 그 세그먼트를 네트워크 계층으로 전달함,
    • 애플리케이션은 UDP를 사용할 수 있고, 애플리케이션의 한 부분으로서 UDP의 기본 세그먼트 전달 외에 필요한 어떤 추가 기능을 구현할 수 있음
  • 연결 설정이 없음: (TCP는 데이터 전송 시작전에 3 way handshake를 사용함)UDP는 연결을 설정하기 위한 어떤 지연도 없음. -> 이것이 DNS가 왜 TCP보다는 UDP에서 동작하는지에 대한 일반적인 이유임. (DNS가 만약 TCP에서 동작한다면 많이 느려질 것임.)(하지만 HTTP 문서로 된 웹 페이지는 신뢰성이 중요하기에 UDP보단 TCP를 씀.)
  • 연결 상태가 없음: 연결 상태를 유지하지 않으며 파리미터들중 어떠한 것도 기록하지 않음. 그래서 보통 특정 애플리케이션에 할당된 서버는 애플리케이션이 TCP보다 UDP에서 동작할 때 좀 더 많은 클라이언트를 수용 가능 함.

    • 작은 패킷 헤더 오버헤드: TCP는 세그먼트마다 20바이트의 헤더 오버헤드를 갖는 반면, UDP는 단지 8바이트의 오버헤드를 가짐.\

  • 많은 중요한 애플리케이션은 TCP보단 UDP에서 동작함. 
  • UDP는 RIP 라우팅 테이블 갱신에 사용됨.
  • UDP는 네트워크 관리 데이터를 전달하는 데 사용됨. 이런 네트워크 관리 애플리케이션은 네트워크가 혼잡한 상태에 있을 때 자주 동작해야 하므로 이러한 경우에는 UDP가 TCP보다 더 좋음.
  • 또 DNS는 TCP의 연결 설정 지연을 피하기 위해서 UDP에서 동작함.


UDP  세그먼트 구조


애플리케이션 데이터는 UDP 데이터그램의 데이터 필드에 위치함. 예를 들어, DNS에 대한 데이터 필드는 질의 메시지나 응답 메시지 필드에 위치함. 


UDP 헤더는 2바이트씩 구성된 네 개의 필드를 가짐. 포트 번호는 목적지 호스트가 목적지 종단 시스템에서 동작하는(역다중화 기능을 수행하는) 정확한 프로세스에게 애플리케이션 데이터를 넘기게 해줌. 


체크섬은 세그먼트에 오류가 발생했는지를 검사하기 위해 수신 호스트에 의해서 사용됨.



댓글
댓글쓰기 폼
공지사항
Total
84,441
Today
4
Yesterday
174
«   2018/12   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함