익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
UDP 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
UDP
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[Transport Layer]] ==개요== '''UDP'''(User Datagram Protocol)는 transport layer에서 작동하는 프로토콜로, application layer와 network layer간의 데이터를 전달을 담당한다. 동일 계층에서 사용하는 또 다른 프로토콜로는 [[TCP]]가 있다. ==UDP의 특징== UDP는 Transport Layer가 수행해야 하는 기능 중 가장 최소한만을 수행한다. 즉, UDP는 [[Transport Layer#Multiplexing/demultiplexing|multiplexing/demultiplexing]] 와 간단한 오류 검사만을 제공할 뿐, TCP가 제공하는 다양한 서비스들, reliable data transfer를 제공하지 않는다. 이는 UDP가 segment를 전송하기 전, 송수신 transport layer간의 handshaking을 거치지 않는 connectionless 프로토콜이기 때문이다. 사실, 애플리케이션 개발자가 TCP 대신 UDP를 선택한다면, 해당 애플리케이션은 거의 직접 IP와 대화하게 되는 셈이다. UDP는 애플리케이션 프로세스로부터 message를 받아, multiplexing/demultiplexing 서비스를 위한 송수신 port 번호 필드와 다른 두 개의 필드를 헤더 파일로 붙이고, 그 segment를 network layer를 넘긴다. Network layer는 이 segment를 IP datagram에 캡슐화하고, 그 segment를 수신 호스트에 '''best-effort'''으로 전달하려 한다. Segment가 수신 호스트에 도착하면, UDP는 목적지 port 번호를 사용해 해당 데이터를 올바른 애플리케이션 프로세스에 전달한다. 하지만 UDP만 써도 신뢰성있는 전송이 가능하며, 이는 애플리케이션에서 구현된다. 또한 UDP는 TCP와는 달리 congestion control<ref>traffic congestion이 전송 속도를 줄이는 메커니즘</ref>을 지원하지 않는다. 이는 전체 네트워크에 대해서는 부하를 거는 등의 문제를 일으키는 요소이기도 하지만, UDP에 한정하여보면 TCP의 congestion control로 인한 혜택을 직접적으로 볼 수 있는 부분이기도 하다. ==UCP가 사용되는 곳== TCP는 신뢰성 있는 데이터 전송(reliable data transfer)을 제공하는데, UDP는 그렇지 않다. 그럼에도 여전히 UDP가 사용되는 이유는 다음과 같다: * TCP는 혼잡 제어와 신뢰성 보장을 위해 데이터를 전송하기 전 handshaking을 하고, 이외에도 전송을 늦추거나 재전송을 한다. ** 이는 실시간 오디오/비디오 스트리밍, 온라인 게임, VoIP등 전송 속도 보장, 낮은 지연이 더욱 중요하다.<br>즉 이러한 앱들은 약간의 손실 허용은 허용되므로 재전송이나 지연이 최소화되는 UDP가 사용된다. ** DNS는 빠른 질의-응답이 중요하기 때문에 UDP를 사용한다. * TCP는 수신/송신 버퍼, congestion control parameter, 데이터의 순서 등의 state들을 저장하지만, UDP는 이를 저장하지 않는다.<br> 이를 통해 서버가더 많은 클라이언트를 처리할 수 있다. * 또한 UDP는 TCP에 비해 segment의 헤더 파일이 더 작고 빠르다. ==UDP segment structure== [[파일:UDP segment format.png|섬네일|229x229px]] UDP 세그먼트는 크게 두 부분으로 나뉘어 있다: * 헤더 (Header): 8바이트 * 데이터 (Payload): 애플리케이션이 전달하는 실제 데이터 또한 UDP의 헤더는 아래 표와 같이 구성된다. {| class="wikitable" |+ !필드 이름 !크기(byte) !설명 |- |Source Port # |2바이트 (16비트) |송신 측 포트 번호 – 응답 받을 때 사용됨 |- |Destination Port # |2바이트 (16비트) |수신 측 포트 번호 – 목적 애플리케이션 식별용 |- |Length |2바이트 (16비트) |헤더 + 데이터 전체 길이(byte) |- |Checksum |2바이트 (16비트) |오류 검사용 필드 (데이터 손상 여부 확인) |} ==각주== [[분류:컴퓨터 네트워크]]
UDP
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록