이번 TIL은 인프런의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 학습하고, 정리한 내용입니다.
만약, 제 글의 내용을 퍼갈 시에는 " 모든 개발자를 위한 HTTP 웹 기본 지식 "도 출처에 첨부하시기 바랍니다.
지금은 모든 것을 HTTP로 보낼 수 있다. 바야흐로, HTTP의 시대라는 말이 맞을 것이다.
이 HTTP는 요청 메시지와 응답 메시지의 구조가 약간 다르다.
HTTP 메시지 구조에서 "공백"은 요청이든 응답이든 무조건 포함하고 있어야 한다.
전송할 데이터가 없다면, message body
부분은 공백으로 남기고 끝내면 된다.
요청 메시지와 응답 메시지는 "시작 라인"이 다르다.
=> CRLF
는 "엔터"를 의미한다.
시작 라인은 크게 request-line
과 status-line
으로 되어있다.
요청 메시지는 request-line
,
응답 메시지는 status-line
이라고 한다.
GET은 서버한테 해당 리소스를 달라고 하는 거다. POST는 이 리소스 줄테니까, 니가 처리해줘!! 라는 의미이다.
이런 기본적인 의미들을 달고 있다.
이런 HTTP 메서드가 진짜 중요하다!!
보통 "절대경로"로 시작한다. 절대경로에다가 쿼리를 합쳐가지고 들어간다.
참고로, *(에스터리스크)를 넣거나 전체 HTTP를 넣거나 하는 경우도 있다.
하지만, 우리는 "절대경로"로 시작한다 정도로만 이해해도 된다.
응답 메시지는 스타트 라인에서는 status-line이 들어간다.
이 시작 라인 중에서 상태 코드가 중요하다.
상태 코드 : 클라이언트가 보낸 요청의 성공과 실패 등의 상태를 나타낸다.
상태 코드 다음의 OK
는 200이라고만 하면, 사람이 직관적으로 이해할 수없기 때문에 사람이 이해할 수있는 짧은 글을 첨부한다라고 보면 된다.
OWS는 띄어써도 되고, 안 띄어써도 된다는 의미이다.
주의해야할 것은 HOST:SP
는 가능하지만 HOST(SP):
는 안된다.
또한, 필드 네임은 대소문자를 구분하지 않는다. 즉, HOST는 대문자이든 소문자이든 상관없다.
물론, 필드 네임 다음에 이어지는 필드 벨류는 대소문자를 구분한다!!
헤더는 메시지 바디 빼고 필요한 메타 데이터 정보가 다 들어있다.
ex)
- 요청 헤더
html이야?? xml이야??
메세지 바디의 크기와 압축 유무
인증 정보
요청 클라이언트의 정보 (크롬으로 요청했어??)
- 응답 헤더
서버 어플리케이션에 관한 정보
캐시 정보
=> 즉, 헤더에는 메세지 바디 뺴고, 필요한 정보가 다 들어있음!!
임의의 헤더를 추가할 수 있다.
그러나, 그 해더가 들어갈 것을 아는 클라이언트와 서버만 그것을 이해할 수있다.
"해더" 다음에 한 칸 띄우고, 메세지 바디가 들어간다.
byte로 표현 가능한 모든 데이터를 전송 가능하다.
그리고 압축해서 보내면, 압축된 내용이 위 이미지의 html 자리에 들어가게 된다.
기술이 항상 그런데... HTTP가 복잡하고 잘 만들어져서 성공했다기보다는... 항상 크게 성공하는 기술들은 단순하다.
단순하지만, 확장 가능한 기술이 대부분의 경우에 크게 성공한다!!