공부/Web

[웹] HTTP 기초 용어 정리

d02 2023. 5. 14. 02:19

HTTP 프로토콜 기초 개념, 용어를 전체적으로 정리해보았다.

HTTP 기초 개념

  • HTTP는 HTML 문서를 전송받기 위해 만들어진 응용 프로그램 계층(L7)의 통신 프로토콜이다.
    image

(이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview)

  • 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다.
  • ASCII로 인코딩된 텍스트 정보이다.
    • TCP, IP 프로토콜에서는 단위 데이터가 16진수로 이루어졌던 것과 달리 HTTP는 사람이 읽고 쉽게 이해할 수 있다.
    • HTTP 프로토콜 초기 버전과 HTTP/1.1에서는 클라이언트와 서버 사이의 연결을 통해 공개적으로 전달되었지만, HTTP/2에서는 최적화와 성능 향상을 위해 HTTP 프레임 별로 캡슐화하여 보낸다고 한다.

image

HTTP 메시지

HTTP 메시지 타입으로는 요청(request)과 응답(response)이 있다.

  • HTTP 메시지의 start line과 header를 묶어서 요청 헤드(head)라고 부르고, payload를 body이라고 부른다.

(아래 내용은 HTTP/1.x 메시지 기준 설명이다.)

요청 메시지의 구성

  • Method: HTTP 메서드
  • Path: 리소스의 URL.
    • 프로토콜(http://), 도메인, TCP 포트 등 문맥상 명백한 요소들을 생략한 리소스의 URL을 표시한다.
  • Version of the protocol: HTTP 프로토콜의 버전
  • Headers: 서버에 대한 추가 정보를 전달하는 헤더들을 선택적으로 포함한다.
  • Body: POST 처럼 응답과 비슷한 몇몇 메서드들은 전송된 리소스를 바디에 포함한다.

image

응답 메시지의 구성

  • Version of the protocol: HTTP 프로토콜의 버전
  • Status code: 요청이 성공했는지 여부와 그 이유를 나타내는 상태 코드
  • Status message: 상태 코드에 대한 간단한 설명
  • Headers: 요청 메시지의 헤더와 같음
  • Body: 가져오는 리소스를 담은 바디(본문). 선택적으로 존재함.

image

HTTP header

  • 헤더의 기본 구조: 대소문자 구분 없는 문자열 : 내용 형식으로 한 줄로 구성된다. (내용 부분에 오는 값은 헤더마다 다르다.)
  • 다양한 종류의 요청 헤더가 있다.
    • General 헤더: Via
    • Entity 헤더 : Content-Length와 같이 요청 본문에 적용되는 헤더 (요청 본문이 없을 경우 전송되지 않음)
    • Request 헤더: Accept-Type, Accept-Language, Referer ..
    • Response 헤더: Vary, Accept-Ranges

요청 헤더 예시

image

응답 헤더 예시

image

HTTP body

모든 요청/응답에 본문이 들어가지는 않는다.

GET, HEAD, DELETE , OPTIONS 처럼 리소스를 가져오는 요청은 보통 본문이 필요가 없다.

HTML 폼 데이터를 포함하는 POST 요청일 경우 본문을 포함한다.

  • 본문의 종류는 넓게 보면 아래와 같이 분류할 수 있다.
    • 단일-리소스 본문(single-resource bodies)
      • 헤더 두 개(Content-TypeContent-Length)로 정의된 단일 파일로 구성됨
    • 다중-리소스 본문(multiple-resource bodies)
      • 멀티파트 본문으로 구성되는 다중 리소스 본문에서는 파트마다 다른 정보를 지니게 됨
  • 각 문서와 함께 올바른 MIME 타입을 전송하도록 정확히 설정하는 것이 중요함 (MIME 타입만이 문서 타입 정보를 전달하는 유일한 방법은 아니지만, 웹에서는 가장 적절)

주요 응답코드

  • 200 OK
    • 요청이 정상적으로 처리됨
  • 201 CREATE
    • 요청에 대한 새로운 자원을 생성하는 데 성공함
  • 301 Moved permanently
  • 302 Found
  • 400 Bad request
    • HTTP 규약에 맞지 않는 요청
  • 403 Forbidden
    • 권한이 없거나 잘못된 파일 실행 접근시도
  • 404 Not found
  • 500 Internal Server error
    • 내부 오류 때문에 요청을 처리할 수 없음

참고 자료 및 이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP

반응형