URL로 웹 페이지를 불러오는 과정을 간략히 알아보자

Heebeom·2023년 5월 21일
0

먼저 프로토콜을 판별한다.

우리가 사용하는 브라우저(Chorme, Firefox)는 웹 서버 액세스 뿐만 아니라, FTP, Mail 등 다양한 기능을 지원하는 Client Software이다.

그래서 브라우저에 사용하는 URL 또한 여러 용도(FTP, 웹 등)별로 분류해야 하는데, 이 때 URL의 맨 앞의 https:, mail:, ftp: 의 식별자를 활용한다.

이 때 식별자는 "어떻게 데이터에 접근하는지"를 알려주는 프로토콜(Protocol)인데, 웹 서버라면 http 프로토콜을 활용해 데이터에 접근한다는 의미이다.


브라우저가 URL를 해독한다.

이제 용도는 판별했으니, 어디 서버의 어떤 페이지에 액세스할지 알아야 한다.

이 때 브라우저는 먼저 URL을 [그림 1-2]처럼 각각의 요소로 분리한다. 분리한 요소에서www.lab.cyber.co.kr이 접속할 웹 서버가 되며, /dir1/file1.html이 엑세스할 페이지 파일의 경로가 된다. 즉, 위 URL은 'www.lab.cyber.co.kr' 웹 서버의, 'dir/file1.html' 파일에 액세스한단 의미다.

파일명은 생략할 수 있다.

사실 https://www.naver.com 처럼, 대부분의 웹 사이트에 접속할 때는 파일명을 생략하는 경우가 많다. 이는 미리 웹 서버에 'index.html'처럼 기본 경로를 설정해 놓은 경우이다. 아래와 같이 다양한 방법으로 파일명을 생략할 수 있다.

  1. 파일명만 생략한 경우 (www.naver.com/main)
    자동으로 하위 파일 중, 'index.html'이나 'default.html'을 실행한다.
  2. 디렉토리 자체를 생략한 경우 (http://www.naver.com)
    root 폴더의 'index.html'이나 'default.html'을 실행한다.
  3. 파일인지, 폴더인지 애매한 경우 (http://www.naver.com/index)
    index 파일이 있으면 파일을, index 폴더가 있으면 폴더로 인식한다.

HTTP 프로토콜의 기본 개념

http 프로토콜은 "Client와 Server간 메세지 내용과, 순서를 정한 규칙"이라고 생각하면 된다. 기본적인 개념은 다음과 같다.

클라이언트에서 서버를 향해 리퀘스트 메세지를 보낸다

리퀘스트 메세지 안에는 '무엇을', '어떻게 해서' 하겠다는 내용이 쓰여있으며, 자세한 내용은 다음과 같다.

  • 무엇을: URI(Uniform Resource Identifier)라고 하며, html 파일 등의 액세스 대상을 지정한다.
  • 어떻게: 메소드라고 하며, 웹 서버에 어떤 동작을 하고 싶은지 전달한다. (GET, POST)

또한 http 요청의 보충 정보를 나타나는 헤더 파일도 존재한다.

서버가 요청을 알맞게 처리하고, 회신한다.

메세지가 웹 서버에 도착하면, URI와 메소드를 파악한 후 알맞게 동작하고, 결과 데이터를 응답 메세지에 저장한다. 응답 메세지는 다음과 같은 요소로 이루어져있다.

  • 스테이터스 코드(Status Code): 실행 결과가 정상 종료되었는지, 이상이 발생했는지를 나타낸다. '404 Not Found'가 대표적인 스테이터스 코드이다.
  • 헤더 파일, 페이지의 데이터 등의 요청에 대한 결과 데이터

HTTP 메소드에 대하여

  • GET: 해당 URI의 '데이터를 읽으라'라는 의미로, GET 요청을 보내면 URI로 지정한 파일의 데이터를 반송한다.
  • POST: 'form'에 데이터를 사용해 웹 서버에 송신하는 경우에 사용한다. URI로 애플리케이션 프로그램을 지정하고, 데이터에 사용자가 입력한 값을 전달해 요청을 처리한다. (회원가입, 로그인 등)

HTTP 리퀘스트 메세지를 만든다

이제 브라우저는 URL를 해독해 웹 서버와 파일명을 파악했으니, 이것을 바탕으로 HTTP 리퀘스트 메세지를 만든다.

  • 리퀘스트 라인: 메소드, URI, HTTP 버전을 표시하며, 리퀘스트의 내용을 한번에 파악 가능
  • 메세지 헤더: 리퀘스트의 부가적인 정보를 나타내며, 행 수는 상황에 따라 달라짐
    (예: 날짜, 클라이언트가 취급하는 데이터 종류, 언어, 압축 형식 등)
  • 메세지 본문: 메세지 헤더와 한 칸 띄어 구분하며, 클라이언트에서 서버에 송신하는 데이터임
    (예: Form 데이터를 POST 메소드로 보낼 때)

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

응답 메세지의 기본적인 개념은 리퀘스트 메세지와 같지만, 첫 번째 라인이 다르다.

  • 스테이터스 라인: 실행 결과를 이해가 쉽도록 요약한 것으로, 숫자 코드인 스테이터스 코드와 자연어인 응답 문구로 이루어져 있다. 스테이터스 코드는 다음과 같다.
    • 1XX: 처리의 경과 상황 등을 통지한다.
    • 2XX: 정상 종료
    • 3XX: 무언가 다른 조치가 필요한 경우
    • 4XX: 클라이언트 측 오류
    • 5XX: 서버 측의 오류

리퀘스트 메세지는 한 번에 한개씩만 읽는다

리퀘스트 메세지의 URI는 한 개만 쓰므로, 파일을 한 개씩만 읽을 수 있다. 그래서 웹 페이지의 추가적인 미디어 파일이 있다면, 따로따로 요청을 보내야 한다.

그래서 아래와 같이 미디어를 포함하고 있는 웹 페이지를 만나면, 웹 브라우저는 추가로 웹 서버에 요청을 보낸다.

profile
이도저도 아닌 개발자

0개의 댓글