본문 바로가기

[Servlet] 01-1 | HTTP 프로토콜의 개념과 특징

HTTP 프로토콜 (HyperText Transfer Protocol)은 우리가 매일 접속하는 웹 사이트들의 URL 주소에서 만날 수 있기 때문에 낯설지 않을 것입니다. 최근에는 HTTP보다 보안이 강화된 HTTPS 프로토콜이 많이 사용되고 있기는 하지만요.

01. HTTP 개념

웹 애플리케이션이 서비스되는 과정은 곧 웹 서비스를 제공하는 웹 서버와 웹 서비스를 제공받는 웹 클라이언트가 메시지를 주고받는 과정이라고 할 수 있습니다.

웹 클라이언트란 일반적으로 사용자가 PC에서 사이트에 접속하기 위해 사용하는 브라우저(크롬, 인터넷 익스플로러, 사파리 등)를 의미합니다. 웹 서버 컴퓨터란 개발자가 작성한 웹 애플리케이션이 위치한 컴퓨터를 의미합니다.

 

웹 클라이언트(브라우저)는 웹 서버로 요청(예: 홈페이지 화면 요청, 로그인 요청, 글 수정 요청 등) 메시지를 보냅니다. 웹 서버는 웹 클라이언트에게서 받은 요청을 적절하게 처리한 후에 그 결과를 응답 메시지에 담아 다시 웹 클라이언트에게 돌려보냅니다.

이렇게 웹 애플리케이션이 서비스되는 동안 웹 서버와 웹 클라이언트는 통신을 해야 하는데 정확한 통신을 위해서는 정보를 일정한 형식으로 주고받을 필요가 있습니다. 이를 위해서 사용하는 통신 규약이 HTTP 프로토콜입니다.

 

1996년 HTTP/1.0이 발표되었고, 1999년 HTTP/1.1이 등장했습니다.

02. HTTP 특징

(1) 비연결성(connectionless)

브라우저와 서버는 항상 연결되어 있다고 생각하기 쉽지만, 사실은 그 반대입니다. 브라우저가 서버에 요청을 보내는 순간 둘은 잠깐 연결되었다가 브라우저가 서버의 응답을 받자마자 둘의 연결이 끊어집니다.

웹에서는 다수의 브라우저가 서버와 통신하기 때문에 브라우저와 서버가 지속적으로 연결된 상태를 유지하게 되면 문제가 될 것입니다.

(2) 무상태(stateless)
웹 서버가 웹 클라이언트의 상태 정보(예: 로그인 여부, 비회원의 장바구니 목록 등)를 저장하고 있다고 생각하기도 쉽습니다. 하지만 이것도 사실이 아닙니다. 

상태 정보 유지란 웹 서버가 웹 브라우저로부터 전송받은 데이터를 유지하면서 사용자가 원하는 작업을 처리하는 것을 말합니다. HTTP 프로토콜로 통신하는 웹 서버는 기본적으로 웹 클라이언트의 상태 정보를 유지하지 않습니다. 대신 상태 정보 유지가 필요한 작업에 대해서는 쿠키(cookie)나 세션(session)을 이용합니다.


참고 자료

도서

- 채규태, <02장. HTTP 프로토콜과 요청 방식>, <<채쌤의 Servlet&JSP 프로그래밍 핵심>>, 쌤즈, 2022년, 29~54쪽