본문 바로가기
Network/HTTP

HTTP 2 - HTTP의 특징

by 슬픈 야옹이 2024. 7. 14.

 

목차

  • 소개
  • http 역사
  • http 특징

 

 

소개

HTTP (HyperText Transfer Protocol)

- HTML 등의 하이퍼텍스트를 전송하기 위한 응용 계층 프로토콜

- 이미지, 음성 파일, json, xml, 단순 바이트코드 등 거의 모든 형태의 데이터를 주고받을 수 있음

- 이러한 특성으로 인해 현재 가장 널리 쓰이는 프로토콜 중 하나임. 

- 서버 간 통신에도 주로 http를 사용함.

 

 

HTTP 역사

  • HTTP/0.9: GET 메서드만 지원, HTTP 헤더 없었음.
  • HTTP/1.0: 메서드 및 헤더 추가
  • HTTP/1.1: 1997년 발표, 현재 가장 널리 쓰임.
  • HTTP/2: 2015년, 성능 개선
  • HTTP/3.0
    • 기존 TCP에서 UDP 기반으로 스펙이 바뀜
    • 전송 속도를 높이고 최적화 등의 추가 로직을 응용 계층에서 커스터마이징할 수 있다는 특징이 있음.

 

 

HTTP 특징

  • 클라이언트 - 서버 구조
  • 무상태 프로토콜 (Stateless)
  • 비연결성

 

클라이언트 - 서버 구조

HTTP는 클라이언트와 서버 간 요청과 응답을 주고 받는 구조임.

 

클라이언트는 서버에 요청을 보내고, 응답을 대기함.

서버는 요청에 대한 결과를 만들어 응답함.

 

클라이언트 - 서버 구조 (출처 - 모든 개발자를 위한 HTTP, 김영한)

 

 

 

무상태 프로토콜 (Stateless)

서버는 클라이언트의 이전 상태를 기억하지 않음.

 

ex)

  • 1번째 통신
    • 클라이언트: A 상품 정보 요청
    • 서버: A 상품 정보 응답
  • 2번째 통신
    • 클라이언트: 빨간색으로 주문
    • 서버: 무슨 빨간색? 갑자기?

=> 서버는 클라이언트가 이전에 A 상품 정보를 요청했다는 정보를 기억하지 않음. (무상태)

 

 

ex 2)

  • 1번째 통신
    • 클라이언트: A 상품 정보 요청
    • 서버: A 상품 정보 응답
  • 2번째 통신
    • 클라이언트: A 상품의 빨간색 옵션으로 주문
    • 서버: A 상품 빨간색 옵션 주문 확인

 

 

무상태 프로토콜의 장단점, 한계

  • 장점
    • 서버 확장성이 높음 (Scale out)
    • 접속자가 많으면 그냥 요청을 처리하는 서버 장치만 늘리면 됨.
    • 서버 간 공유할 정보가 크게 줄어 서버를 늘리는 것이 쉬움.
  • 단점
    • 클라이언트가 보내는 데이터의 양이 늘어남.
    • ex) 주문하려면 상품 A, 빨간색 옵션 등의 정보를 한번에 다 넘겨줘야 함.
  • 한계
    • 모든 것을 무상태로 설계할 수는 없음. (인증 정보 등)
    • 필요한 경우 쿠키, 세션 등을 활용해 상태를 유지.

 

 

 

비연결성 (Connectionless)

서버와 클라이언트가 요청과 응답을 한 번 주고받은 다음에 연결을 유지하지 않음.

 

  • 장점
    • 서버 자원을 매우 효율적으로 사용할 수 있음.
      • 수천명이 동시에 접속하더라도 실제 서버에서 동시에 처리하는 요청은 수십개 수준
    • 빠른 응답 속도 (일반적으로 초 단위 이하)
  • 한계와 극복
    • 다시 연결을 맺을 때마다 3 way handshake 시간이 추가됨
    • 지금은 http 지속 연결 (Persistance Connections)로 문제 해결
      • http 지속 연결: html, javascript, 이미지 등 받는데 시간이 걸리는 요소들은 다운받는 동안 연결을 끊지 않음.
    • http/2, htt3에서 최적화

 

 

정리

http

  • HypterText Transfer Protocol의 약자
  • 거의 모든 형태의 데이터를 송수신 가능함
  • 현재 가장 널리 쓰이는 프로토콜 중 하나

 

http의 역사

  • http/1.1
    • 1997년 발표
    • 현재 쓰이는 http의 전체적인 구조가 처음 제시된 버전. 가장 널리 쓰임.
  • http/3.0
    • 기존 TCP 기반에서 UDP 기반으로 변화
    • 빠른 전송속도 및 응용계층에서의 별도 로직(최적화 등) 추가가 가능해짐

 

http의 특징

  • 클라이언트 - 서버 구조
    • 클라이언트 요청, 서버 응답
  • 무상태(Stateless)
    • 서버가 클라이언트의 이전 상태를 기억하지 않음
  • 비연결성(Connectionless)
    • 한번 요청과 응답을 주고받으면 연결을 끊음

 

'Network > HTTP' 카테고리의 다른 글

HTTP 1 - URI와 URL  (0) 2024.07.14