← 질문 목록
#368깊이 0
HTTP/2는 단일 연결에서 여러 요청을 어떻게 동시에 처리하는가?
네트워크
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
메시지를 프레임이라는 작은 단위로 나누고 스트림 ID를 부여하여 섞어서 전송하기 때문이다.
| 기준 | HTTP/1.1 | HTTP/2 |
|---|---|---|
| 전송 방식 | 요청마다 순차 전송 | 프레임 단위 교차 전송 |
| 병목 원인 | 응답 지연으로 뒤 요청 대기 | TCP 수준의 패킷 손실 |
HTTP/1.1은 앞선 요청의 응답이 밀리면 뒤의 요청도 대기한다. 이를 HTTP head-of-line blocking이라 부른다. HTTP/2는 메시지를 프레임으로 쪼개어 이 문제를 피한다. 각 프레임은 고유한 스트림 ID를 가진다.
서버와 클라이언트는 프레임이 뒤섞여 와도 ID로 원래 메시지를 합친다. 연결을 하나만 유지하므로 소켓 자원을 아낀다. 네트워크가 혼잡할 때 발생하는 연결 생성 지연도 줄어든다.
다만 패킷이 누락되면 TCP 수준에서 재전송을 기다려야 한다. 이 때문에 모든 스트림이 일시적으로 멈추는 한계가 있다.