회사에서 서버 설정 보다가 HTTP/2 켜져 있는 거 보고, 이게 1.1이랑 뭐가 다른 건지 궁금해졌어요. 최근엔 HTTP/3라는 것도 나왔다던데 버전만 올라간 거지 뭐가 그렇게 달라진 건지 잘 모르겠더라고요.
제가 아는 건 딱 이 정도예요.
HTTP/1.1 - 연결 하나에 요청 하나씩, keep-alive로 연결 재사용은 됨
HTTP/2 - 멀티플렉싱? 한 연결에 여러 요청 동시에
HTTP/3 - TCP 대신 UDP 기반(QUIC)이라던데 왜 굳이...?
궁금한 걸 몇 개로 나눠보면요.
1) HTTP/1.1에서 말하는 head-of-line blocking이라는 게 정확히 어떤 상황인가요? 요청을 순서대로 처리하다 앞에 게 막히면 뒤에 것도 다 밀린다, 이런 뜻으로 이해하면 되나요?
2) HTTP/2가 그걸 멀티플렉싱으로 해결했다는데, 그럼 HTTP/3는 또 왜 나온 건가요? 2에서 이미 해결된 거 아니었어요?
3) HTTP/3가 TCP를 버리고 UDP 위에서 돈다는 게 좀 의외였는데, 신뢰성 없는 UDP 위에 왜 굳이 얹은 건지 이유가 궁금해요.
버전 숫자 외우기보다 "왜 이렇게 바뀌었나" 흐름을 이해하고 싶어서요. 쉽게 설명해주시면 감사하겠습니다.