[통신] HTTP

Baoro·2022년 2월 13일
1

HTTP란?

HyperText Transfer Protocol
컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식


HTTP는 크게 2가지 특징을 가지고 있다.
1. Request(요청)
2. Response(응답)

컴퓨터들끼리 통신을 한다고 가정했을 때, 보내는 주체는 받는 주체에게 요청을 보내고, 받는 주체는 요청을 보낸 주체에게 응답을 보낸다.
ex) 편지를 보내는 주체는 발신자, 받는 주체는 수신자. 수신자는 잘 받았다는 응답을 발신자에게 보낸다.
ex) 좋아요를 누른다(요청), 잘 이루어졌는지 확인(응답)
하지만 이 과정에서 HTTP의 불편한 특징이 하나 있다.


Stateless?

각각의 HTTP통신(Request/Response)는 독립적이기 때문에 과거의 통신(Request/Response)에 대한 내용은 전혀 기억하지 못한다.

그럼 어떻게?

매 통신마다 모든 정보를 담아서 보내야한다. 마치 자기소개 한 사람에게 보낼 때마다 자기소개를 해야하는 것과 비슷한다.

해결책

이런 여러번의 통신의 진행과정에서 연속된 데이터를 필요한 경우를 대비해서 로그인 토큰, 쿠키,세션, 로컬스토리지 같은 기술이 만들어졌다.


Request / Response 구조

1. Request 메시지 구조

1-1. Start Line

  • HTTP Method : 해당 요청의 의도한 액션을 정의하는 부분이다.
  • GET : 받아오기
  • POST : 생성/수정하기
  • DELETE : 삭제하기
  • Request target : 해당 Request가 전송되는 URL
  • HTTP Version : HTTP 버전. 주로 1.1이 쓰인다.
    ex) GET /login HTTP/1.1
    -> GET 메소드로 login이라는 요청타겟에 HTTP 1.1 버전으로 요청을 보내겠다.

1-2. Headers

  • Key : Value 값으로 되어있다.
  • Host : 요청을 보내는 타겟의 주소.
  • User-Agent : 요청 보내는 클라이언트의 정보(ex. chrome, firfox...)
  • Content-Type : 해당 요청이 보내는 메시지 body 타입
  • Content-Length : Body 내용 길이
  • Authorization : 회원의 인증/인가를 위한 토큰은 여기에 담는다.

1-3. Body

  • 로그인 시에 서버에 보낼 요청의 내용

2. Response 메시지 구조

1-1. Status Line

  • HTTP Version : 요청의 HTTP Version과 동일하다.

  • Status Code : 응답 메시지의 상태 코드

  • Status Text : 응답 메시지의 상태를 간략하게 설명해준다.

    ex) HTTP/1.1 404 Not Found
    -> HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 유저의 정보를 찾을 수 없어서 404 메시지를 보낸다.

    ex) HTTP/1.1 200 SUCCESS
    -> HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에 200 상태 메시지를 보낸다.

1-2. Headers

  • 응답에서만 사용되는 헤더 정보들을 담고있다.

1-3. Body

  • 데이터를 전송할 필요가 없는 경우에는 작성할 필요가 없다.
  • 가장 많이 사용하는 데이터 타입은 JSON.
profile
꾸준히.... 깔끔하게.... 끝까지....

0개의 댓글