[CS] HTTP message Day-28

cptkuk91·2021년 11월 18일
0

CS

목록 보기
52/139

HTTP?

HyperText Transfer Protocol의 줄임말로, HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜입니다. HTTP는 웹 브라우저와 웹 서버의 소통을 위한 것입니다.

클라이언트-서버 통신에서 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP message 양식에 맞춰 응답합니다.

HTTP message?

클라이언트와 서버 사이에서 데이터가 교환되는 방식입니다. HTTP messages는 요청(Requests)와 응답(Response)로 구성됩니다.

HTTP messages는 몇 줄의 텍스트 정보로 구성됩니다. (개발자가 메시지를 작성할 필요는 없습니다.)

  • start line: 요청이나 상태를 표시합니다. (항상 첫 줄입니다.)
  • HTTP headers: 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 집합입니다.
  • empty line: 헤더와 본문을 구분하는 빈 줄
  • body: 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함

요청 (start line, HTTP headers, empty line, body)

start line?

클라이언트가 서버에 보내는 메시지 입니다.

  • Get
  • Put
  • Post
    HTTP Method를 나타냅니다. Get method의 경우 리소스를 받아야 하고, Post method는 데이터를 서버로 전송합니다.

ex) 형식

POST / HTTP 1.1
GET / background.png
...

HTTP headers

기본 구조를 따릅니다. 헤더 이름, 콜론(:), 값 으로 구성됩니다.

  • General headers: 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없습니다.
  • Request headers: fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더를 의미합니다. (요청을 구체화 합니다.)

Body

HTTP messages 구조의 마지막에 위치합니다. 일부 요청의 데이터를 업데이트 하기 위해 사용합니다.

  • Single-resource bodies
  • Multiple-resource bodies
    지금은 구체적인 내용보다는 존재를 알아두자..

응답 (Status lines, Headers, Body)

Status line

응답의 첫 줄은 Status line이라고 부르며, 다음의 정보를 포함합니다.

  • 현재 프로토콜 버전 ex) HTTP/1.1
  • 상태 코드 ex) 200, 302, 404 등
  • 상태 텍스트 ex) OK, Not Found 등

Headers

문자열, 콜론(:), 값을 입력합니다. 값은 요청에 따라 반응하고 그룹으로 나눌 수 있습니다.

Body

HTTP message 마지막에 위치합니다. 모든 응답에 body가 필요한 건 아닙니다.

  • Single-resource bodies(단일-리소스 본문)
  • Multiple-resource bodies(다중-리소스 본문)
    현재는 존재를 알고 넘어가자..

Stateless

상태를 자지지 않는 경우입니다. HTTP로 클라이언트와 서버가 통신을 주고 받는 과정에서 서버의 상태를 확인하지 않은 경우입니다.
필요에 따라 (쿠키-세션, API 등) 을 통해 상태를 확인합니다. (나중에 추가적인 공부가 필요합니다..)

추가 자료

HTTP messages

클라이언트와 서버 간 데이터 교환 방식입니다.
클라이언트는 (Request)요청하여 서버에서 액션이 일어나게 합니다.
서버는 (Response)응답하여 클라이언트에 답변합니다.
요청과 응답의 구조는 서로 닮아있으며 구조는 위에 정리된 자료와 같습니다.(start-line 등등)

HTTP Request Method

  • GET: 특정 리소스의 표시를 요청합니다. GET을 사용하는 요청은 데이터를 받기만 합니다.
  • HEAD: GET 메소드의 요청과 동일한 응답을 요구하지만 본문을 포함하지 않습니다.
  • POST: 특정 리소스에 엔티티를 제출할 때 쓰입니다.
  • PUT: 모든 현재 표시를 요청 payload로 변경합니다.
  • DELETE: 특정 리소스를 삭제합니다.
  • CONNECT: 식별되는 서버로의 터널을 맺습니다.
  • OPTIONS: 리소스의 통신을 설정하는 데 쓰입니다.
  • PATCH: 리소스의 부문을 수정하는 데 쓰입니다.
profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글