TIL-220103_3

EBinY·2022년 1월 3일
0

TIL - Today I Learned

목록 보기
36/54

인터넷 프로토콜

HTTP

  • HTTP/1.1, HTTP/2는 TCP 기반, HTTP/3은 UDP 기반 프로토콜
  • HTTP의 특징
    • 클라이언트 서버 구조
    • 무상태성 프로토콜(Stateless)
      • 서버가 클라이언트의 상태를 보존하지 않음
      • 서버의 확장성 높음(스케일 아웃), 클라이언트가 추가 데이터를 전송해야 함
      • 예를 들면, 고객(클라이언트)과 점원(서버)의 관계를 살펴보면
      • 점원이 상태를 저장하지 않으면, 고객이 상태를 계속 전달해주어야 하는 단점
      • 하지만 고객의 증가로 점원을 추가적으로 투입해야 할 때에도 문제가 발생하지 않음



    • 상태 유지 vs 무상태성
      • 상태 유지는 클라이언트A의 요청은 항상 같은 서버인 서버 1이 응답해야 한다
      • 서버 1에 장애가 생긴다면, 서버 2로 이동해 처음부터 다시 요청해야 한다
      • 무상태성이라면 아무 서버나 호출하여 요청을 이어나가면 된다
      • 또한 응답 서버를 쉽게 바꿀수 있으므로 수평 확장으로 서버를 무한히 증설할 수 있다
      • 하지만 모든 것을 무상태성으로 설계할 수는 없으므로 실무적 한계에 부딪힌다
      • 로그인이 필요한 서비스라면, 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 유저의 상태를 유지해야 함
    • 비연결성(Connectionless)
      • TCP/IP의 경우 기본적으로 연결을 유지, 서버의 자원이 계속 소모됨
      • HTTP는 실제 요청을 주고받을 때만 연결을 유지하고, 응답을 주고 나면 TCP/IP 연결을 끊음, 최소한의 자원으로 서버 유지를 가능하게 함
      • 트래픽이 많지 않고, 빠른 응답을 제공할 수 있는 경우에 효율적으로 작동함
      • 그러나 트래픽이 많고, 큰 규모의 서비스에는 한계가 명확함
      • TCP/IP 연결을 새로 맺어야 함(즉, 3way handshake 시간이 추가됨)
      • 웹 브라우저로 사이트를 요청하면, HTML, JS, CSS, 추가 이미지 등 수 많은 자원이 함께 다운로드 되야 함
      • 최근에는 HTTP 지속 연결(Persistent Connections)로 문제를 해결
      • HTTP/2, HTTP/3에서 더 많은 최적화가 이루어짐

    • HTTP 메세지
    • 단순함, 확장 가능

0개의 댓글