HTTP 메시지는 시작줄, 헤더블럭, 본문으로 이루어 진다.

각 줄은 캐리지 리턴(ASCII 13)과 개행문자 (ASCII 10)으로 구성된 줄바꿈 문자열로 끝난다. 이 줄바꿈 문자열은 'CRLF' 라고 쓴다.
HTTP 명세에 따르면 'CRLF' 줄바꿈을 사용하지만, 호환성을 위해 그냥 개행 문자도 받아들일수 있도록 되어야할 필요가 있다. (오래되거나 잘못 만들어진 HTTP 어플리케이션 중에는 그냥 개행 문자만 사용하는 것들도 간혹 있다)
본문(body)는 선택적이다. HTTP 바디는 이진 데이터도 포함할 수 있다.
요청 메시지의 형식은 다음과 같다.
<메서드> <요청URL> <버전>
<헤더>
<엔티티 본문>
응답 메시지의 형식은 다음과 같다.
<버전> <상태코드> <사유구절>
<헤더>
<엔티티 본문>
'GET', 'POST', 'HEAD' 와 같은 HTTP 메서드
리소스를 지칭하는 URL 구성요소다. 절대URL이 될수도 있고 상대URL이 될수도 있다. 상대URL이라면 호스트/포트가 자신을 가리키는 것으로 간주 된다.
HTTP/메서저.마이너 형식이다.
200, 404, 500 등의 상태코드
OK, INTERNAL SERVER ERROR등의 사유구절