HTTP2.0의 출현

반응형
728x90
반응형

HTTP/2.0

HTTP/2.0은 서버와 클라이언트 사이의 TCP 커넥션 위에서 동작한다. 이때 TCP 커넥션을 초기화하는 것은 클라이언트이다. HTTP/2.0 요청과 응답은 길이가 정의된(최대 16383바이트) 한 개 이상의 프레임에 담긴다. 프레임들에 담긴 요청과 응답은 스트림을 통해 보내지는데, 한 개의 스트림이 한 쌍의 요청과 응답을 처리한다. 하나의 커넥션 위에 여러개의 스트림이 동시에 만들어질 수 있으므로 여러 개의 요청과 응답을 동시에 처리하는 것이 가능하다. 또한 스트림에 대한 흐름 제어와 우선순위 부여 기능도 제공한다. 서버는 클라이언트에게 필요하다고 생각하는 리소스라면 그에 대한 요청을 명시적으로 받지 않더라도 능동적으로 클라이언트에게 보내줄 수 있다.

 

 

 

스트림

스트림은 HTTP/2.0 커넥션을 통해 클라이언트와 서버 사이에서 교환되는 프레임들의 독립된 양방향 시퀀스이다. 한 쌍의 HTTP 요청과 응답은 하나의 스트림을 통해 이루어진다. 클라이언트는 새 스트림을 만들어 HTTP 요청을 보내고, 이 요청을 받은 서버가 그 요청과 같은 스트림으로 응답을 보내고나면 스트림이 닫히게된다.

 

HTTP/1.1에서는 한 TCP 커넥션을 통해 요청을 보냈을때 그에 대한 응답이 도착하고 나서야 같은 TCP 커넥션으로 요청을 보낼 수 있었다. 그러나 HTTP/2.0에서는 하나의 커넥션에 여러 개의 스트림이 동시에 열릴 수 있게되어 여러개의 요청이 동시에 보내질 수 있게 되었다.

 

스트림은 우선순위를 가질 수 있다. 모든 스트림은 고유한 식별자를 갖는다. 커넥션에서 한번 사용한 스트림 식별자는 다시 사용할 수 없다.

 

 

 

헤더 압축

HTTP/1.1에서 헤더는 아무런 압축 없이 그대로 전송되었다. 과거에는 웹 페이지 1개를 방문했을 때의 요청이 지금처럼 많지 않았지만 무수히 많은 요청을 보내는 요즈음에는 헤더의 크기가 회전 지연과 대역폭 양쪽 모두에 영향을 끼치게 되었다. 이를 위해서 HTTP/2.0에서는 HTTP 메시지의 헤더를 압축하여 전송한다. 헤더 압축 방법으로 압축된 뒤 ‘헤더 블록 조각’들로 쪼개져서 전송된다. 받는 쪽에서는 이 조각들을 이은뒤 압축을 풀어 원래의 헤더 집합으로 복원한다.

 

 

 

서버 푸시

HTTP/2.0은 서버가 하나의 요청에 대해 응답으로 여러 개의 리소스를 보낼 수 있도록 해준다. 이 기능은 서버가 클라이언트에서 어떤 리소스를 요구할 것인지 미리 알 수 있는 상황에서 유용하다. HTML 문서를 요청받은 서버가 그 HTML 문서가 링크하고 있는 이미지, CSS 파일 등의 리소스를 클라이언트에게 푸시할 수 있다. 이는 클라이언트가 HTML 문서를 파싱해서 필요한 리소스를 다시 요청하여 발생하게 되는 트래픽과 회전 지연을 줄여준다.

 

반응형

'Coding > HTTP' 카테고리의 다른 글

쿠키의 모든것  (0) 2019.06.22
웹 캐시에 대해 알아보기  (0) 2019.06.22
TCP 커넥션 관리  (0) 2019.06.22
HTTP 기초개념 알아보기  (0) 2019.06.22
HTTP 메시지  (0) 2019.06.22

Designed by JB FACTORY