"UDP"의 두 판 사이의 차이
(새 문서: '''UDP'''(유디피)는 "User Datagram Protocol"의 약자로서, 인터넷을 통해 데이터를 보낼 수 있는 표준 통신 프로토콜이다. TCP가 1:1 연...) |
|||
1번째 줄: | 1번째 줄: | ||
− | '''UDP'''(유디피)는 "User Datagram Protocol"의 약자로서, [[인터넷]]을 통해 [[데이터]]를 보낼 수 있는 표준 통신 [[프로토콜]]이다. | + | '''UDP'''(유디피)는 "User Datagram Protocol"의 약자로서, [[인터넷]]을 통해 [[데이터]]를 보낼 수 있는 표준 통신 [[프로토콜]]이다. 한국어로 번역하면, 사용자 데이터그램 프로토콜이다. TCP가 [[전화]]와 비슷하다면, UDP는 일방적으로 보내는 [[소포]]와 비슷하다. |
+ | |||
+ | == 개요 == | ||
+ | TCP/IP 프로토콜 중 전송 계층의 통신 프로토콜의 하나이다. 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되었다. 신뢰성이 낮은 프로토콜로, 완전성을 보장하지 않지만, 가상회선을 굳이 확립할 필요가 없고, 유연하며, 효율적인 응용의 데이터 전송에 적합하다. TCP는 데이터 신뢰성을 보장하기 위한 방식으로, 누락된 데이터를 모두 받기 위한 메커니즘으로 정의되어있다. 하지만 실시간 스트리밍 서비스에서는 걸림돌이 된다. 전체 영상에서 데이터 하나를 받지 못한걸로 인해 버퍼링으로 재생이 중단되고, 혼잡 제어를 위해 보내는 양도 조절하기 때문에 영상 데이터의 퀄리티에 문제가 생긴다. 이 문제를 해결하기 위해 UDP를 사용한다.<ref name="사">hidaehyunlee, 〈[https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4 TCP와 UDP 차이를 자세히 알아보자]〉, 《velog》, 2020-05-07 </ref><ref name="용"> 〈[https://seolhun.github.io/contents/network-ip-udp-tcp%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80 (Network) IP, UDP, TCP란 무엇인가?]〉, 《깃허브》, 2018-06-02 </ref> | ||
+ | |||
+ | == 특징 == | ||
+ | 수신 측에 제대로 도착했는지 확인 여부가 보장되지 않아 비신뢰성 서비스이고, 논리적인 가상회선 연결이 필요하지 않다. 빠른 요청과 응답이 필요한 실시간 응용에 적합하고, 전송속도에 제한이 없다. TCP처럼 16비트의 포트 번호를 사용하지만, 헤더는 고정크기의 8 바이트만 사용하여 단순하다. 즉, 헤더 처리에 많은 시간과 노력을 요구하지 않는다.<ref> 〈[http://www.ktword.co.kr/abbr_view.php?m_temp1=323 UDP User Datagram Protocol]〉, 《정보통신기술용어해설》 </ref><ref> 〈[https://byeong9935.tistory.com/43 TCP, UDP]〉, 《티스토리》, 2016-11-06 </ref> 소켓 대신 IP를 기반으로 데이터를 전송하고, 1대1, 1대N, N대M 등으로 연결될 수 있다. 데이터그램 단위로 전송되며, 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.<ref name="자">망나니개발자, 〈[https://mangkyu.tistory.com/15 (TCP/UDP) TCP와 UDP의 특징과 차이]〉, 《티스토리》, 2017-11-05 </ref> | ||
+ | |||
+ | === 비연결성 === | ||
+ | UDP에 의해 보내진 각 사용자의 데이터그램은 서로 독립적이다. 동일한 발신지 프로그램으로부터 동일한 목적지 프로그램으로 전송되어도 서로 다른 데이터그램 사이에는 연관 관계가 없다. 사용자 데이터그램에는 번호가 붙지않고, 연결 설정과 연결 종료 과정이 없다.<ref name="데">조이스 St.Joyce.Dev, 〈[https://joycecoder.tistory.com/20 (프로토콜) UDP Header / UDP 동작]〉, 《티스토리》, 2018-10-30 </ref> 또한, 서버 소켓과 클라이언스 소켓의 구분이 없다. | ||
+ | |||
+ | === 흐름제어와 오류제어 === | ||
+ | UDP는 흐름제어도 없고, 윈도 메커니즘도 없기 때문에, 수신 측에서 들어오는 메시지로 인해 오버플로우가 발생할 수 있다. 또한, UDP에는 검사합을 제외하고 오류 제어 메커니즘이 없다. 즉, 메시지가 중복되거나 없어지면 송신자 측에서는 알 수 없다는 의미다. 수신자가 체크섬(Checksum)을 사용하여 오류가 있음을 발견할 경우, 사용자 데이터그램은 폐기된다.<ref name="데"></ref> | ||
+ | |||
+ | === 캡슐화와 역 캡슐화 === | ||
+ | UDP를 통해 프로세스가 보낼 메시지가 있을 경우, 메시지와 한 쌍의 소켓 주소, 데이터의 길이를 보낸다. UDP는 데이터를 받은 후, 헤더를 추가하고, 소켓 주소들과 사용자 데이터그램을 IP로 보낸다. IP는 자신의 헤더를 추가하는데, 이 헤더에서 프로토콜 필드(Protocol Field)의 값을 17로 설정하여 데이터가 UDP로부터 왔음을 알린다. 이후 데이터 링크 계층과 물리 계층을 거쳐 원격 시스템으로 보낸다. 이 과정을 캡슐화(Encapsulation)라고 한다. 메시지가 목적지 호스트에 도착하면, 물리 계층과 데이터 링크 계층은 헤더와 트레일러들을 없앤 후, 데이터를 IP로 보낸다. IP 소프트웨어는 IP 단계의 검사를 수행하고, 오류가 없을 경우, 헤더를 없앤다. 그 후 송신자와 수신자의 IP 주소와 함께 사용자 데이터그램을 UDP로 보낸다. UDP는 검사합을 사용하여 사용자 데이터그램 전체를 검사하고, 오류가 없을 경우, 헤더를 없애고, 송신자 소켓 주소와 함께 응용 데이터를 프로세스에 전달한다. 수신된 메시지에 대해 응답을 보낼 필요가 있을 경우, 송신자 소켓 주소를 프로세스에 전달한다. 이 과정을 역 캡슐화라고 한다.<ref name="데"></ref> | ||
+ | |||
+ | == 프로토콜 헤더 구조 == | ||
+ | |||
+ | == TCP == | ||
+ | === 비교 === | ||
+ | |||
+ | {{각주}} | ||
+ | |||
+ | == 참고자료 == | ||
+ | |||
== 같이 보기 == | == 같이 보기 == |
2021년 2월 4일 (목) 17:57 판
UDP(유디피)는 "User Datagram Protocol"의 약자로서, 인터넷을 통해 데이터를 보낼 수 있는 표준 통신 프로토콜이다. 한국어로 번역하면, 사용자 데이터그램 프로토콜이다. TCP가 전화와 비슷하다면, UDP는 일방적으로 보내는 소포와 비슷하다.
개요
TCP/IP 프로토콜 중 전송 계층의 통신 프로토콜의 하나이다. 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되었다. 신뢰성이 낮은 프로토콜로, 완전성을 보장하지 않지만, 가상회선을 굳이 확립할 필요가 없고, 유연하며, 효율적인 응용의 데이터 전송에 적합하다. TCP는 데이터 신뢰성을 보장하기 위한 방식으로, 누락된 데이터를 모두 받기 위한 메커니즘으로 정의되어있다. 하지만 실시간 스트리밍 서비스에서는 걸림돌이 된다. 전체 영상에서 데이터 하나를 받지 못한걸로 인해 버퍼링으로 재생이 중단되고, 혼잡 제어를 위해 보내는 양도 조절하기 때문에 영상 데이터의 퀄리티에 문제가 생긴다. 이 문제를 해결하기 위해 UDP를 사용한다.[1][2]
특징
수신 측에 제대로 도착했는지 확인 여부가 보장되지 않아 비신뢰성 서비스이고, 논리적인 가상회선 연결이 필요하지 않다. 빠른 요청과 응답이 필요한 실시간 응용에 적합하고, 전송속도에 제한이 없다. TCP처럼 16비트의 포트 번호를 사용하지만, 헤더는 고정크기의 8 바이트만 사용하여 단순하다. 즉, 헤더 처리에 많은 시간과 노력을 요구하지 않는다.[3][4] 소켓 대신 IP를 기반으로 데이터를 전송하고, 1대1, 1대N, N대M 등으로 연결될 수 있다. 데이터그램 단위로 전송되며, 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.[5]
비연결성
UDP에 의해 보내진 각 사용자의 데이터그램은 서로 독립적이다. 동일한 발신지 프로그램으로부터 동일한 목적지 프로그램으로 전송되어도 서로 다른 데이터그램 사이에는 연관 관계가 없다. 사용자 데이터그램에는 번호가 붙지않고, 연결 설정과 연결 종료 과정이 없다.[6] 또한, 서버 소켓과 클라이언스 소켓의 구분이 없다.
흐름제어와 오류제어
UDP는 흐름제어도 없고, 윈도 메커니즘도 없기 때문에, 수신 측에서 들어오는 메시지로 인해 오버플로우가 발생할 수 있다. 또한, UDP에는 검사합을 제외하고 오류 제어 메커니즘이 없다. 즉, 메시지가 중복되거나 없어지면 송신자 측에서는 알 수 없다는 의미다. 수신자가 체크섬(Checksum)을 사용하여 오류가 있음을 발견할 경우, 사용자 데이터그램은 폐기된다.[6]
캡슐화와 역 캡슐화
UDP를 통해 프로세스가 보낼 메시지가 있을 경우, 메시지와 한 쌍의 소켓 주소, 데이터의 길이를 보낸다. UDP는 데이터를 받은 후, 헤더를 추가하고, 소켓 주소들과 사용자 데이터그램을 IP로 보낸다. IP는 자신의 헤더를 추가하는데, 이 헤더에서 프로토콜 필드(Protocol Field)의 값을 17로 설정하여 데이터가 UDP로부터 왔음을 알린다. 이후 데이터 링크 계층과 물리 계층을 거쳐 원격 시스템으로 보낸다. 이 과정을 캡슐화(Encapsulation)라고 한다. 메시지가 목적지 호스트에 도착하면, 물리 계층과 데이터 링크 계층은 헤더와 트레일러들을 없앤 후, 데이터를 IP로 보낸다. IP 소프트웨어는 IP 단계의 검사를 수행하고, 오류가 없을 경우, 헤더를 없앤다. 그 후 송신자와 수신자의 IP 주소와 함께 사용자 데이터그램을 UDP로 보낸다. UDP는 검사합을 사용하여 사용자 데이터그램 전체를 검사하고, 오류가 없을 경우, 헤더를 없애고, 송신자 소켓 주소와 함께 응용 데이터를 프로세스에 전달한다. 수신된 메시지에 대해 응답을 보낼 필요가 있을 경우, 송신자 소켓 주소를 프로세스에 전달한다. 이 과정을 역 캡슐화라고 한다.[6]
프로토콜 헤더 구조
TCP
비교
각주
- ↑ hidaehyunlee, 〈TCP와 UDP 차이를 자세히 알아보자〉, 《velog》, 2020-05-07
- ↑ 〈(Network) IP, UDP, TCP란 무엇인가?〉, 《깃허브》, 2018-06-02
- ↑ 〈UDP User Datagram Protocol〉, 《정보통신기술용어해설》
- ↑ 〈TCP, UDP〉, 《티스토리》, 2016-11-06
- ↑ 망나니개발자, 〈(TCP/UDP) TCP와 UDP의 특징과 차이〉, 《티스토리》, 2017-11-05
- ↑ 6.0 6.1 6.2 조이스 St.Joyce.Dev, 〈(프로토콜) UDP Header / UDP 동작〉, 《티스토리》, 2018-10-30
참고자료
같이 보기