HTTP 메시지는 위 그림과 같이 세 부분으로 이루어져 있다.
1) 메시지의 시작줄
메시지의 첫 줄은 다음과 같은 내용이 들어간다.
요청 메시지: 무엇을 해야하는가?
응답 메시지: 무슨 일이 일어나는가?
2) 메시지의 헤더
메시지의 헤더에는 다음과 같은 내용들이 들어간다.
우선 시작 줄 다음으로는 0개 이상의 헤더필드가 이어진다.
각 헤더필드는 쉬운 구문분석을 위해 콜론(:)으로 구분되어 있는 하나의 이름과 하나의 값으로 구성된다.
헤더 필드를 추가하려면 그저 한 줄을 더하면 된다. 헤더는 빈 줄로 끝난다.
3) 메시지의 본문
빈 줄 다음에는 어떤 종류의 데이터든 들어갈 수 있는 메시지의 본문이 필요에 따라 올 수 있다.
요청본문: 웹 서버로 데이터를 실어보낸다.
응답 본문: 클라이언트로 데이터 반환
시작줄 헤더와 달리(문자열,구조적) 본문은 임의의 이진 데이터를 포함 가능하다.
여기서 임의의 이진 데이터는 이미지, 비디오 등을 말한다. 물론 이진 데이터 뿐만 아니라 텍스트도 포함 가능하다.