HTTP란 Hypertext Transfer Protocol의 약자로, 웹에서 데이터를 주고받기 위한 프로토콜이다. 주로 웹 문서를 주고받기 위해 사용되며 모바일 앱, 게임 개발 등 다양한 목적으로 사용되기도 한다.
클라이언트는 요청의 목적에 따라 적절한 HTTP 메소드를 사용한다.
클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.
예를 들면, 우리가 특정 웹 사이트로 접속하면 서버에 GET 요청을 보내게 된다. 우리는 상태 코드를 통해 우리의 요청 결과를 응답 받을 수 있다. 요청을 받은 서버는 그 응답으로 HTML, JS, CSS등을 반환하며 웹 브라우저는 이를 화면에 출력하게 된다.
HTML 문서만이 HTTP 통신을 위한 유일한 정보 문서는 아니다.
Plain text로 부터 JSON 데이터 및 XML과 같은 형태의 정보도 주고 받을 수 있으며, 보통은 클라이언트가 어떤 정보를 HTML 형태로 받고 싶은지, JSON 형태로 받고 싶은지 명시해주는 경우가 많다.
HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
TCP/ IP를 이용하는 응용 프로토콜이다.
(컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜)
HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.(무상태성) -> 클라이언트는 HTTP로 서버에 연결한 뒤에 응답을 받으면 그 연결을 끊어버린다. 서버 입장에서는 접속 유지에 대한 요구가 적어 불특정 다수를 대상으로 하는 서비스에 적합하다.
ex) 상품확인 -> 장바구니 -> 결제의 과정이 시스템적으로 상태 정보로 기록되지 않는다.
(이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다.)
HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
Keep-alive 기능 지원