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 - 다른 소프트웨어에 서비스를 제공하기 위한 소프트웨어 인터페이스
작동 방식
- 클라이언트가 URI로 식별한 자원에 대해 HTTP 메서드를 사용해 REST API로 요청한다.
- REST API가 HTTP 요청 메시지에 실려 서버에 전달된다.
- 서버에서는 수신한 HTTP 요청 메시지를 바탕으로 요청 사항을 확인해 처리하고 HTTP 응답을 반환한다. 응답에는 요청에 대한 처리 성공 여부와 정보를 포함한다.
- 응답 메시지는 자원에 대한 정보를 JSON 또는 XML 등의 형태로 포함하고 있다. 클라이언트는 해당 형태의 정보를 수신한다.
2.4.3 HTTP 메서드
- POST: 데이터를 생성할 때 사용 Create
- GET: 데이터를 조회할 때 사용 Read
- PUT: 데이터를 갱신할 때 사용 Update
- DELETE: 데이터를 제거할 때 사용 Delete