https://bangbaeking.tistory.com/95
[HTTP] HTTP 통신 과정
HTTP란? HTTP(Hyper Text Transfer Protocol) HTML 문서를 주고 받는데 쓰이는 통신프로토콜(통신규약)이며, TCP 와 UDP 를 사용하여 통신하며 80번 포트를 사용한다 HTTP의 통신 과정 URL 입력후 해당 URL을 바탕으
bangbaeking.tistory.com
최근에 HTTP 통신 과정 정리를 했는데 HTTP 프로토콜에서 UDP를 사용한다는데 내가 정리한 내용에는 UDP에 관련된 내용이 없어서 좀더 찾아보게 되었다.
실시간 스트리밍
일단 내가 생각헀던 내용은 실시간 스트리밍의 경우 빠른 속도가 필요하고 실시간 방송을 진행할때 간혹 패킷손실이 일어나서 화질이 깨지는 경우가 있기 때문에 실시간 스트리밍 플랫폼들이 어떤 HTTP 프로토콜을 사용하는지 찾아봤다.
HLS(HTTP Live Streaming)
HTTP 라이브 스트리밍(HTTP Live Streaming, HLS)은 애플이 개발하여 2009년 출시한 HTTP 기반 적응 비트레이트 스트리밍 통신 프로토콜이다.
HLS는 비디오 파일을 다운로드할 수 있는 HTTP 파일 조각으로 나누고 HTTP 프로토콜을 이용하여 전송한다.
클라이언트 장치는 이러한 HTTP 파일을 로드한 후 비디오로 재생한다.
그렇다면 HLS는 TCP와 UDP중 무엇을 사용할까?
HLS는 HTTP 기반 통신 프로토콜이기 때문에 마찬가지로 TCP를 사용한다.
실시간 라이브 방송이라서 UDP를 사용할줄 알았지만 실시간 라이브 방송의 경우 꼭 실시간일 필요가 없기 때문에 상관이 없다고 한다. (딜레이가 어느정도 있어도 상관없다)
ZOOM같은 실시간 회의는 UDP를 사용한다고 한다.
HTTP/3의 경우 UDP 기반의 QUIC를 사용하는것을 찾게되었고 HTTP 버전에 대해 정리를 하게 되었다.
HTTP 0.9 (1991)
- HTTP 초기 버전을 구분하기 위해 부르는 버전이다.
- HTTP 헤더가 없고, HTML파일만 전송이 가능했다.
- 요청은 단일 라인으로 구성되며, 리소스에 대한 메서드는 GET만 존재했다.
- 응답은 매우 단순하다.
HTTP 1.0 (1996)
- HTTP 헤더가 추가되었다.
- 버전 정보, 요청 메서드, 상태코드 등 다양한 추가 정보가 전송되기 시작했다.
- Content Type 도입으로 HTML 뿐만 아니라 다른 문서도 전송이 가능해지기 시작했다.
- 커넥션 하나당 요청 하나와 응답 하나 처리 (매번 새로운 연결을 함) ⭢ 비효율적이다.
HTTP 1.1 (1977)
- 커넥션을 유지해서 커넥션 하나당 요청 하나와 응답 하나만 처리하는것을 개선했다.
- 하나의 커넥션에 여러개의 요청과 응답이 들어갈 수 있다.
HTTP 2.0 (2015)
- 기존 HTTP 1.X 버전의 성능 향상에 초점을 맞춘 프로토콜이다. (1.1 버전의 대체가 아닌 확장)
- 1.0의 text 형식 전달에서 요청, 응답 메시지는 프레임 단위로 나누어지고 바이너리 형식으로 변경했다. ⭢ 파싱, 전송 속도 향상
- HOL Blocking 문제 개선 (요청과 응답의 다중화)
- 한 커넥션으로 동시에 여러개의 메시지를 주고 받고, 응답은 순서에 상관없이 stream으로 주고 받게 되었다.
HTTP 3.0
- Google에서 개발한 UDP 기반의 전송 프로토콜 QUIC을 사용한다. (Quick UDP Internet Connections)
- 기존 HTTP는 TCP기반 통신이였지만 3.0은 UDP 기반 통신이다.
- TCP의 경우 3-way handshake를 통해 통신을 시작하는데 해당 과정(통신을 준비하는 과정)이 오래걸려서 이를 개선하기 위해 UDP 기반으로 설계했다.
기존 HTTP에서 TCP+TLS를 사용하면 준비과정이 매우 길어지는데 QUIC기반의 3.0을 사용하면 이를 많이 개선할 수 있다. (TLS: Transport Layer Security로 보안 프로토콜)
Reference
- https://velog.io/@sweet_sumin/HTTP-%EB%B2%84%EC%A0%84%EB%B3%84-%EC%B0%A8%EC%9D%B4-1.0-1.1-2.0-3
- https://velog.io/@neity16/HTTP-HTTP-%EB%B2%84%EC%A0%84-%EB%B3%84-%ED%8A%B9%EC%A7%95
'기타 > HTTP' 카테고리의 다른 글
CS스터디 - 4주차 Network (0) | 2024.08.15 |
---|---|
REST API (0) | 2024.01.29 |
Web Server 와 WAS (0) | 2024.01.17 |
[HTTP] HTTP 통신 과정 (0) | 2024.01.16 |
[HTTP] POST, PUT, PATCH 차이점 (0) | 2023.11.01 |
댓글