HTTP 개념 정리

맘비·2023년 1월 3일
0

CS / Web

목록 보기
6/10

HTTP(Hyper Text Transfer Protocol)


HTML 문서를 주고 받는데 쓰이는 통신 프로토콜이다.

TCP / UDP 를 사용하여 통신하며 80번 포트를 사용하는 통신프로토콜(통신규약)이다. 연결 상태를 유지하지 않는 비연결성 프로토콜이며, 요청과 응답(request, response) 방식으로 동작한다. 클라이언트가 서버에 요청을 보내면, 그에 맞는 응답 결과를 돌려주고, 클라이언트는 사용자에게 서버로부터 응답받은 결과를 보여준다.

여기서 연결 상태를 유지하지 않는다는 말은 서버는 응답 메시지를 반환한 후에 클라이언트의 상태를 저장하지 않는다는 것이다. 따라서 HTTP 프로토콜은 상태가 없는 프로토콜, 무상태성(stateless)라고도 불린다. 즉, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 말이고, 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말이다.

  • 통신 프로토콜은 통신규약이라고도 하며, 컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고 받는 양식과 규칙의 체계이다.

1. HTTP Request 구조

  • Request Line
    • request가 시작되는 줄로, HTTP 메서드 (GET, POST 등)를 사용해 서버가 수행해야 할 동작을 나타낸다.
    • 요청 타겟 (URL, 또는 포르토콜, 포트, 도메인)을 나타내며, 이들은 요청 컨텍스트에 의해 특정 지어진다.
    • 응답 메시지에 사용할 HTTP 버전을 알려주는 역할을 한다.
  • Header
    • 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라진다.
    • 헤더를 세분화하면 General Header, Request Header, Entity Header으로 나눌 수 있다.
  • Body
    • request의 마지막 부분이다. 모든 요청에 들어가지는 않으며 GET, HEAD, DELETE, OPTIONS처럼 리소스를 가지고 오는 요청은 대부분 본문을 필요로 하지 않는다.
    • 단일-리소스 본문(single-resource bodies), 다중-리소스 본문(multiple-resource bodies)으로 나눠진다.

2. HTTP Response 구조

  • Status Line
    • 프로토콜 버전을 나타내며, 보통 HTTP/1.1 이다.
    • 상태 코드, 요청의 성공 여부를 나타낸다. (200, 404, 302 등)
    • 상태 텍스트, 짧고 간결하게 상태 코드에 대한 설명을 글로 나타낸다. (Not Found 등)
  • Header
    • 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라진다.
    • 헤더를 세분화하면 General Header, Response Header, Entity Header으로 나눌 수 있다.
  • Body
    • response의 마지막 부분에 들어간다. 모든 응답에 들어가지는 않으며 201, 204 같은 상태 코드를 가진 응답에는 보통 본문이 없다.
    • response body는 이미 길이가 알려진 단일 파일로 구성된 헤더 2개(Content-Type, Content-Length)를 가진 단일-리소스 본문, 길이를 모르는 단일 파일로 구성된 단일-리소스 본문, 서로 다른 정보를 담고 있는 멀티파트로 이루어진 다중-리소스 본문 이렇게 크게 3가지로 나눌 수 있다.

3. HTTP Method & Status code

  • HTTP Method
    • GET : 존재하는 자원에 대한 요청
    • POST : 새로운 자원을 생성
    • PUT : 존재하는 자원에 대한 변경 (자원 전체를 갱신)
    • PATCH : 존재하는 자원에 대한 변경 (자원 일부를 교체)
    • DELETE : 존재하는 자원에 대한 삭제
    • OPTIONS : 웹 서버에 지원되는 메서드의 종류를 확인할 경우 사용
  • HTTP Status Code
    • 1xx : Informational - 요청 정보를 처리 중
    • 2xx : Success - 요청을 정상적으로 처리
    • 3xx : Redirection - 요청을 완료하기 위해 추가 동작이 필요
    • 4xx : Client Error - 클라이언트의 요청 오류
    • 5xx : Server Error - 서버 측 오류
profile
기록만이 살 길 ... 말하는 감자애오

0개의 댓글