테코톡 - HTTP/1.1, HTTP/2, 그리고 QUIC
HTTP는 어플리케이션 레이어다.
데이터 전송 과정에 데이터가 유실되면 다시 데이터 요청을 하는 등 신뢰성 구축에 신경을 많이 씀
받는 것에 신경쓰지 않고 데이터를 보냄
요청이 매우 심플하다. 메소드도 get 밖에 없었다.
헤더가 생겼다. 상태코드, content-type이라는 것도 생겼다.
커넥션 하나당, 요청 하나, 응답 하나만 처리해줄 수 있다.
첫번째 요청을 받고 첫번째 요청을 처리하는데 시간이 오래 걸리면 두 번째, 세번째도 기다려야하는 단점이 생긴다.
헤더의 중복이 많아서 쓸데 없이 데이터의 크기가 커진다.
메시지를 header와 data로 분할한다. 그것을 바이너리로 인코딩해서 파싱이나 전송 속도가 올라간다.
스트림이라는 데이터 양방향 흐름안에, 프레임 조각 조각들이 합쳐져서 요청이나 메시지가 된다.
요청과 응답이 다중화, 즉 multiplexing이 가능해진다. 프레임으로 쪼개졌기 때문에 메시지간의 순서라는 것이 사라졌다. 도착한 순서대로 조립이 된다.
우선순위에 가중치를 줄 수 있다.
클라이언트가 요청하지 않은 것도 서버측에서 보내줄 수 있는 것이다. 서버 생각에 분명ㅇ히 곧 이것도 요청할 것 같으면 미리 보재누늑 ㅓㅅ이다.
static dynamic table을 이용해서 중복된 것은 뽑는 것이다.
head의 크기가 85%정도 준다.
tcp에서는 스트림이 처리가 되고있는데 도중에 하나가 손실이되면 나머지가 대기를 해야하는 것이다.
이미 HTTP/3이 나온 상태이다.