본문 바로가기

개발지/Today I learn

[1010] CS 지식 - 웹 (HTTP Messages)

#HTTP 메시지

- HTTP

  ▪ HTTP(HyperText Transfer Protocol)는 HTML과 같은 문서를 전송하기 위한 애플리케이션 계층 프로토콜이다.

  ▪ 웹 브라우저와 웹 서버의 소통을 위해 사용된다.

  ▪ 클라이언트 - 서버 모델에서 클라이언트가 HTTP를 양식에 맞춰 보내면 서버도 양식에 맞춰 응답한다.

  ▪ HTTP는 무상태성의 특징이 있다. (HTTP로 통신을 주고받는 과정에서 클라이언트, 서버의 상태를 확인하지 않음)

  ▪ HTTP 메시지를 통해 클라이언트와 서버 사이에 데이터가 요청응답의 형식으로 교환된다.

- HTTP 교환 방식 : 요청과 응답

  1. 요청(Requests)
      ▪ 클라이언트가 서버에 보내는 메시지. Start line, Headers, Body 로 구성되어 있다.
      ▪ Start line 의 세 가지 요소
    (1) HTTP method: 수행할 작업(GET, POST)이나 방식(HEAD, OPTIONS)을 설명하는 부분
    (2) 요청 컨텍스트: 요청 대상(URL, URI), 프로토콜, 포트, 도메인절대 경로가 작성되는 부분
         * 요청 컨텍스트는 HTTP method에 따라 달라진다. 
    (3) HTTP 버전: HTTP 버전을 입력(버전에 따라 메시지 구조가 달라짐)
      ▪ Headers
    -> 기본 구조를 따르는데, 값은 헤더의 종류에 따라 다르다.
    (1) General headers: 메시지 전체에 적용되는 헤더
    (2) General headers: fetch method일 때 가져올 리소스클라이언트 자체에 대한 정보를 포함하는 헤더
    (3) Representation headers: body에 담긴 리소스의 정보를 포함하는 헤더.
      ▪ Body
    -> GET, HEAD, DELETE, OPTIONS 와 같이 서버에 리소스를 요청하는 경우에는 BODY본문이 들어가지 않는다.

        POST, PUT과 같은 데이터를 업데이트하는 요청의 경우 BODY본문이 필요하다.
    (1) Single-resource bodies(단일 리소스 본문): 헤더 두 개로 정의된 단일 파일로 구성
    (2) Muliple-resource bodies(다중 리소스 본문): 여러 파트로 구성된 본문에서는 각 파트마다 다른 정보를 나타낸다.
                                                                               보통 HTML form과 관련 있음.
  2. 응답(Responses)
      ▪ Status line
        응답의 첫 줄. 다음의 정보를 포함한다.
    (1) 현재 프로토콜의 버전(HTTP/1.1)
    (2) 상태 코드 - 요청의 결과를 나타냄(200, 302, 404 등)
    (3) 상태 텍스트 - 상태 코드에 대한 설명
      ▪ Headers
        요청의 헤더와 동일한 구조를 가지고 있다. 동일한 그룹의 헤더를 가지고 있다.
    (1) General headers: 메시지 전체에 적용되는 헤더
    (2) General headers: 위치 또는 서버 자체에 대한 정보(이름, 버전)와 같이 응답에 대한 부가적인 정보를 갖는 헤더.                                        상태 줄에 들어가지 못한 추가 정보를 제공

    (3) Representation headers: body에 담긴 리소스의 정보를 포함하는 헤더.
      ▪ Body
        응답의 body는 두 종류로 나뉜다. 일부 응답읍 Body가 포함되지 않기도 한다.
    (1) Single-resource bodies(단일 리소스 본문) 
        : 길이가 알려진 단일리소스 본문은 두 개의 헤더로 정의한다.
          길이를 모르는 단일 파일로 구성된 단일리소스 본문은 Transfer-Encoding이 chunked로 설정되고 파일이 chunk로         나뉘어 인코딩되어 있다.
    (2) Multiple-resource bodies(다중 리소스 본문) 
        : 서로 다른 정보를 담고 있는 body

 

- 서버 통신과 API

  ▪ 클라이언트와 서버는 HTTP라는 통신 규약(프로토콜)의 약속된 방식으로 통신합니다.

  ▪ HTTP를 이용해 주고받는 통신메시지를 HTTP 메시지라고 합니다.

  ▪ 각자의 프로토콜은 반드시 지켜야 하는 규약이 있으며, 이를 지키지 않으면 상대에게 응답을 받을 수 없습니다.

  ▪ 서버가 클라이언트가 요청할 수 있는 리소스들과 행동에 대한 정보를 제공하기 위해서 서버는 API를 제공합니다.

  ▪ API(Application Programming Interface)는 클라이언트에게 제공되는 인터페이스(접점)입니다.

  ▪ API는 서버에 있는 이용할 수 있는 자원들을 표시한 서버의 메뉴판과 같다고 할 수 있습니다.

  ▪ APIAPI 문서를 통해 제공될 수 있으며, 리소스와 관련된 행동들이 HTTP메소드와 매칭되어 있습니다.

  ▪ 좋은 API문서는 적절한 행동과 메소드가 연결되어 있는 문서이며, 예시는 다음과 같습니다.

요청 적절한 메소드
조회 (Read) GET
추가 (Create) POST
갱신 (Update) PUT , FETCH
삭제 (Delete) DELETE

'개발지 > Today I learn' 카테고리의 다른 글

[1122] 자바 - 자료구조 (Queue)  (0) 2023.11.22
[1026] 자바 - 자료구조 (Stack)  (1) 2023.10.26
[0926] CS 지식 - 웹(CORS)  (0) 2023.09.27
[0925] CS 지식 - 웹(SSR / CRS)  (0) 2023.09.25
[0922] CS 지식 - 네트워크 (웹)  (1) 2023.09.22