Programming

HTTP는 UDP를 사용합니까?

procodes 2020. 8. 27. 22:19
반응형

HTTP는 UDP를 사용합니까?


이것은 어리석은 질문 일 수 있습니다.

  • HTTP는 사용자 데이터 그램 프로토콜을 사용합니까?

예를 들면 :

HTTP를 사용하여 MP3 또는 비디오를 스트리밍하는 경우 내부적으로 전송에 UDP를 사용합니까?


일반적으로 아닙니다.

스트리밍은 HTTP 자체에서 거의 사용되지 않으며 HTTP는 UDP에서 거의 실행되지 않습니다. 그러나 RTP를 참조하십시오 .

예를 들어 (주석에서) 리소스에 대한 프로토콜을 표시하지 않습니다. 그 프로토콜이 HTTP라면 액세스를 "스트리밍"이라고 부르지 않을 것입니다. 어떤 의미에서 네트워크를 통해 (아마도 큰) 리소스를 직렬로 전송하기 때문 일지라도. 일반적으로 리소스는 재생되기 전에 로컬 디스크에 저장되므로 네트워크 전송은 일반적으로 "스트리밍"을 의미하는 것이 아닙니다.

댓글 작성자가 지적했듯이 실제로 HTTP를 통해 스트리밍 할 수 있으며 일부는이를 수행합니다.


에서 RFC 2616 :

HTTP 통신은 일반적으로 TCP / IP 연결을 통해 이루어집니다. 기본 포트는 TCP 80이지만 다른 포트를 사용할 수 있습니다. 이것은 인터넷이나 다른 네트워크에서 HTTP가 다른 프로토콜 위에 구현되는 것을 배제하지 않습니다. HTTP는 신뢰할 수있는 전송만을 가정합니다. 이러한 보증을 제공하는 모든 프로토콜을 사용할 수 있습니다. HTTP / 1.1 요청 및 응답 구조를 해당 프로토콜의 전송 데이터 단위에 매핑하는 것은이 사양의 범위를 벗어납니다.

따라서 명시 적으로 명시하지는 않지만 UDP는 "신뢰할 수있는 전송"이 아니기 때문에 사용되지 않습니다.

편집 -최근에는 QUIC 프로토콜 (보다 엄격하게 의사 전송 또는 세션 계층 프로토콜)은 HTTP / 2.0 트래픽을 전송하는 데 UDP를 사용하며 Google 트래픽의 대부분은 이미이 프로토콜을 사용합니다. 그러나 아직 RFC로 게시되지 않았습니다.


약간의 퀴즈 일 수도 있지만 UPnP는 장치 검색을 위해 UDP를 통해 HTTP 형식 메시지를 사용합니다.


예, 애플리케이션 프로토콜 인 HTTP는 UDP 전송 프로토콜을 통해 전송할 수 있습니다. 다음은 HTTP 데이터를 전송하고 최종 사용자에게 스트리밍하기 위해 UDP 및 기본 프로토콜을 사용하는 몇 가지 서비스입니다.

  • XMPP의 Jingle Raw UDP 전송 방법
  • UDT를 사용하는 서비스의 번호 --- UDP 프로토콜의 상위 집합 인 UDP 기반 데이터 전송 프로토콜입니다.
  • HTTP를 캡슐화하는 TLS (Transport Layer Security) 프로토콜과 위에서 언급 한 XMPP 및 기타 응용 프로그램 프로토콜에는 전송 계층에서 UDP를 사용하는 구현이 있습니다. 이 구현을 DTLS (Datagram Transport Layer Security)라고합니다.
  • GNUTella의 푸시 알림은 UDP 전송을 통해 전송되는 HTTP 요청입니다.

이 기사에는 UDP를 통한 스트리밍과 신뢰할 수있는 상위 집합 인 RUDP : RUDP (Reliable UDP) : 차세대 빅 스트리밍 프로토콜?


물론, 반드시 TCP를 통해 전송 될 필요는 없습니다. 저는 위성 TV 방송 산업에서 사용하기 위해 UDP 위에 HTTP를 구현했습니다.


QUIC 로이 주제에 대한 약간의 변경

QUIC (Quick UDP Internet Connections, quick 발음)는 Google에서 개발하고 2013 년에 구현 한 실험적인 전송 계층 네트워크 프로토콜입니다. QUIC는 UDP (User Datagram Protocol)를 통해 두 엔드 포인트 간의 다중 연결 집합을 지원하며 보안 보호를 제공하도록 설계되었습니다. TLS / SSL과 동일하며 연결 ​​및 전송 대기 시간 감소, 혼잡을 방지하기위한 각 방향의 대역폭 추정. QUIC의 주요 목표는 현재 TCP를 사용하는 연결 지향 웹 애플리케이션을 최적화하는 것입니다.


HTTP를 통하지 않을 수도있는 mp3 또는 비디오를 스트리밍하는 경우 실제로 그랬다면 놀라 울 것입니다. 아마도 TCP를 통한 또 다른 프로토콜 일 수 있지만 UDP를 통해 스트리밍 할 수없는 이유가 없습니다.

데이터가 다른 쪽 끝에 도착할 것이라는 확신이 없다는 점을 고려해야하지만 UDP에 대해 알고있는 것으로 받아 들일 수 있습니다.

아니오, HTTP는 UDP를 사용하지 않습니다. 그러나 당신이 말하는 것에 대해, mp3 / 비디오 스트리밍은 UDP를 통해 발생할 수 있으며 제 생각에는 HTTP를 통해 발생해서는 안됩니다.


이론 상으로는 http에 UDP를 사용할 수 있지만 문제가 될 수 있습니다. 예를 들어 귀하의 예에서 mp3 또는 비디오가 스트리밍되고 있으며 주문 문제가 있으며 UDP가 연결 지향적이지 않고 재전송 메커니즘이 없기 때문에 일부 비트가 누락 될 수 있습니다.


대답 :

이유 : OSI 모델을 참조하십시오.

설명 :

HTTP는 UDP를 사용하는 프로토콜로 캡슐화 될 수있는 애플리케이션 계층 프로토콜로, TCP보다 더 빠르고 안정적인 통신을 제공합니다. 서버 데몬과 클라이언트는 분명히이 새로운 프로토콜을 지원해야합니다. Quake 2 프로토콜은 UDP가 TCP를 통해 흐름 제어를 보장하는 구조적 통신 시스템 (예 : 청크 ID)의 기반을 제공 할 수 있음을 증명합니다.


node-httpp를 사용하여 UDP를 통해 HTTP를 실행 해보십시오.

https://github.com/InstantWebP2P/node-httpp


일부 답변에 중요한 점이 누락 된 것 같습니다. UDP와 TCP 사이의 선택 은 데이터 유형 (예 : 오디오 또는 비디오) 또는 전송이 완료되기 전에 애플리케이션이 재생을 시작하는지 ( "스트리밍") 여부를 기반으로 해서는 안되며 실시간 인지 여부를 기반으로해야 합니다. 실시간 데이터는 (정의상) 지연에 민감하므로 종종 RTP / UDP (Real Time Protocol over UDP)를 통해 전송하는 것이 가장 좋습니다.

지연은 오디오 및 / 또는 비디오라도 파일에서 저장된 데이터에 문제가되지 않으므로 패킷 손실을 수정할 수 있도록 TCP를 통해 전송하는 것이 가장 좋습니다. 송신자는 미리 읽을 수 있고 네트워크 파이프를 가득 채울 수 있으며 수신자는 많은 재생 버퍼링을 사용할 수 있으므로 가끔 TCP 재전송이나 일시적인 네트워크 속도 저하로 인해 중단되지 않습니다. 제한적인 경우는 재생이 시작되기 전에 전체 녹음이 전송되는 경우입니다. 이것은 재생 지연의 위험을 제거하지만 종종 비실용적입니다.

실시간 데이터에 대한 TCP의 문제는 TCP가 지연 시간에 관계없이 가능한 한 효율적으로 파이프를 사용하려고하는만큼 과도한 버퍼링만큼 재전송이 아닙니다. UDP는 애플리케이션 패킷 경계를 유지하고 내부 저장소가 없으므로 대기 시간이 발생하지 않습니다.


http over udp is used by some torrent tracker implementations (and supporteb by all main clients)


(This is an old question, but it deserves an updated answer.)

In all likelihood, HTTP/3 will be using the QUIC protocol, which is described as

multiplexed transport over UDP

So, from a certain point of view, you could say that HTTP/3 will be using UDP.


UDP is the best protocol for streaming, because it doesn't make demands for missing packages like TCP. And if it doesn't make demands, the flow is far more faster and without any buffering.

Even the stream delay is lesser than TCP. That is because TCP (as a far more secure protocol) makes demands for missing packages, overwriting the existing ones.

So TCP is a protocol too advanced to be used for streaming.

참고URL : https://stackoverflow.com/questions/323351/does-http-use-udp

반응형