HTTP(HyperText Transfer Protocol)란?
HTTP는 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 계층의 최상단인 Application Layer에 해당하며, Client-Server 모델을 바탕으로 서버는 클라이언트에게 데이터를 제공한다. 즉, 사용자(클라이언트)가 서버에 데이터를 요청하면 서버에서 데이터를 제공해 주는 것이다. 여기서는 HTTP에 대한 자세한 내용보다는 HTTP에 대한 전반적인 이해를 하는 것을 목표로 한다.
- 프로토콜(Protocol) : 웹 상에서 정보를 주고받기 위한 약속/규약
- 클라이언트(Client) : 정보를 요청하는 컴퓨터
- 서버(Server) : 정보를 제공하는 컴퓨터
HTTP 동작
사용자가 브라우저를 통해 URL을 통하거나 다른 것을 통해 요청(Request)하면 서버는 해당 요청사항에 맞는 결과를 사용자에게 응답(Response)하는 형태로 동작한다.
- 요청(Request) : Client -> Server
- 응답(Response) : Server -> Client
- 클라이언트가 서버에게 정보 요청
- 서버가 요청에 대한 작업 수행
- 수행한 작업의 결과를 클라이언트에게 응답
요청 메시지(Request Message)
HTTP 요청 메시지는 클라이언트가 서버에게 보내는 메시지로 공백을 제외하고 3개의 부분으로 나누어진다.
- Start(Request) Line : Method, Target(URL), HTTP version으로 구성
- Header lines : 요청에 대한 추가 정보(Host, User-Agent 등)를 담고 있는 부분
- Body : 전송하는 데이터를 담고 있는 부분, 전송하는 데이터가 없다면 비어 있음
요청 메서드(Request Method)
요청 메시지에 사용되는 Method 유형을 알아보자. Method에는 GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT 총 8개가 존재하며, 주로 사용하는 메서드는 5가지이다.
- GET : 리소스 조회
- POST : 데이터 추가, 등록
- DELETE : 리소스 삭제
- PUT : 리소스 대체/수정, 해당 리소스가 없으면 생성
- PATCH : 리소스 부분 변경/수정
응답 메시지(Response Message)
HTTP 응답 메시지는 서버가 클라이언트에게 보내는 메시지로 공백을 제외하고 3개의 부분으로 나누어진다.
- Status Line : HTTP version, Status Code, Status Text로 구성
- Headers : 요청에 대한 추가 정보(Server 등)를 담고 있는 부분
- Body : 전송하는 데이터를 담고 있는 부분, 전송하는 데이터가 없다면 비어 있음
응답 상태 코드(Response Status Code)
상태 코드는 3자리 숫자로 이루어져 있다. 종종 웹 사이트에 접속할 때, 404 Not Found 혹은 403 Forbidden 등의 상태 코드를 본 적이 있을 것이다. 여기서 404와 403이 상태 코드에 해당하며, 다양한 상태 코드가 존재한다.
- 1XX(조건부 응답) : 요청을 받았으며, 작업을 지속함
- 2XX(성공) : 클라이언트가 요청한 동작을 성공적으로 처리
- 3XX(리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작이 필요
- 4XX(요청 오류) : 클라이언트에 오류가 있다는 것을 나타냄
- 5XX(서버 오류): 서버가 유효한 요청을 수행하지 못했다는 것을 나타냄
예를 들어 우리가 네이버(https://www.naver.com)에 접속할 때, 정상적으로 페이지를 제공받는 것은 HTTP 요청을 통해 2XX 상태 코드와 함께 데이터를 수신했기 때문이다.
참고링크
HTTP란 무엇인가?
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
[간단정리] HTTP Request/Response 구조
https://hahahoho5915.tistory.com/62#google_vignette
[WEB] HTTP Method란?
https://youwjune.tistory.com/42
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 프록시(Proxy)의 개념과 방식 (0) | 2024.11.18 |
---|