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쪽
'Java > Servlet' 카테고리의 다른 글
[Servlet] 03-1 | JDBC API와 JDBC 드라이버 (0) | 2024.05.02 |
---|---|
[Servlet] 02-2 | 서블릿의 라이프 사이클 (0) | 2024.05.02 |
[Servlet] 02-1 | WAS: Web Server와 서블릿 컨테이너 (0) | 2024.05.02 |
[Servlet] 01-3 | HTTP 응답 프로토콜 (0) | 2024.05.02 |
[Servlet] 01-2 | HTTP 요청 프로토콜 (0) | 2024.05.02 |