브라우저의 동작
- 브라우저가 처음 하는 일은 웹 서버에 보내는 리퀘스트의 메시지를 작성하기 위해 URL를 해독합니다.
- URL의 맨마지막에 디렉토리인지 파일명인지 모를 때에는 브라우저가 같은 파일명이 있는지, 디렉토리명이 있는지 확인합니다.
HTTP 프로토콜
- 클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 것
- HTTP 프로토콜로 통신 하는 순서
- 클라이언트에서 서버를 향해 리퀘스트 메시지를 보냅니다. 리퀘스트 메시지에서는 '무엇을', '어떻게 해서'하겠다는 내용이 쓰여있습니다.
- '무엇을' -> URI, '어떻게 해서' -> 메소드(GET, POST 등), 추가로 헤더 파일이 존재
- 리퀘스트 메시지가 웹 서버에 도착하면 웹 서버는 그 속에 쓰여있는 내용을 해독합니다.
- URI와 메시지를 조사하여 '무엇을', '어떻게 하는지' 판단한 후 요구에 따라 동작하고, 결과 데이터를 응답 메시지에 저장합니다.
- 응답 메시지의 맨 앞 부분에는 실행 결과가 정상 종료되었는지 또는 이상이 발생했는지를 나타내는 스테이터스 코드(200, 404 등)가 있습니다.
- 헤더 파일과 페이지의 데이터가 이어지고, 응답 메시지를 클라이언트에 반송합니다.
- 클라이언트에 도착하면 브라우저가 메시지의 안에서 데이터를 추출하여 화면에 표시하면서 HTTP의 동작은 끝납니다.
리퀘스트 메시지
- 리퀘스트 라인, 메시지 헤더, 메시지 본문으로 나눠져 있다.
- 리퀘스트 라인에는 메소드와 URI, HTTP 버전이 쓰여있습니다.
- GET의 경우 리퀘스트 라인의 메소드와 URI만으로 웹 서버가 무엇을 할지 판단할 수 있으므로 메시지 본문에 쓰는 송신 데이터는 아무 것도 없습니다. 따라서 메시지 헤더가 끝난 곳에서 메시지가 끝납니다.
- POST의 경우에는 폼에 입력한 데이터 등을 메시지 본문 부분에 씁니다. 이로써 리퀘스트 메시지 작성 동작이 완료됩니다.
- 리퀘스트 메시지에 쓰는 URI는 한 개만으로 결정되어 있으므로 파일을 한 번에 한 개씩만 읽을 수 있기 때문에 파일을 따로따로 읽어야 합니다. 예를 들어 한 문장에 3개의 영상이 포함되어 있다면 문장 파일을 읽는 리퀘스트와 영상 파일을 읽는 리퀘스트로, 총 4회 리퀘스트 메시지를 웹 서버에 보냅니다.