HTTP 기본4(HTTP 메시지)
'

요청 메시지와 응답 메시지는 위 사진과 같이 생겼다.

우선 먼저 HTTP 메시지 구조는 위 사진처럼 시작 라인이 있습니다. 그 다음에 헤더가 있고 그 다음으로는 공백이 있습니다. 마지막으로는 메시지 바디가 들어가있습니다.
HTTP 메시지 구조 옆에는 HTTP 요청 메시지와 응답 메시지에 해당하는 예시 사진인데요. 요청 메시지에는 메시지 바디가 없는걸로 확인할 수 있습니다. 혹시 보낼 데이터가 없으면 메시지 바디가 없어도 됩니다.
HTTP 응답 메시지는 시작라인이 다른걸로 확인할 수 있습니다. 시작 라인 처음에는 HTTP 버전이 나오고 요청한 클라이언트가 나온다. 그 다음에 헤더값이 들어옵니다. 무조건 공배라인이 필요하고 메시지 바디에는 필요한 응답 HTTP 메시지가 들어있습니다.

CRLF(Enter)는 공백 라인이라고 볼 수 있다.

우선 시작라인은 request 라인과 시작 라인으로 되어있는데요. 요청 메시지는 request-line이라고 합니다. request-line에는 처음에 메서드(get, post)를 넣고 그 다음에 두번째로는 request-target(요청하는 대상)이 있고 거기에는 path가 들어가있습니다. 그 다음으로는 HTTP 버전이 들어가있습니다.

먼저 이 HTTP 메서드는 GET, POST, PUT, DELETE등이 있는데요. 이것들은 서버가 수행해야할 동작을 지정하는 것입니다.

요번에는 요청 대상인데요. 요청 대상은 거의 절대 경로로 시작을 합니다. 절대 경로에 쿼리를 합쳐서 들어갑니다. 절대 경로 이용하는 방법 말고도 다른 방법들도 있습니다.

마지막으로는 HTTP 버전을 넣습니다.

start-line에서는 요청은 request-line이고 응답은 status-line입니다. status-line에는 처음에 HTTP 버전이 들어가고요. 그리고 중간마다 SP가 들어가있는 걸로 확인할 수 있는데 SP는 space라고 생각하면 됩니다. HTTP 버전 다음으로는 status-code가 들어가는데요. 이거는 상태 코드인데요. 이게 엄청 중요합니다. 이것은, 클라이언트가 보낸 요청이 성공을 했는지 실패를 했는지 나타나게 됩니다. 200은 보통 성공이고, 400은 클라이언트 요청 오류이고 500은 서버 내부에 장애가 생겨 오류가 뜨는 것입니다.

헤더 필드에는 field-name과 field-value가 있습니다.
그리고 중간마다 OWS가 있는데요 저거는 띄어쓰기를 허용한다는 뜻입니다. 띄어써도 되고 안 써도 됩니다.
근데 Host 띄우고 :(콜론)을 붙이는 것은 안된다.
참고로 field-name은 대소문자 구문(둘다 문법적으로 상관 없다라는 뜻)을 안한다.

HTTP 헤더에는 메시지 바디가 html인지 xml인지에 대한 설명도 들어가있고요. 메시지 바디에 관한 크기도 나와있습니다. 그리고 클라이언트에 관한 정보도 들어있습니다.

실제 전송할 데이터가 들어가 있습니다. 그게 이미지일수도 있고 영상일 수도 있고 HTML 문서일 수도 있습니다. byte로 포함된 모든 데이터가 전송이 가능합니다.
HTTP가 좋은 이유는 단순하다!