이 글은 성공과 실패를 결정하는 1% 네트워크 원리 책을 읽고 정리한 글입니다!
URL을 브라우저에 입력하면
브라우저는 결정된 규칙에 따라 URL의 의미를 조사한 후
그 의미에 따라 리퀘스트 메시지를 만든다.
이 예의 경우 samplel, hum이라는 파일에 저장된 페이지의 데이터를 주십시오."라는 의미의 리퀘스트 메시지를 안들고, 이것을 웹 서버에 보낸다.
브라우저는 웹 서버에 액세스하는 클라이언트로 사용하는 경우가 많지만, 브라우저의 기능을 그뿐만 아니라, 파일을 다운로드/업로드 하는 FTP의 클라이언트 기능이나 메일의 클라이언트 기능도 가지고 있다.
즉, 몇 개가 있는 기능 중의 어느 것을 사용하여 데이터에 액세스하면 좋을 것인지 판단하는 재료가 필요하므로, 웹 서버에 액세스할 때 여러 종류의 URL이 준비되어 있는 것
액세스의 대상
에 따라 다르다.
- 웹 서버, FTP 서버에 액세스 하는 경우, 서버의 도메인명이나 액세스하는 파일의 경로명 등을 URL에 포함시킴
- 필요에 따라 사용자명이나 패스워드, 서버 측 포트번호 등을 쓸 수 도 있음
URL의 맨 앞에 있는 문자열, 즉 http; ftp; file; mailto;라는 부분에서 액세스하는 방법
을 나타낸다는 점
즉, 액세스할 때의 프로토콜 종류가 쓰여져 있다고 생각하면
브라우저가 가장 먼저 하는 일은 URL을 해독하는 것이다.
브라우저가 처음에 하는 일을 웹 서버에 보내는 리퀘스트의 메세지를 작성하기 위해 이 URL을 해독하는 것
http://www.lab.cyber.co.kr/dir/
끝이 /로 끝난 것은 /dir/의 다음에 써야 할 파일명을 쓰지 않고 생략한다는 것
다만, 파일명을 쓰지 않으면, 어느 파일에 액세스해야 할지 모르니, 파일명을 생략할 때 대비하여 파일명을 미리 서버측에 설정해 둔다.
http://www.lab.cyber.co.kr
끝의 /까지 생략되기도 하는데, 경로명이 아무 것도 없는 경우에는 루트 디렉토리의 아래에 있는 미리 설정된 파일명의 파일을 액세스하면 혼란이 없다.
다만, 아래와 같은 예는 미묘하다.
http://www.lab.cyber.co.kr/whatisthis
whatisthis를 파일명과 결부시키지 않는 쪽이 좋을 수도 있다. 그래서 이 경우는 웹 서버에 'whatisthis'라는 파일이 있으면 whatisthis를 파일명으로 보고, 'whatisthis' 라는 디렉토리가 있으면 whatisthis를 디렉토리명으로 본다는 것
URL을 해독하면 어디에 액세스해야 하는지가 판명
브라우저는 HTTP 프로토콜을 사용하여 웹 서버에 액세스하는데, HTTP 프로토콜의 의미
리퀘스트 메세지
를 보냄다양항 액세스 대상을 쓸 수 있으며, 액세스 대상을 통칭하는 말
- 보통 페이지 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명을 URI로 씀
HTTP 메세지 쓰는 방법 =
포맷
에 맞게 브라우저는 리퀘스트 메세지를 만듦
URL을 해독하고 웹 서버와 파일명을 판단하면 브라우저는 이것을 바탕으로 HTTP의 리퀘스트 메세지를 만든다.
메서드
가 가장 중요한 것으로 이것을 통해 웹 브라우저는 웹 서버에 어떻게 할 것인지를 전달<메소드><공백><URI><공백><HTTP 버전>
<필드명>:<필드값>
.
.
.
<공백 행>
POST 메서드
로 웹 서버에 보낼 때 등의 데이터가 들어감<메세지 본문>
<HTTP 버전> <공백> <스테이터스 코드> <공백> <응답 문구>
GET인 경우
에는 메소드와 URI만으로 웹 서버가 무엇을 할 지 판단할 수 있으므로 메세지 본문에 쓰는 송신 데이터는 아무것도 없다.데이터
등을 메세지 본문 부분에 씀리퀘스트의 실행 결과
를 나타내는 스테이터스 코드와 응답 문구를 첫 번째 행에 써야 함실행 결과
를 알려주는 것이 목적응답 메시지가 되돌아오면, 그때부터 데이터를 추출한 후 화면에 표시하여 웹 페이지를 눈으로 볼 수 있다. 하지만, 페이지가 문장으로만 되어 있으면 이것으로 끝이지만, 영상 등이 포함되어 있는 경우에는 계속 내용이 있다.
문장 안에 영상 파일을 나타내는 html의 제어 정보, 태그
가 포함되어 있으며, 브라우저는 화면에 문장을 표시할 때 태그를 탐색한다.
리퀘스트 메세지에 쓰는 URI는 한 개만으로 결정되어 있으므로 파일을 한 번에 한 개씩만 읽을 수 있기 때문에 파일을 따로 읽어야 한다.
즉, 한 문장에 3개의 영상이 포함되어 있다면 총 4회의 리퀘스트 메세지를 웹 서버에 보낸다.
웹 서버
는 4회의 리퀘스트가 한 개의 페이지인지, 아니면 각각 별도의 페이지인지는 신경쓰지 않고, 단순히 한 개의 리퀘스트에 대해 한 개의 응답을 돌려보낼 뿐이다!