What is HTTP?

minch·2021년 7월 16일
0

WEB

목록 보기
2/2
post-thumbnail

HTTP?

HTTP는 HyperText Transfer Protocol의 약자로,

  • HyperText > 한 문서에서 다른 문서로 접근할 수 있는 글, 즉 링크(연결)된 텍스트이다.

  • Transfer > 전송하다 라는 의미로, HTTP에서는 받는 주체와 주는 주체가 존재한다.

  • Protocol > 협약, 통신 규약 이라는 의미를 가진다. 물리적으로 떨어진 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속이다.

이를 종합해보면 '컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식' 또는 '약속' 이다

HTTP는 두가지 특징을 가진다.

  1. Request / Response, 사람이 소통하는 것처럼 요청과 응답이 존재한다.
  2. Stateless, 상태없음 이라는 뜻으로 각 통신은 독립적으로 이루어져서 과거의 통신에 대한 내용을 기억하지 못한다.
    즉, 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.

Request / Response

요청과 응답 모두 메시지로 이루어져 있으며, 클라이언트와 서버가 주고 받는 메시지를 의미한다.

Request

요청에는 크게 3가지가 존재한다.

  1. Start Line: 요청의 첫번째 줄에 해당한다.
    이 안에는 HTTP Method, Request target, HTTP Version의 내용이 담긴다

    HTTP Request Methods?

    HTTP가 데이터를 요청하는 방법으로,
    자주 쓰이는 메소드에는 GET / POST / DELETE 가 있다.

    GET

    • 이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드 , 데이터를 받아오기만 할 때 사용된다.
    • 가장 간단하고 많이 사용되는 HTTP 메소드

    POST

    • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드
    • 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다.

    DELETE

    • 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드
  2. Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분이다.
    Key: Value 값으로 되어있다.

    • Headers: {
      Host: 요청을 보내는 목표(타겟)의 주소.
      즉, 요청을 보내는 웹사이트의 기본 주소가 된다 (ex. www.apple.co.kr)
      User-Agent: 요청을 보내는 클라이언트의 대한 정보
      (ex. chrome, firefox, safari, explorer)
      Content-Type: 해당 요청이 보내는 메세지 body의 타입
      (ex. application/json)
      Content-Length: body 내용의 길이
      Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰
      }
  3. Body: 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST다.

Response

마찬가지로 응답의 구조도 3가지가 존재한다.

  1. Status Line: 응답의 상태 줄이다.
    응답은 요청에 대한 처리상태를 클라이언트에게 알려주면서 내용을 시작한다.
    응답의 Status Line 도 세 부분으로 구성된다.

    • HTTP Version: 요청의 HTTP Version과 동일
    • Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
    • Status Code: 응답 메세지의 상태 코드

      Status Code?

      상태 코드로 요청에 대한 응답이 제대로 됐는지 확인할 수 있다.

      200: OK

      • 문제없이 요청에 대한 응답이 잘되었다는 Status Code

      201: Created

      • 무언가가 잘 생성되었을 때에(Successfully Created) 오는 Status Code
      • 주로 POST에 대한 응답

      400: Bad Request

      • 해당 요청이 잘못되었을 때 보내는 Status Code

      401: Unauthorized

      • 해당 요청의 신원을 알지 못한다는 의미의 Status Code

      403: Forbidden

      • 요청하는 사람의 신원은 알지만, 해당 요청에 대한 권한이 없다는 Status Code

      404: Not Found

      • 요청된 URI 가 존재하지 않는다는 의미

      500: Internal Server Error

      • 서버에서 에러가 났을 때의 Status Code

      더 다양한 코드들은 여기 참조.

  2. Headers: 요청의 헤더와 동일하다. 응답의 추가 정보(메타 데이터)를 담고있는 부분이다.

  3. Body: 요청의 Body와 일반적으로 동일하다.
    요청의 메소드에 따라 Body가 항상 존재하지 않듯이, 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있다.

0개의 댓글