CS공부/네트워크

2.3-2.4 HTTP, REST

Jaemin0604 2024. 7. 29. 16:36

2.3.1 HTTP

  • HyperText Transfer Protocol
  • 인터넷 상에서 데이터를 전송하기 위한 프로토콜, TCP/IP 4계층에서 응용 계층에 속함
  • 비연결성 - 클라리언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊음
    • 불특정 다수를 대상으로 하는 서비스에 유리함
    • 서버에서 응답을 받고 나서도 연결을 유지하려면 자원을 사용해야함 -> HTTP는 연결 유지X
    • 서버가 클라이언트를 기억할 수 없다는 단점이 있음
      • 이를 보완하기 위해 일정 시간 동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용
      • 마지막 응답 이후 일정 시간 동안 연결을 유지해 동일한 클라이언트로부터 요청이 오면 연결 과정을 생략할 수 있음
  • 무상태 - 서버에서 클라이언트의 상태를 저장하지 않는 것
    • 클라이언트가 이전에 요청한 사항을 서버에 저장하지 않음
    • 클라리언트는 요청에 필요한 데이터를 모두 가지고 있어야함
    • 또는 서버가 클라이언트로부터 받은 요청사항을 모두 저장해야함-> 쿠키/세션
    • 장점: 서버 확장성이 높다 -> 클라이언트의 요청에 응답하는 서버가 바뀌어도 되기 때문에 서버를 계속 확장해도됨

2.3.2 HTTPS

  • HyperText Transfer Protocol Secure
  • 보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜
  • SSL - 넷스케이프에서 개발한 암호화 프로토콜
  • TLS - SSL의 몇 가지 문제점을 보완해 만든 암호화 프로토콜

  • 데이터를 송신할 때 응용 계층에서 보안 계층의 SSL/TLS로 데이터를 보내면 데이터를 암호화해 전송 계층으로 전달
  • 데이터를 수신할 때 전송 계층에서 보낸 데이터를 보안 계층의 SSL/TLS에서 받아 복호화한 후 응용 계층으로 보냄

2.3.3 웹 페이지 접속 과정


2.4.1 REST란

  • Representational State Transfer의 약자
  • HTTP 통신을 활용하기 위해 고안된 아키텍처
  • Representational은 인터넷상의 자원을 URI(Uniform Resource Identifier)로 나타낼 수 있음을 의미
  • 클라이언트는 URI로 표현된 자원을 HTTP 메서드를 이용해 CRUD연산을 할 수 있음
  • State Transfer는 자원의 상태를 주고 받는 것, 즉 요청받은 자원의 상태를 전달하는 것을 의미
  • 결국 REST는 자원을 명시해 연산을 수행하고 상태를 주고받는 것

특징

  • 일관된 인터페이스: 자원을 나타내는 URI를 HTTP 메서드로 조작하는 일관된 인터페이스를 사용
  • 클라이언트-서버 구조: 클라이언트와 서버 간에 요청-응답의 독립적인 구조를 갖음
  • 무상태성: 서버에서는 클라이언트의 요청을 저장하거나 관리하지 않음
  • 캐싱 가능: HTTP 표준을 사용하므로 클라이언트는 이전에 서버로부터 받은 응답을 저장 및 재사용하는 캐싱을 할 수 있음
  • 자체 표현 구조: REST API는 자원, 행위, 표현으로 구성되어 REST API 메시지를 보고 어떤 요청을 하는지 알 수 있음
  • 계층형 구조: REST 서버는 다중 계층으로 구성될 수 있어서 보안, 암호화와 같은 계층을 추가해 서버에 대한 기능을 유연하게 확장할 수 있음
  • 이러한 특징들과 함께 HTTP를 기반으로 하기 때문에 별도의 인프라를 구축할 필요가 없다는 장점이 있음 -> 그래서 HTTP표준을 따르면 REST를 쉽게 사용할 수 있음. 하지만 HTTP 메서드를 사용해 자원에 대한 연산을 처리하므로 동작이 한정적이라는 단점이 있음

2.4.2 REST API

  • REST를 기반으로 한 API를 뜻함
  • API - 다른 소프트웨어에 서비스를 제공하기 위한 소프트웨어 인터페이스

작동 방식

  1. 클라이언트가 URI로 식별한 자원에 대해 HTTP 메서드를 사용해 REST API로 요청한다.
  2. REST API가 HTTP 요청 메시지에 실려 서버에 전달된다.
  3. 서버에서는 수신한 HTTP 요청 메시지를 바탕으로 요청 사항을 확인해 처리하고 HTTP 응답을 반환한다. 응답에는 요청에 대한 처리 성공 여부와 정보를 포함한다.
  4. 응답 메시지는 자원에 대한 정보를 JSON 또는 XML 등의 형태로 포함하고 있다. 클라이언트는 해당 형태의 정보를 수신한다.

2.4.3 HTTP 메서드

  • POST: 데이터를 생성할 때 사용 Create
  • GET: 데이터를 조회할 때 사용 Read
  • PUT: 데이터를 갱신할 때 사용 Update
  • DELETE: 데이터를 제거할 때 사용 Delete