HTTP란?

이지수·2022년 10월 11일
0

Backend Loadmap

목록 보기
2/22
post-thumbnail

HTTP

HTTP(HyperText Transfer Protocol)는 인터넷을 통해 웹 브라우저가 서버와 통신하고 인터넷에서 정보를 얻을 수 있도록 하는 것입니다.

특징

HTTP는 상태를 저장하지 않습니다(Stateless). 동일한 연결 상에서 연속하여 전달된 두 개의 요청 사이에는 연결고리가 없습니다.
HTTP의 핵심은 상태가 없는 것이지만, HTTP 쿠키(HTTP cookie) 는 상태가 있는 세션을 만들도록 해줍니다.

HTTP 쿠키
HTTP의 일종으로, 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 기록 정보 파일

HTTP는 TCP(Transmission Control Protocol)를 기반으로 만들어진 프로토콜 입니다.
메시지의 형식에 대해 HTTP가 표준을 제시해주고 이 메시지를 TCP 방식으로 전달합니다.

TCP
인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

HTTP 흐름

  1. 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지 생성(이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됨)
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr
  1. 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환
  2. 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터 검색
  3. 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지 생성
    이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)
  1. 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환

HTTP Protocol

HTTP Message

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다.
요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지고, 응답(response)은 요청에 대한 서버의 답변입니다.

구조

  • 시작 줄(start-line)에는 실행되어야 할 요청, 또은 요청 수행에 대한 성공 또는 실패가 기록되어 있습니다. 이 줄은 항상 한 줄로 끝납니다.
  • 옵션으로 HTTP 헤더 세트가 들어갑니다. 여기에는 요청에 대한 설명, 혹은 메시지 본문에 대한 설명이 들어갑니다.
  • 요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄(blank line)이 삽입됩니다.
  • body에는 요청과 관련된 내용(HTML 폼 콘텐츠 등)이 옵션으로 들어가거나, 응답과 관련된 문서(document)가 들어갑니다. 본문의 존재 유무 및 크기는 첫 줄과 HTTP 헤더에 명시됩니다.

HTTP Request

Request Line

  • HTTP Method: 요청시 보내는 HTTP 메소드 형태
  • Request Target: 어디로 보내는지에 대한 URI
  • HTTP Version: HTTP 버젼으로 현재까지는 대부분이 HTTP/1.1

    HTTP Method
    GET: 특정 리소스의 조회를 요청.(데이터를 받기)
    POST: 특정 리소스에 엔티티를 등록
    PUT: 리소스를 대체, 해당 리소스가 없으면 생성
    DELETE:특정 리소스를 삭제
    PATCH: 리소스의 부분만을 수정
    ...

Request Headers

  • Host: 호스트 URL
  • Accept: 서버에서 해당 타입에 데이터를 보내달라고 요청하는 헤더
  • User-Agent: 클라이언트 정보
  • Authorization: JWT 같은 인증 토큰을 서버로 보낼 때 사용하는 헤더
  • Cookie: 클라이언트 로컬에 저장되는 key-value쌍의 데이터 파일
  • Referer: 경유한 웹 사이트에 대한 정보
  • ...

Blank Line

요청 헤더와 요청 바디를 구분하는 라인

Request Body

클라이언트가 서버에 실제 요청한 내용

HTTP Response

Status Line

  • HTTP Version: 응답 온 메세지의 HTTP 버젼 정보
  • Status Code: 응답 코드
  • Status text: 응답 상태

Response Headers

  • Date: 응답 온 일시
  • Server: 서버에 대한 정보
  • Last-Modified: 최근 수정 일시
  • ETag: 특정 버전에 대한 식별자
  • Content-Type: 응답 데이터의 타입
  • ...

Responese Body

실제 응답받은 메시지(데이터)

참고
Basics of HTTP
웹의 작동 원리
HTTP의 이해

0개의 댓글