skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

Http / Http1.1 / Http2 #153

Open skarltjr opened 1 year ago

skarltjr commented 1 year ago

http 1.1

http1.1에선 keep alive 헤더를 통해 일정시간동안 커넥션을 유지함으로써 앞선 문제를 개선한다.

- 파이프라이닝

기존 http는 요청 후 응답을 받은 후 다음 데이터를 다시 전달한다. 그리고 응답을 받기전까진 대기해야하는데 이것이 지연 시간을 만든다.

따라서 http1.1는 응답에 상관없이 요청을 계속 보내고 이를 서버에서 요청이 들어온 순서대로 응답을 보내준다. 하지만 치명적인 문제가 바로 HOL( head of line ) blocking문제인데. 즉 맨 첫번째 요청이 처리가 안되면 밀려오는 뒤에 들어온 요청들이 먼저 처리가 되어도 결국 순서대로 응답을 보내기위해 맨 첫번째 요청 응답을 보낼때까지 기다려야한다.


### http2
- 바이너리 프레임과 Multiplexed Streams

기존 http는 text를 전달한다. 그러나 http2에선 "컴퓨터가 읽기 쉬운" 바이너리 형태의 프레임으로 데이터를 주고받아 파싱, 전송 속도가 향상된다.

그리고 이때 여러개의 요청을 순서 상관없이 stream으로 전달받아 처리함으로써 먼저 처리가 끝난 요청은 먼저 응답한다. 그래서 http1.1의 파이프라이닝의 문제였던 HOL을 해결할 수 있었다.