이 포스팅은 Medium의 Anuradha Wickramarachchi의 HTTP 3 is Out and About!글을 번역한 글입니다.
HTTP가 뭘까?
HTTP는 Hypertext Transfer Protocol의 약자이다. 웹 서버에서 브라우저까지 웹 페이지 데이터들을 전송하기 위해 정한 규칙들이라고 할 수 있다. HTTPS는 간단히 말해서 더 나은 보안을 위해 동일한 프로토콜이 암호화 계층을 통해 사용된다는 것을 의미한다.
![]() |
---|
HTTP and its layers (TCP/IP Stack). Source: Mozilla Dev |
OSI(Open Systems Interconnections) Interconnections of Internetworking/Communications 사양을 잘 알고 있는 사람들에게 HTTP는 애플리케이션 계층 프로토콜이다. 즉, 기반 하드웨어 구조나 미디어와는 아무런 관련이 없다는 것이다. 덕분에 대역폭 증가 등으로 HTTP 사양을 개선하고 업그레이드할 수 있다.
![]() |
---|
Fetching a web page. Source: Mozilla Dev |
"HTTP는 클라이언트-서버 프로토콜이다. 요청은 한 개체, 즉 사용자-에이전트(또는 대리인이 대신)에 의해 전송된다. user-agent가 웹 브라우저인 경우가 대부분이지만, 무엇이든 될 수 있다. 예를 들어 웹에서 검색 엔진 인덱스를 추출하고 유지하는 로봇이 될 수도 있다." - 모질라에서 인용됨
모질라에서 정의한 클라이언트는 사용자 에이전트이다. 이는 브라우저, 프로그램 혹은 HTTP 프로토콜을 사용해 서버를 호출하는 모든 것이 해당된다. 웹 서버는 요청받은 내용을 전송 또는 서빙한다. 프록시는 웹 서버와 사용자 에이전트 간의 통신을 조정한다.
프록시의 기능은 다음과 같다.
- 캐싱
- 필터링(성인 콘텐츠 보호 또는 지역에 따른 콘텐츠 차단)
- 로드 밸런싱(빈 서버로 직접 요청)
- 인증(사용자가 다른 서버와 통신할 수 있도록 허용)
- 로깅(HTTP 로깅은 이상 행위 탐지 등에 사용)
HTTP 1 또는 (1.1)에서는 위의 작업이 순차적으로 수행된다. 그러나 2009년에 새로운 프로토콜 HTTP 2가 올라오기 시작했다.
HTTP2
HTTP 2는 HTTP 1이 네트워킹 기술과 대역폭 발전에 발맞춰서 여러가지 제안 사항을 해결하기 위해 등장했다.
- 멀티플렉싱 수행 필요: 동일한 TCP 연결을 통해 리소스를 동시에 요청하고 로드할 수 있도록 지원한다.
- 브라우저가 웹 페이지를 더 빠르게 인식하고 로드하기 위해 먼저 가져올 콘텐츠의 우선 순위를 지정할 수 있도록 허용한다.
- 웹 브라우저가 리소스를 요청하기 전에 서버가 리소스를 푸시할 수 있도록 하는 '서버 푸시'. HTML 콘텐츠를 가져오기 위한 왕복 통신 과정을 짧게 줄여준다.
- HTTP 헤더를 경량화했다.
- HTTP2는 더 빠르고 안전한 웹 경험을 제공한다(HTTP2에서는 암호화가 시행됨).Akamai 클라우드 공급자에서 제공하는 데모를 통해 속도를 비교해볼 수 있다.
새로운 멤버 HTTP3
이 프로토콜은 아직 완전히 퍼져있진 않지만, Youtube는 크롬 브라우저에서 HTTP 3를 사용하고 있는 것을 주목해볼만 하다. 어떻게 아냐고? HTTP 프로토콜을 확인하기 위한 플러그인(HTTP/2 and SPDY indecator)을 사용했다.
그래서 새로운게 뭐야?
새로운 규격은 더 빠르고 개선되고 안전한 웹 경험을 약속한다. 어떻게?
HTTP 3는 TCP 핸드쉐이크(3-way handshake, hi, hi again, ok you got my hi, alike)을 간소화하려고 한다. 결론만 말하면 QUIC 프로토콜이라는 새로운 방법을 사용해 빠르게 통신한다. 강화된 연결 체계는 와이파이 연결과 모바일 네트워크 등에서 일어나는 연결 마이그레이션을 개선한다. 같은 네트워크 망에 존재하는 라우터끼리의 연결 마이그레이션이 아니라는 점이 중요하다. 훨씬 복잡하고 정교하다.
마지막으로 이 프로토콜은 TCP의 저속 시작을 제거해서 즉시 고속 통신을 가능하게 한다. 속도가 10Mbps에서 1.5Gbps로 증가가 바록 가능한 진짜 5G 시작을 알리는 신호탄이다! 스타디아(구글에서 개발 중인 클라우드 게이밍 서비스)같은 서비스를 실현시키기 위해 정말 중요한 요소이다.
유튜브가 초고속으로 버퍼일없이 창업부터 HD를 재생할 수 있었던 비결이기도 하다. 하지만 이걸 인용하지 말아달라. 완벽한 스펙은 올해 말쯤에 나올지도 모른다. HTTP3에 관한 이 기사를 재밌게 읽었길 바란다. 기술 용어나 세부 사항을 자세히 설명하지는 않았지만, 미래 인터넷이 어떻게 변해갈지 소개하고 싶었다. 화이팅!
추가로 참고하면 좋은 글
'📒 Tech Note > 웹 프로그래밍' 카테고리의 다른 글
[JS] 메시지 큐와 이벤트 루프 (Message Queue and Event Loop) (0) | 2022.08.25 |
---|---|
[JS] 변수와 함수 정의 (0) | 2022.06.24 |
[JS] 참고자료 모음 (0) | 2020.08.13 |
[JS] 정규식 패턴 [xyz]과 정규식 메소드 match (0) | 2020.08.12 |
OAuth 2.0 이해하기 (0) | 2020.08.03 |