[HTTP] HTTP란?

^_^·2022년 7월 14일
0

HTTP

목록 보기
2/2

HTTP

HTTP는 HyperTextTransferProtocol의 약자이다. 각 단어에 대한 뜻을 살펴보자.

HperText

HTML(Hyper Text Markup Language)의 Hyper text와 의미가 동일하다. 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어라는 뜻이다.

Transfer

전송한다는 뜻인데 보내는 주체와 받는주체가 있는 전송을 의미한다.

Protocol

프로토콜은 협약, 통신 규약 이라는 의미를 가진다. 물리적으로 떨어진 컴퓨터끼리 어떻게 HTML을 주고 받을지에 대한 약속이다.

Stateless

HTTP에 대해 말할 때 Stateless를 모르면 HTTP가 하는 행동을 다이해하기 힘들어진다. 그대로 번역하면 상태 + 없음 인데 이말은 각각의 HTTP통신은 독립적으로 이루어져 과거의 통신에 대한 내용을 전혀 알지 못한다. 붕어다. 이말은 매 통신마다 필요한 정보를 담아서 요청을 보내야 한다는말이다. 그래서 사용하는게 토큰인데 만약 토큰인증이 없다면 우리는 같은 웹페이지에서 필요한 기능을 수행할 때마다 서버에서 회원이 맞는지 검증하는 시스템이 있어야 한다.

Request/Response(요청/응답)

HTTP통신의 핵심은 요청과 응답이다. 앞서 HTTP의 세번쨰 키워드인 Transfer에 대해서 설명 할 때, 전송은 보내는 주체와 받는 주체가 있다고 했다. 어떤 형식으로 요청과 응답을 받는지 알아보자.

Request 메세지의 구조

요청은 그저 메세지에 불과하다.
HTTP 요청은 사실 프론트엔드(클라이언트)에서 백엔드(서버)에 일(데이터 처리)을 시작하게 하기 위해 보내는 메세지 이다. 이 메세지의 구조는 크게 세 부분으로 구성되어 있다.

  1. Start Line: 요청의 첫번째 줄에 해당한다. 이 시작 줄도 세 부분으로 구성되어 있다.
  • HTTP Method: 해당 요청이 의도한 액션을 정의한다. 주로 GET, POST, DELETE가 많이 쓰인다.
  • Request target: 해당 request가 전송되는 목표 url
  • HTTP Version: 말 그대로 사용되는 HTTP 버전을 뜻한다. 주로 1.1버전이 널리 쓰인다.
  1. Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분이다.
  • Key: Value 값으로 되어있다 (JavaScript의 객체, Python의 딕셔너리 형태라고 보면 된다)
  • Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다. (ex. www.apple.co.kr)
  • User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer)
  • Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
  • Content-Length: body 내용의 길이
  • Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다

  1. Body: 해당 요청의 실제 내용이다. 주로 Body를 사용하는 메소드는 POST 이다.

Response 메세지 구조

HTTP 규약에 따른 응답의 구조도 세 부분으로 구성되어있다.

  1. Status Line: 응답의 상태를 나타내는 줄이다.
  • 응답은 요청에 대한 처리상태를 클라이언트에게 알려주면서 내용을 시작한다. 응답의 Status Line도 세 부분으로 구성되어있다.
    -HTTP Version: 요청의 HTTP버전과 동일
    -Status Code: 응답 메세지의 상태 코드
    -Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트

업로드중..

  1. Headers: 요청의 헤더와 동일하다. 응답의 추가 정보(메타 데이터)를 담고있는 부분이다.
  • 다만, 응답에서만 사용되는 헤더의 정보들이 있다. (요청하는 브라우저의 정보가 담긴 User-Agent 대신, Server헤더가 사용된다.
  1. Body: 요청의 Body와 일반적으로 동일하다.
  • 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답의 형태에 따라 데이터를 전송할 필요가 없을 경우엔 Body가 없을 수도 있다.
  • 가장 많이 사용되는 Body의 데이터 타입은 Json(JavaScript Object Notation) 이다.
  • 로그인 요청에 대해 성공했을 때 응답의 내용

업로드중..

0개의 댓글