HTTP 프로토콜

박근수·2024년 1월 30일

WWW 란?

  • W3 또는 웹(Web)
  • 주요 요소 : HTML, URL, HTTP
    • HTML : markup언어, hypertext 와 hyperlink(또는 링크) 로 구성

HTTP (HyperText Transfer Protocol)

Sever/Client 모델로 Requst/Response 사용

  • Client에서 요청(Request)을 보내면, Server에서 응답(Response)을 준다.
  • HTTP는 Connectionless 한 프로토콜 - 1회성 Request 및 Response
  • TCP/IP socket을 이용해서 연결됨

HTTP 1.1

HTTP 1.1d은 keepalive 기능을 통해, 서버에서 설정된 keepalive timeout까지는 연결과정 없이 데이터 송수신 가능

  • 내부적으로 결국 매번 TCP 3-way handshake 과정을 거칠 필요가 없어짐

주요 Request Method

GET : 정보 읽기(SELECT)

전달이 필요한 파라미터들은 URL을 통해 전달

  • 웹사이트 접속시는 일반적으로 GET을 통해 HTML을 가져옴

POST : 정보 입력하기(INSERT)

전달이 필요한 파라미터들은 HTTP body에 포함되어 전달되므로, 사용자는 직접적인 확인 불가

PUT : 정보 수정하기(UPDATE)

DELETE : 정보 삭제하기(DELETE)

HTTP 응답코드

  • 200 : 정상
  • 400 : 유효하지 않은 파라미터 또는 잘못된 요청
  • 401 : 승인되지 않은 엑세스
  • 403 : 엑세스 금지
  • 404 : 리소스를 찾을 수 없음
  • 500 : 내부 서버 오류

쿠키(Cookie), 세션(Session)

HTTP의 Stateless 를 보완하기 위한 기법

Stateless : 통신이 끝나면 상태를 유지하지 않음

쿠키(Cookie)

  • 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
  • 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있음
  • 클라이언트의 상태 정보를 로컬에 저장했다가 참조

구성 요소

  • 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름
  • 값 : 쿠키의 이름과 관련된 값
  • 유효시간 : 쿠키의 유지시간
  • 도메인 : 쿠키를 전송할 도메인
  • 경로 : 쿠키를 전송할 요청 경로

동작 방식

  1. 클라이언트가 페이지를 요청
  2. 서버에서 쿠키를 생성
  3. HTTP 헤더에 쿠키를 포함 시켜 응답
  4. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 헤더에 포함
ex) 사이트 아이이 및 비밀번호 저장, 쇼핑몰 장바구니 기능

세션(Session)

  • 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리
  • 서버에서는 클라이언트를 구분하기 위해 세션ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지
  • 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아지면 서버 메모리를 많이 차지하게됨

동작 방식

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
  2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
  3. 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
  4. 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용
  5. 정보를 가지고 서버 요청 처리하여 응답

REST(REpresentational State Tranfer)

  • 자원(resource)의 표현(representaitonal)에 의한 상태 전달
  • HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD 적용

CRUD Operation 와 HTTP Method

  • CREATE : 생성(POST)
  • READ : 조회(GET)
  • UPDATE : 수정(PUT)
  • DELETE : 삭제(DELETE)

REST 특징

  • Server-Client(서버-클라이언트 구조)
  • Stateless(무상태)
  • Cacheable(캐리 처리 가능)
  • Layerd System(계층화)
  • Uniform Interface(인터페이스 일관성)

REST API

REST 기반으로 서비스 API를 구현한 것
마이크로 서비스, Open API 등에서 많이 사용됨

REST API의 특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

기본 규칙

  • 도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념
  • 컬렉션 : 서버에서 관리하는 디렉터리라는 리소스
  • 스토어 : 클라이언트에서 관리하는 리소스 저장소
  1. URI는 정보의 자원으 표현해야 한다.
  2. 자원에 대한 행위는 HTTP Method로 표현한다.

RESTful

  • RESTful은 일반적으로 REST라는 아키텍쳐를 구현하는 웹서비스를 나타내기 위해 사용되는 용어
    • 'REST API'를 제공하는 웹 서비를 'RESTful'하다고 할 수 있음
  • RESTful은 REST를 REST 답게 쓰기 위한 방법으로 비공식적이다.
profile
개발블로그

0개의 댓글