• 01. 리퀘스트 메시지를 작성한다

    2021. 9. 25.

    by. ahntree

    728x90

    1. 탐험 여행은 URL 입력부터 시작한다

    흔히 URL(Uniform Resource Locator)http://로 시작하는 것으로 생각한다. 하지만 URL은 그 밖에도 ftp:, mailto: 등 여러 문자로 시작할 수 있다. 이처럼 다양한 형태의 URL이 있는 이유가 있다.

     

    브라우저를 웹 서버에 엑세스하는 클라이언트로 사용하는 경우가 많지만, 브라우저의 기능은 그 밖에도 파일을 다운로드/업로드하는 FTP의 클라이언트 기능, 메일의 클라이언트 기능 등을 가지고 있다. 브라우저는 몇 개의 클라이언트 기능을 겸비한 복합적인 클라이언트 소프트웨어 라고 할 수 있다.

     

    URL의 시작 문자열이 무엇인지에 따라 어떤 기능을 사용할 것인지가 결정된다.

     

     

    URL의 종류

    아래는 URL의 종류를 나타낸다. 공통점이 있다면 맨 앞의 문자열을 통해 어떤 프로토콜이 사용되었는지 나타낸다는 것이다.

     

    URL의 종류

     

     

     

    2. 브라우저는 먼저 URL을 해독한다

    브라우저가 처음 하는 일은 리퀘스트 메시지를 작성하기 위해 URL을 해독하는 것이다.

     

    URL의 요소와 예시

     

    (a)는 URL의 구성 요소를 나타낸 것이다. (b)와 같은 URL을 (a)의 나타낸 각 구성 요소로 분해하고 해독한다. 예를 들어 (b)는 www.lab.cyber.co.kr이라는 웹 서버에 있는 dir1 디렉토리에 있는 file1.html 파일에 엑세스한다는 의미이다.

     

     

     

    3. 파일명을 생략한 경우

    파일명을 생략한 경우에는 서버측에서 설정해둔 파일을 엑세스한다. 보통 index.html이나 default.htm 등으로 설정한다. 끝에 /가 있는 경우에는 무조건 디렉토리로 인식하지만 /가 없을 경우에는 둘 중에 존재하는 것으로 인식한다. 같은 이름을 가진 파일과 디렉토리가 동시에 존재할 수는 없기 때문이다.

     

     

     

    4. HTTP의 기본 개념

    HTTP 프로토콜은 클라이언트와 서버가 주고받는 메시지의 순서나 내용을 정한 것이다. 먼저 클라이언트에서 서버를 향해 리퀘스트 메시지를 보낸다. 메시지 안에는 무엇을, 어떻게 해서 하겠다는 내용이 담겨 있다.

     

     

    무엇을 - URI

    무엇을에 해당하는 것이 URI(Uniform Resource Identifier) 이다. 보통 페이지 데이터를 저장한 파일의 이름이나 CGI 프로그램의 파일명을 쓴다. 상대 경로와 비슷하게 /dir1/file1.html, /dir1/program1.cgi 와 같은 방식으로 작성하는데 http로 시작하는 URL을 사용할 수도 있다. 즉, 다양한 엑세스 대상을 쓰는 것이 가능하다.

     

     

    어떻게 - 메소드

     

    HTTP 메서드 종류

     

     

     

    5. HTTP 리퀘스트 메시지를 만든다

    리퀘스트 메시지는 3가지 영역으로 구분된다.

     

     

    리퀘스트 라인

    리퀘스트 메시지의 첫 번째 행이다. 메소드 - 공백 - URI - 공백 - HTTP 버전 이렇게 이루어져 있다.

     

     

    메시지 헤더

    두 번째 행부터 이어진다. 리퀘스트 라인으로 메시지의 모든 정보를 나타낼 수 없기 때문에 부가 정보들을 헤더에 담는다.

     

     

    메시지 본문

    메시지 헤더가 끝나면 공백 행을 하나 넣고 메시지 본문을 넣는다. GET의 경우에는 본문이 필요없다. 설사 있더라도 무시될 가능성이 크다.

     

     

     

    6. 리퀘스트 메시지를 보내면 응답이 되돌아온다

    응답 메시지도 리퀘스트 메시지와 형식이 비슷하지만 첫 번째 행이 다르다. 응답 메시지의 첫 번째 행은 HTTP 버전 - 공백 - 상태코드 - 공백 - 상태코드 메시지로 이루어져 있다.

     

    응답으로 받은 html을 파싱하다가 img, video 등의 태그를 만나면 각 파일을 읽어오는 작업이 추가적으로 필요하다. 파일을 요청하는 리퀘스트 메시지를 추가적으로 보내는 것이다.

     

     

     

    728x90

    댓글