2023-05-23 화요일

·2023년 5월 23일
0

Today I Learned

목록 보기
113/114
post-thumbnail

📅 오늘 한 일


1. 면접 준비

2. HTTP 변천사 공부

✏️ 무엇을 배웠나


1. HTTP의 변천사

HTTP

정의
  • HTTP는 애플리케이션 계층에서 사용되는 통신 프로토콜
HTTP 1.0
  • 한 번 연결하면 한 번만 요청할 수 있어서 요청할 때마다 매번 연결해야 함.
  • 단점 : 위 이유로 RTT 증가
  • 단점을 보완하기 위해 고완된 방법
    - 이미지 스플리팅 : 여러 스티커가 담긴 종이처럼 한 이미지에 여러 이미지를 넣어놓고 분리해서 사용하는 방법. 서버 부담 최소화.
    - 코드 압축 : 개행 문자나 빈칸을 없애서 코드의 크기를 최소화.
    - Base64 인코딩 : 이미지를 64진법 문자열로 인코딩해서 서버에 이미지 요청을 할 필요가 없게끔 하는 것.
HTTP 1.1
  • 해결하고자 한 것 : HTTP 1.0의 비효율성 (요청할 때마다 연결해야 하는)
  • 해결 방법 : keep-alive 옵션을 표준화해 한 번 TCP handshake를 했으면 또 하지 않아도 파일을 주고받을 수 있도록 함.
  • 단점 : 다수의 리소스를 처리하려다 보니 응답 대기 시간이 길어짐
    - HOL Blocking : 같은 큐에 있는 한 패킷이 지연되면 대기하느라 나머지 패킷도 지연되는 것을 말함
    - 무거운 헤더 구조 : 메타데이터가 많고 압축도 안 되어 있었음
HTTP 2.0
  • 해결하고자 한 것 : HTTP 1.1의 비효율성
  • 해결 방법
    - 멀티플렉싱 : 하나의 연결 안에서 스트림이라는 단위를 통해 덩어리가 아닌 작은 스트림들의 집합으로 나눠서 데이터를 주고받는 방법. 이런 구조 덕분에 병렬 처리가 가능해져 HOL Blocking을 해결함.
    - 하프만 코딩 압축 알고리즘 사용 : 문자열에서 많이 나온 문자에 적은 비트를 할당하고 적게 나온 문자에 많은 비트를 할당해서 필요한 비트양을 최적화했음. 무거웠던 헤더 문제 해결.
    - 서버 푸시 : 클라이언트가 요청하지 않아도 서버가 데이터를 줄 수 있는 기능을 말함. 클라이언트 측 요청을 줄일 수 있었음.
HTTP 3.0
  • 해결하자고 한 것 : HTTP 2.0의 비효율성
  • 해결 방법
    - UDP / QUIC 사용 : TCP 기반의 HTTP 2.0는 3-way handshake 때문에 초기 지연 시간이 있었음. QUIC 계층에서 돌아가는 HTTP 3.0은 3-way handshake를 하지 않아도 됨. 첫 연결에서 1-RTT만 소요됨.

네이버에서 여러 아이콘들을 이미지 스플리팅으로 관리하고 있는 걸로 알고 있는데 아직 사용되고 있는 방법이라 흥미로웠다. 기술 공부를 할 때 기능 자체를 파악하기 이전에 어떤 문제를 해결하고자 고안되었는지 이해하는 게 중요하다는 생각이 듦.

profile
⛰ 프론트엔드 개발 공부 블로그

0개의 댓글