HTTPS vs HTTP

하다보니 내일·2023년 5월 2일
0

코딩 인터뷰 대비

목록 보기
1/1

Http vs Https

아마 코딩면접에서 꽤 자주나오는 문제인걸로 알고 있는데
자세한 설명은 다른 분들 글을 참조하면 잘 설명되니 간단히만 정리
http가 application layer에서 작동하는 프로토콜이며, 비연결성, stateless 하다는건 익히 들어 잘 알거라고 생각해.
여기서 문제가 http1.1에 관한 내용인데 1.1은 쉽게 말하면 우리가 흔히 생각하는 1request = 1 response가 지켜지는 방식이야
따라서 한번 연결에 한번의 요청을 처리하는 http에서 무수히 많은 요청이 발생한다면 시간이 지연되고 동시전송은 꿈도 못꾸지
대표적인 문제들은 참조
HOL(Head Of Line) Blocking이 발생할 수 있다.
HOL 블로킹이란 네트워크에서 같은 큐에 있는 패킷이 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 말한다.
RTT(Round Trip Time) 증가
Connection 하나에 요청 한 개를 처리하는 특성때문에 매번 요청 별로 Connection을 만들게 되고 TCP상에서 동작하는 HTTP의 특성상 3-way handshake가 반복적으로 일어나며, 불필요한 RTT 증가와 네트워크 지연을 초래하여 성능을 지연시킨다.

Http2의 등장

이걸 해결하기 위해 도메인 샤딩이니 뭐니 별의 별 수단이 나왔지만 근본적인 해결책이 되진 않았어. 그리고 결국 http2라는 새로운 프로토콜을 개발하게 됐지.
이녀석이 참 물건인게 Multiplexed Streams라는 기술을 사용해 이 기술은 한번 클라이언트와 서버가 connect되면 stream을 구현하여 여러개의 요청을 한번에 보낼 수 있어 또한 비동기처리처럼 먼저 완료되는 순서대로 응답을 주지.
두번째 기능은 server push야 이건 "소매넣기"에 비유할 수 있어. 쉽게말해 너가 요청하기전에 미리 주는거지 이 방법을 통하면 당연하게도 클라이언트가 요청하는 횟수가 줄어들겠지?
세번째 기능은 Header Compression로 비슷한 요청이 반복된다면 굳이 헤더를 일일이 보낼게 아니라 중복되는 부분은 해시테이블을 통해 거르고 중복되지 않은 부분만을 요청으로 보낼 수 있어. 당연하게도 전체적인 요청의 크기가 줄어들겠지

profile
BackEnd, Android, Cloud, Network 등 다양한 분야에서 공부중 입니다.

0개의 댓글