TCP
HTTP : 서버와 클라이언트 사이에 이루어지는 요청(request)/응답(response)이다
CRUD원칙에 의해 RESTful로 통신하는 프로토콜이다
HTTP Method : GET, PUT, DELETE, POST, HEAD
HTTP status code : 200(ok), 302(redirect), 404(Not found)
Data Format : XML->JSON
HTTP1.0 : 하나의 연결당 하나의 요청
-> 하지만, TCP는 3-way handshake를 해야한다
-> RTT의 증가
-> 그러면 매번 TCP연결 하지 말고 한 번 TCP 초기화하면 keep-alive로 여러 개의 파일을 송수신하자
->HTTP1.1
HTTP1.1 : 매번 TCP연결 안하고 keep-alive로 여러 파일을 송수신
하지만, HTTP1.1도 문제가 있다
같은 큐에 있는 패킷이 첫 번째 패킷에 의해 지연될 때 성능 저하된다 그림
HTTP1.1의 헤더에는 많은 메타정보들을 저장한다
매 요청마다 중복된 Header값을 전송하게 된다
(서버에서 Header작성해서 보내는 것도 다 돈이다)
우선 순위가 낮은 아이템을 띄우지고 못한다(우선 순위가 높은 아이템의 지연때문에)
-> 사용자는 오래 걸리는 페이지 로딩을 기다리지 않고 그냥 페이지 꺼버린다(광고 못띄움 ㅠㅠ)
HTTP2 용어 정리
모든 통신은 단일 TCP연결
각 스트림에는 고유식별자와 우선순위 정보있음
각 메세지는 하나의 논리적 메세지이고 하나 이상의 프레임으로 구성
프레임은 HTTP2에서 통신의 최소단위
돈을 벌기 위해서!
QUIC기반의 프로토콜
QUIC : UDP기반, UDP(신뢰성 보장x)???
TCP는 현대사회에 어울리지 않는다!(Slow start, Multiplicative decrease based congestion control & 패킷이 하나 없어지면 목적지 찾는 동안에 연결이 중단된다(HOL Blocking), 여담으로 패킷 손실률이 2%이상이면 HTTP1이 오히려 나을 정도, 하지만 요즘 TCP는 패킷손실률이 거의 없긴 하다) -> 애초에 전쟁에 쓰려고 만든 프로토콜이다...
QUIC 프로토콜은 새로운 연결을 설정하는데 필요한 시간을 줄인다(1-RTT 또는 0-RTT) 0-RTT의그림