HTTP
HTTP는 HyperText Transfer Protocol의 약자이다.
HyperText
- HyperText 하이퍼링크와 같은 참조를 걸어 다른 문서로 이동을 하게 도와주는 텍스트를 의미한다.
Transfer
- "옮기다" 라는 뜻을 가지고 있음.
Protocol
- "규약" 이라는 뜻을 가지고 있음.
즉, HyperText를 옮기게 도와주는 규약을 의미한다.
쉽게 말해, 웹에서 클라이언트와 서버간의 HyperText 기능이 들어가있는 문서들을 요청과 응답을 통해 제공을 해주는 방법을 규약을 해놓고 해당 규약 틀안에서 제공을 해주는 것을 의미한다.
Protocol(규약)의 존재 이유
HTTP와 같이 통신 프로토콜이 없다면, 클라이언트와 서버간 너무 다양한 통신 방법이 만들어질 수 있기 때문에 하나의 방법으로 통일하자는 개념으로 만들어진 통신 규약이다.
HTTP 통신 프로토콜 규약
1. 클라이언트와 서버간 구조
원하는 문서를 요청을 하는 곳을 클라이언트, 요청을 받아서 문서를 제공해주는 곳을 서버로 나눈다는 일반적인 웹 브라우저의 형태를 정의한 구조를 규약으로써 정해놓는다.
2. 무상태 프로토콜
HTTP는 클라이언트와 서버간에 요청과 응답 과정에서 요청 후 응답이 가면 바로 연결을 끊는 무상태 프로토콜 지양
3. HTTP메시지 & Request & Response
앞서 말한 클라이언트와 서버간의 구조에서 요청인 Request 응답인 Response에 대한 구조를 HTTP 메시지로써 통신을 하게 된다. HTTP 메시지는 요청에 대한 정보를 서버에 같이 넘기게 된다. 이때 들어가는 정보로는 URL, 헤더, 요청 본문 등을 포함하여 서버에 주게 되고 서버 또한, HTTP 메시지를 만들어서 응답을 하게 되는데 이때 들어가는 정보는 상태 코드, 헤더, 본문 등을 포함하여 Response를 하게 된다.
4. HTTP 메서드
대표적으로는 GET, POST, PUT, DELETE, PATCH 이러한 메서드를 요청을 보낼 때 HTTP 메시지에 같이 담아서 보내게 된다. 해당 메서드들의 의미는 각각
- GET: 서버에서 리소스를 요청하는 메서드. 서버에 데이터를 변경하지 않음.
- POST: 서버에 데이터를 전송하여 리소스를 생성하거나 수정하는 메서드.
- PUT: 리소스를 생성하거나 수정하는 메서드.
- DELETE: 서버에서 리소스를 삭제하는 메서드.
- HEAD: GET과 비슷하지만, 응답 본문 없이 헤더만 반환하는 메서드.
- OPTIONS: 서버가 지원하는 HTTP 메서드를 확인하는 메서드.
- PATCH: 리소스의 일부를 수정하는 메서드.
이러한 의미를 띄게 되며, 일반적으로 이러한 방식을 토대로 서버에 데이터를 요청하는 것을 API 호출이라고 하며, 위의 방법들을 다 지키게 되면 RESTful한 API라고 부르게 된다.
5. 상태 코드
Response과정에서는 해당 데이터에 대한 처리가 어떻게 되었느냐에 따라서 상태코드를 보내주게 되고, 상태코드에 따라서 클라이언트가 요청과 응답에 대한 상태를 확인할 수 있게 된다.
* 대표적 상태 코드
- 1xx (정보 응답): 요청을 처리 중인 상태. 예: 100 Continue.
- 2xx (성공 응답): 요청이 정상적으로 처리된 상태. 예: 200 OK.
- 3xx (리다이렉션): 요청을 다른 위치로 리다이렉션해야 하는 상태. 예: 301 Moved Permanently.
- 4xx (클라이언트 오류): 클라이언트 요청에 오류가 있는 상태. 예: 404 Not Found.
- 5xx (서버 오류): 서버에서 처리 중 오류가 발생한 상태. 예: 500 Internal Server Error.
6. 헤더
- HTTP 메시지에 정보를 넘길 때 즉, 요청과 응답에 추가적인 메타데이터를 전달할 때 사용이 된다.
- 메시지에 포함이 되어서 요청과 응답이 전달이 되게 된다.
예시로는
Content-Type : 응답 본문에 콘텐츠 유형
Authorization : 인증 정보
User-Agent : 클라이언트 애플리케이션 정보
7. URL
HTTP 요청에서 리소스를 찾기 위한 주소이다. URL은 프로토콜, 도메인, 경로, 쿼리 문자열 등으로 구성이 된다.
예시로는
[http://www.example.com/hello?search=query]
http : 프로토콜
[www.example.com] : 도메인
/hello : 리소스 경로
?search=query : 쿼리 문자열
결론
이러한 정보들을 통신 규약으로써 정해놓았고, 웹에서는 이러한 방법을 이용해서 정보를 주고 받을 수 있게 된다. 가장 핵심적인 HTTP는 통신 프로토콜이라는 점 그리고 클라이언트와 서버 두 가지를 나누어서 문서를 요청과 응답으로 받는다는 구조가 매우 핵심적인 내용이다.
'HTTP' 카테고리의 다른 글
[HTTP] 웹 탄생 배경 (0) | 2024.12.18 |
---|---|
[HTTP] WebSocket (1) | 2024.12.08 |