HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고받기 위한 기초적인 통신 규약이다. 주로 웹 브라우저와 웹 서버 사이에서 하이퍼텍스트 문서를 전송하기 위해 설계되었으며, 오늘날에는 이미지, 동영상, JSON 등 다양한 형태의 데이터를 전송하는 데 널리 쓰인다. 이는 OSI 7계층 중 애플리케이션 계층의 프로토콜로, 하위 계층인 TCP/IP 위에서 동작하는 것이 일반적이다. 클라이언트가 서버에 요청(Request)을 보내면 서버가 이에 응답(Response)하는 클라이언트-서버 모델을 기반으로 한다.
1989년 팀 버너스리가 처음 제안한 이후 HTTP는 지속적으로 발전해 왔다. 초기 HTTP/0.9는 단순한 텍스트 전송에 그쳤으나, 1999년에 표준화된 HTTP/1.1은 연결 유지(Keep-alive) 기능과 파이프라이닝을 도입하여 효율성을 높였다. 이후 2015년에 발표된 HTTP/2는 멀티플렉싱 기술을 통해 하나의 연결로 여러 요청을 동시에 처리하며 전송 속도를 대폭 개선했다. 최근에는 UDP를 기반으로 하는 QUIC 프로토콜을 사용하는 HTTP/3가 등장하여 연결 설정 시간을 단축하고 네트워크 환경 변화에 유연하게 대응하고 있다.
HTTP 통신은 특정한 구조를 갖춘 메시지를 통해 이루어진다. 요청 메시지에는 GET, POST, PUT, DELETE와 같은 메서드가 포함되어 수행할 작업의 종류를 명시한다. 서버는 처리 결과에 따라 세 자리 숫자로 된 상태 코드(Status Code)를 반환한다. 예를 들어 200번대는 요청 성공, 404번대는 리소스를 찾을 수 없음, 500번대는 서버 내부 오류를 의미한다. 메시지 헤더(Header) 영역에는 데이터 형식, 크기, 인증 정보 등의 메타데이터가 담기며, 본문(Body)에는 실제 전송하고자 하는 데이터 내용이 포함된다.
HTTP의 주요 특징 중 하나는 상태를 유지하지 않는 스테이트리스(Stateless) 성격이다. 서버는 이전의 요청이나 연결 상태를 기억하지 않으며, 각 요청을 독립적인 것으로 처리한다. 이러한 특성은 서버의 부담을 줄이고 확장을 용이하게 하지만, 로그인 상태 유지와 같이 연속적인 사용자 정보가 필요한 서비스 구현에는 한계가 있다. 이를 보완하기 위해 브라우저에 정보를 저장하는 쿠키(Cookie)나 서버에서 상태를 관리하는 세션(Session), 혹은 웹 토큰(JWT)과 같은 별도의 기술을 병행하여 사용한다.
전통적인 HTTP는 평문 데이터를 전송하기 때문에 제3자가 통신 내용을 가로채거나 위조하기 쉽다는 보안상 취약점이 있다. 이를 해결하기 위해 등장한 것이 HTTPS(HTTP Secure)이다. HTTPS는 HTTP에 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 암호화 프로토콜을 결합한 형태이다. 이를 통해 클라이언트와 서버 사이의 데이터를 암호화하여 전송함으로써 개인정보 유출을 방지하고, 인증서를 통해 접속한 서버가 신뢰할 수 있는 대상임을 증명한다. 오늘날 대부분의 웹 서비스는 보안을 위해 HTTPS를 표준으로 채택하고 있다.