HTTP 통신

lsjoon·2024년 2월 24일

Network

목록 보기
2/8

HTTP (HyperText Transfer Protocol)


하이퍼미디어 문서를 전송하기 위한 통신 규약

월드 와이드 웹(World Wide Web)의 토대로, 하이퍼텍스트 링크를 통해 웹 페이지를 로드

HTTP Communication


통신(Communication) : 상대방정보를 주고받는 것

- 상대방 = ClientServer
- 정보 = HTTP Message

구성 요소

  • Client : 브라우저
  • Server : Web 서버, Web Application 서버
  • HTTP Message : 요청(Request), 응답(Response)

작동 방식

  1. Web 서버에서 API 통신을 통해 Web Application 서버에 데이터 요청
  2. 데이터가 처리된 결과값을 Web 서버로 반환
  3. 브라우저에 JavaScript 등을 이용해 표현

1. 브라우저


HTML 문서, 그림, 멀티미디어 파일 등 월드 와이드 웹을 기반으로 한 인터넷의 컨텐츠에 접근하기 위한 응용 프로그램의 총칭
= 인터넷 사용을 도와주는 도구

  • FireFox, Google Chrome, Microsoft Edge

브라우저 엔진 = 렌더링 엔진(레이아웃 엔진)
- 웹 브라우저의 핵심이 되는 소프트웨어 구성 요소
- 내용 정보(HTML, XML)와 서식 정보(CSS, XML) 등을 읽어들여 사람이 읽을 수 있는 문서로 표시

2. 서버


정적 웹 서버 (Web Server)

  • HTTP 서버가 있는 컴퓨터로 구성
  • 서버에 존재하는 이미 저장되어 있는 파일(HTML, CSS, Script ..)을 브라우저에 전송
  • 서버에 저장된 데이터가 변하지 않는 한 고정된 페이지를 보여줌
  • 예시 : Apache HTTP Server, nginX

HTTP Server

  • URL(Web address)과 HTTP(웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어의 일부
  • 브라우저가 웹 서버에 있는 파일을 필요로 할 때, HTTP를 통해 파일을 요청
  • 요청이 올바른 웹 서버(하드웨어)에 도달하면, HTTP 서버(소프트웨어)는 요청된 문서를 HTTP를 이용해 전송

동적 웹 서버 (Web Application Server)

  • 정적 웹서버(HTTP Server) + 어플리케이션 서버
  • 어플리케이션 서버는 계속 변하는, 동적 데이터(DB 조회, 로직 처리 ..)에 대응하기 위해 만들어진 서버
  • 어플리케이션 서버는 프로그램에 응답을 전달 받아 웹 서버에 전달
    = 하나의 프로토콜로서, CGI와 유사한 기능을 수행
  • 예시 : Apache Tomcat

3. HTTP Message


서버와 클라이언트 간에 데이터가 교환되는 방식

- HTTP 메세지는 ASCII로 인코딩된 텍스트 정보
- 메시지 구조는 단순하게 이루어져 있고, 확장성이 좋음
- 서버주소, 요청 메서드, 상태 코드, target path, 헤더 정보, 바디 정보 등이 포함
- Request와 Response 모양이 비슷함 ( 똑같지 않음 )

HTTP Request


- 시작줄 (Start Line)
요청에 필요한 세가지 요소를 포함

  • Method : 수행할 작업(GET, PUT, POST, .. )또는 방식 (HEAD, OPTION, ..)
  • Path : 가져오려는 리소스의 경로를 특정 형식(origin, absolute, authority, asterisk )에 맞춰 작성
  • Version of protocol : HTTP 버전

- 헤더 (Header)
요청에 대한 부가적인 정보를 전송

  • Request Header :
    1. 요청을 구체화함 ( User-Agent, Accept-Type, Accept-Language )
    2. 컨텍스트를 제공 (Referer)하거나, 제약을 추가 (If-none)
  • General header : 메시지 전체에 적용 (Connection 등)
  • Entity Header : body가 있을 때만 전송 (Content-Length 등)

- 바디 (Body)
서버에 던질 데이터

  • 메세지의 마지막 부분
  • GET, DELETE, HEAD 등 서버에 리소스를 요청 시에는 필요하지 않음
  • PUT, POST 등의 서버에서 작업을 수행시 필요한 정보를 입력

HTTP Response


- 상태줄 (Status Code)
요청에 대한 응답 상태를 포함

  • Version of protocol : HTTP 버전
  • Status code : 요청에 대한 처리 여부를 상태코드(정수)로 반환
  • Status Text : 상태 코드에 대한 설명을 글로 표현

- 헤더 (Header)
요청에 대한 부가적인 정보를 전송

  • Response Header :
    1. Vary, Accept-Ranges 등 상태 줄을 넘어서는 정보를 제공
  • Entity Header : body가 있을 때만 전송 (Content-Length 등)
  • General header : 메시지 전체에 적용

- 바디 (Body)
응답으로 보내줄 데이터

  • 메세지의 마지막 부분
  • 201, 204 등의 상태 코드를 가지는 응답에는 바디(Body) 필요 없음

메세지 Header


요청과 응답 모두 헤더를 포함해야 함

  • 콘텐츠 관련 정보, 인증 관련 정보, 쿠키 정보, 캐시 관련 정보 등 서버와 클라이언트 간 통신 시 필요한 정보를 담음

General Header
- 데이터와 관련 없는 헤더

  • 요청과 응답에 모두 적용
  • Date, Connection (클라이언트와 서버 간의 연결에 대한 옵션) 등

Request Header
- 요청하는 클라이언트에 대한 자세한 정보를 포함하는 헤더

  • Host, User-Agent, Cookie

Response Header
- 서버 자체에 대한 정보, 응답에 대한 부가적인 정보를 포함하는 헤더

  • Server, Allow, Etag, Access-Control-Allow-Origin

Entitiy Header
- 콘텐츠 길이MIME 타입과 같이 바디(Body) 에 대한 자세한 정보를 포함하는 헤더

  • Content-Type, Content-Length

메세지 Method

클라이언트는 서버로 요청을 보낼 때, 요청 메서드로 특정 요청에 대한 동작을 정의

  • GET
    존재하는 자원에 대한 요청

  • POST
    새로운 자원 생성

  • PUT
    존재하는 자원에 대한 변경 (자원 전체를 갱신)

  • PATCH
    존재하는 자원에 대한 변경 (자원 일부를 갱신)

  • DELETE
    존재하는 자원에 대한 삭제

  • OPTION
    웹 서버에 지원되는 메서드의 종류를 확인할 때

GETPOST 를 가장 많이 사용


메세지 Status Code

클라이언트는 요청의 결과에 대한 상태 코드상태 텍스트를 반환 받음

  • 상태 코드 : 요청에 대한 결과 (성공, 실패, 지연 등)
  • 상태 텍스트 : 코드의 이해를 돕는 짧은 글

상태코드와 관련된 재밌는 페이지

  • 1xx
    Informational : 요청 정보를 처리 중

  • 2xx
    Success : 요청을 정상적으로 처리함

  • 3xx
    Redirection : 요청을 완료하기 위해 추가 동작 필요 / 다른 곳으로 처리 이동

  • 4xx
    Client Error : 클라이언트 요청의 오류

  • 5xx
    Server Error : 서버 측 오류


번외 - REST API

"RE"presentational "S"tate "T"ransfer "API"

API(Application Programming Interface)
사용자가 특정 기능을 사용할 수 있도록 제공하는 함수

  • HTTP의 요청 메서드에 응하는 서버 API클라이언트 간 통신의 구조가 지켜야할 좋은 방법을 명시
  • 구체적인 내용으로는 요청 메서드의 의미, URI 설계, 클라이언트의 상태에 대한 동작 등을 정의

REST API 요청 메서드

  • GET
    리소스 정보를 얻음

  • POST
    리소스 생성

  • PUT
    리소스 생성 or 업데이트

  • DELETE
    리소스 제거


profile
중요한 것은 꺾여도 그냥 하는 마음

0개의 댓글