HTTP의 기본

1 분 소요

1. HTTP의 기본


1. 모든 것이 HTTP

  1. HTTP 메시지에 모든 것을 전송
    • HTML, TEXT
    • IMAGE, 음성, 영상, 파일
    • JSON, XML (API)
    • 거의 모든 형태의 데이터 전송 가능

      TCP로 직접 연결은 거의 없음(게임서버)

  2. 기반 프로토콜
    • TCP: HTTP/1.1, HTTP/2
    • UDP: HTTP/3
    • 현재 HTTP/1.1 주로 사용
  3. HTTP 특징
    • 클라이언트 서버 구조
    • 무상태 프로토콜(스테이스리스), 비연결성
    • HTTP 메시지로 통신
    • 단순하고 확장 가능

2. 클라이언트 서버 구조

  • Request Response 구조
  • 클라이언트, 서버를 분리

    독립적으로 발전 가능


3. Stateful, Stateless

  1. Stateful
    • 서버가 클라이언트의 이전 상태를 유지
  2. Stateless
    • 서버 확장성 높음(Scale Out)
    • 응답 서버를 쉽게 바꿀 수 있다
    • 클라이언트가 추가 데이터 전송

      최대한 Stateless로 하고 로그인 등 어쩔 수 없는 상황만 Stateful

    ※ 같은 시간에 딱 맞추어 발생하는 대용량 트래픽(선착순 이벤트, 콘서트 예약, 학과수업)

4. 비연결성

  1. 장점
    • HTTP는 기본적으로 연결을 유지하지않음
    • 실제 서버에서 동시에 처리하는 요청은 작음 (모든 클라이언트가 동시에 요청을 하지않음)
    • 서버 자원을 효율적으로 사용 가능
  2. 단점
    • TCP/IP 연결을 새로 맺어야함 - 3way handshake 시간 추가
    • 사이트 요청시 자바스크립트, css, 이미지 등 많은 자원이 다운로드(비효율적)
    • 지속연결 (Persistent Connection)

      1개가 아닌 여러개의 메시지 전달과정을 거친 후에 연결을 끊음


5. HTTP 메시지

HTTP

  1. Start-line(request-line / status-line)
    • request-line(요청 메시지)
      1. HTTP 메서드 : GET(리소스 조회), POST(요청 내역 처리), PUT(), DELETE(삭제)

      2. 요청 대상
        • absolute-path?query
        • 절대경로 = “/”로 시작하는 경로

          request-line = method SP(공백) request taget(path) HTTP-version CRLF

      3. HTTP 버전
    • status-line(응답 메시지)
      1. HTTP 버전
      2. HTTP 상태 코드 : 성공 실패
        • 200 : 성공
        • 400 : 클라이언트 요청 오류
        • 500 : 서버 내부 오류
      3. 이유 문구: 글로 코드 설명
  2. HTTP header
    • header-field = field-name “:” OWS field-value OWS (OWS 띄어쓰기 허용)
    • field-name은 대소문자 구분 없음

      HTTP전송에 필요한 부가정보(압축, 메시지 바디 내용, 캐시관리, 요청정보)

    • 표준 헤더가 너무 많음(임의 헤드 추가 가능)
  3. HTTP message body
    • HTTP 메시지에 모든 것을 전송
    • 실제 전송할 데이터(이미지, 영상 글)

카테고리:

업데이트:

댓글남기기