Http Protocol
Http 프로토콜에 대하여
HTTP(HyperText Transfer Protocol)는 WWW 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로HTML문서를 주고받는 데에 쓰인다. TCP와 UDP를 사용하며, 80번 포트를 사용한다.
1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었다.
HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다.
HTTP 프로토콜의 특징
(1) 비연결성(Connectionless) 프로토콜이다
비연결성은 클라이언트와 서버가 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 하고나면, 맺고 있었던 연결을 종료시키는 것을 말한다.
잦은 연결/해제에 따른 오버헤드를 줄이고자 HTTP1.1에서는 KeepAlive 속성을 사용할 수
있다.
(2) 상태가 없는(stateless)프로토콜이다.
비연결성으로 인해 서버는 클라이언트를 식별할 수가 없는 상황을 말한다.
(3) 일반적으로 TCP/IP 통신 위에서 동작 하면 기본포트는 80번이다.
HTTP 프로토콜을 이용한 통신 과정
- 접속(Connect)
- 요청(Request)
- 응답(Response)
- 닫기(Close)
HTTP 요청(응답) 메시지 구조
- Request Line
예) GET/restapi/v1.0 HTTP/1.1
- Status Line
예) HTTP/1.1 200 OK
- Header : 헤더정보를 의미함.
- Empty Line : 공백(빈줄)을 의미하고, Header와 Body를 분리 해주는 역할을 함.
- Body : 보내거나 받고자 하는 실제 데이터를 의미함.
- 메서드가 GET 등의 경우에는 요청시 Body부분 생략 가능함.
HTTP 요청 메서드
- GET : 이미 존재하는 자원(리소스)에 대해 요청함.
- POST : 새로운 자원(리소스)을 생성을 요청함.
- PUT : 이미 존재하는 자원(리소스)에 대한 변경을 요청함.
- DELETE : 이미 존재하는 자원(리소스)에 대해 삭제를 요청함.
- HEAD : 이미 존재하는 자원(리소스)에 대해 헤더정보만을 요청함.
- OPTIONS : 서버 옵션들을 확인하기 위한 요청. CORS에서 사용함.
- TRACE : 클라이언트가 보낸 요청을 그대로 반환함.
- CONNECT : 프록시 터널링을 위해 예약된 메서드.