[혼공네] 5-2. HTTP

목록으로 돌아가기

HTTP의 특성

응용 계층에서 정보를 주고받는 데 사용되는 프로토콜.

요청-응답 기반 프로토콜

‘클라이언트-서버 구조 기반의 요청-응답 프로토콜’

미디어 독립적 프로토콜

‘HTTP가 요청하는 대상을 자원이라고 한다. HTTP는 자원의 특성을 제한하지 않으며, 단지 자원과 상호 작용하는 데 사용할 수 있는 인터페이스를 정의한다. 대부분의 자원은 URI로 식별된다.’

→ 자원의 특성과 무관하게 수단의 역할을 수행한다. 해당 자원의 종류를 미디어 타입이라고 부르며, MIME 타입이라고도 부른다.

미디어 타입은 타입(데이터의 유형)과 서브타입(주어진 타입에 대한 세부 유형)으로 구성된다. → type/subtype

스테이트리스 프로토콜

상태를 유지하지 않는 스테이트리스 프로토콜. 요청을 보낸 클라이언트와 관련된 상태를 기억하지 않는다. 그러므로, 클라이언트의 요청은 기본적으로 독립적인 요청으로 간주한다.

서버는 수백만 개의 메시지를 동시에 처리할 상황이 있기 때문에, 클라이언트 상태 정보를 기억하는 것은 서버에게 큰 부담이 된다. 또한 서버는 여러 대로 구성될 수 있기 때문에, 상태 정보를 공유하는 것은 매우 번거롭고 복잡하다.

HTTP의 주요 설계 목표는 확장성과 견고성이다.

지속 연결 프로토콜

초기 HTTP는 TCP 연결을 사용하였는데, 이 방식은 비지속 연결이다. 하지만 최근은 지속 연결 기술을 제공한다. 킵 얼라이브라고 부르기도 한다. 하나의 TCP 연결 상에서 여러 개의 요청-응답을 주고받을 수 있는 기술이다.

HTTP 메시지 구조

  • 시작 라인 : HTTP 메시지가 요청 메시지인 경우 시작 라인은 ‘요청 라인’이, 응답 메시지인 경우 ‘상태 라인’이 된다.
    • 요청 라인은 메서드, 요청 대상, HTTP버전으로 구성되어있다.
    • 메서드 : 클라이언트가 서버의 자원에 대해 수행할 작업의 종류. GET, POST, 등이 있다.
    • 요청 대상 : HTTP 요청을 보낼 서버의 자원. URI의 경로가 명시. 쿼리 등이 포함된다.
    • HTTP 버전 : 사용된 HTTP 버전.
    • 상태 라인은 HTTP 버전, 상태 코드, 이유 구문으로 구성되어있다.
    • 상태 코드 : 요청에 대한 결과를 나타내는 세 자리 정수.
    • 이유 구문 : 상태 코드에 대한 문자열 형태의 설명.
  • 필드 라인 (헤더 라인)
    • HTTP 헤더 콜론(:)을 기준으로 헤더 이름과 헤더 값으로 구성. HTTP 요청 및 응답 메시지에 대한 본문이 필요한 경우 메시지 본문이 명시된다.

HTTP 메서드

  • GET - 정보를 가져다 주세요
  • HEAD - 헤더만 가져다 주세요
  • POST - 처리해 주세요
  • PUT - 덮어써 주세요
  • PATCH - 일부 수정해 주세요
  • DELETE - 삭제해 주세요
  • CONNECT
  • OPTIONS
  • TRACE

HTTP 상태 코드

  • 100번대 - 정보성 상태 코드
  • 200번대 - 성공 상태 코드
    • 200 - OK
    • 201 - Created
    • 202 - Accepted
    • 204 - No Content
  • 300번대 - 리다이렉션 상태 코드 영구적 리다이렉션은 자원의 위치가 영구적으로 변경. 일시적은 그렇지 않음.
    • 301 - Moved Permanetly. 영구적 리다이렉션으로, 재요청 메서드 변경될 수 있음.
    • 308 - Permanent Redirect. 영구적 리다이렉션으로, 재요청 메서드 변경되지 않음.
    • 302 - Found. 일시적 리다이렉션으로 재요청 메서드 변경될 수 있음
    • 303 - See Other. 일시적 리다이렉션으로 재요청 메서드 GET으로 변경
    • 307 - Temporary Pedirect. 일시적 리다이렉션으로 재요청 메서드 변경되지 않음
  • 400번대 - 클라이언트 에러 상태 코드 401과 403의 차이는 인증 여부와 권한 부여 여부다. 자신이 누구인가와 인증된 주체에게 작업을 허용하는가 에 대한 차이다.
    • 400 - Bad Request
    • 401 - Unauthorized
    • 403 - Forbidden
    • 404 - Not Found
    • 405 - Method Not Allowed
  • 500번대 - 서버 에러 상태 코드
    • 500 - Internal Server Error
    • 502 - Bad Gateway
    • 503 - Service Unavailable

문제 1. HTTP 상태 코드는 100번대부터 500번대 까지 있다. 400번과 401번, 403번, 404번에 대해서 이야기 해주시오. 500번 애러도 이야기해주시오.

→ 400번 : bad request로 클라이언트의 요청이 잘못되었음. 401번 : 유효한 인증이 없음 403번 : 인증된 주체에게 허용된 작업이 없음. 서버로부터 요청이 거부됨 404번 : 요청 받은 자원을 찾을 수 없음 500번 : 요청을 처리할 수 없음 401 vs 403번 → 인증 여부와 권한 부여 여부 차이다. 400번대는 클라이언트의 잘못, 500번은 서버의 잘못이다.

author-profile
Written by 상 한규

댓글