HTTP

HTTP 특징

keepgoing 2021. 11. 26. 00:55

HTTP 특징

클라이언트 서버 구조

  • 클라이언트와 서버가 분리(개별적으로 관리하는데 유용)

무상태 프로토콜(Stateful, Stateless)

  • Stateful(상태 유지)
    • 로그인(브라우저 쿠키와 서버 세션등을 사용해서 상태 유지), 상태 유지는 최소한만 사용
  • Stateless(무상태)
    • 무상태는 응답 서버를 쉽게 바꿀 수 있다.(무한한 서버 증설 가능)
    • 로그인이 필요 없는 페이지
    • 요청하는 데이터가 Stateful보다 상대적으로 크다.
    • 서버 개발자들이 어려워하는 업무(같은 시간에 들어오는 대용량 트래픽 처리)

비 연결성

  • 서버는 연결 유지x, 최소한의 자원 사용
  • 단점 ) TCP/IP 연결을 새로 맺어야함 - 3 way handshake 시간 추가
    • 웹브라우저로 사이트를 요청하면 많은 자원이 함께 다운로드(자바스크립트, HTMl, CSS, 이미지 등)
      • 해결) HTTP 지속 연결(Persistence Connections)로 문제 해결
      • HTTP2 HTTP3에서 최적화

HTTP 메시지

  • 요청 메시지 시작 라인

    • method + request-target + HTTP-version
    • GET, POST, PUT, DELETE 등(method)
      • 서버가 수행해야할 동작 지정(GET : 리소스 조회, POST : 요청 내역 처리)
    • 요청 대상(request-target)
      • 절대경로[?쿼리]
    • HTTP 버전
  • 응답 메시지 시작 라인

    • HTTP 버전 + HTTP 상태코드 + 상태 구절(OK와 같은..)로 이뤄짐.
  • HTTP Header

    • 필드 네임: 필드 값
    • 용도 : HTTP 전송에 관한 정보가 모두 담겨 있음
      • 메시지 바디 내용, 크기, 압축, 인증, 클라이언트 정보, 등
  • 메시지 바디

    • 실제 전송할 데이터, HTML 문서, 이미지, 영상 JSON 등 바이트로 표현 가능한 모든 데이터 전송 가능