본문 바로가기

Infrastructure/Network

[URI] URI와 WebBrowser

URI가 무엇인지 또 어떤 종류가 있는지 알아본다.
WebBrowser가 URI를 통해서 어떤 방식으로 통신하는지 알아본다.

  1. URI(Uniform Resource Identifier, 통합 자원 식별자)
    우편물의 주소같은 역할을 하며 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다.
    URI는 URL, URN 두 가지의 형태가 있다.

  2. URL(Uniform Resource Locator, 통합 자원 지시자)
    서버의 한 리소스에 대한 구체적인 위치를 표현한다.
    URL은 리소스의 정확한 위치와 접근 가능 유무를 알려준다.
    일반적으로 많이 접하는 google.com, naver.com이 URL이다.

  3. URN(Uniform Resource name, 통합 자원 이름)
    서버의 한 리소스에 대해 고유한 이름을 부여한다.
    위치가 아닌 고유한 이름을 부여하기 때문에 URL과 달리 리소스의 위치가 변하더라도 문제없이 작동한다.

이번 글에서는 범용적으로 사용되는 URL에 대해서 살펴본다.

URL 전체 문법

하나씩 자세하게 살펴보도록 한다.

  • scheme

    • 주로 어떠한 프로토콜을 사용하여 접속할 것인지 구분하는 용도로 사용한다.
    • schema에 사용되는 프로토콜은 어떠한 방식으로 자원에 접근할 것인지 약속하는 통신 규약이다.
    • 예) http, https, ssh...
    • http는 80, https는 443 포트를 주로 사용하며 포트는 생략이 가능하다.
  • userinfo

    • URL에 사용자 정보를 포함하여 인증하는 방식
    • 거의 사용되지 않는 인증방식
  • host

    • 호스트명
    • 도메인명 또는 IP 주소를 직접 입력 가능
  • path

    • 구체적인 리소스의 경로(path)이며 계층적 구조를 가진다.
  • query

    • key=value 형태로 이루어져있다.
    • ?로 시작하며, &로 추가하여 여러 key=value 쌍이 입력가능하다.
    • query parameter, query string 등으로 불린다.
  • fragment

    • html 내부 북마크 등에 사용된다.
    • 서버에 전송하는 데이터가 아니다.

실제 네이버 뉴스의 URL을 한번 분석해보자.

https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=102&oid=025&aid=0003111935

  • protocol: https
  • host: news.naver.com (네이버 뉴스는 호스트를 따로 따는가보다)
  • path: /main/read.nhn
  • query:
    • model=LSD
    • mid=shm
    • sid1=102
    • oid=025
    • aid=0003111935

웹 브라이저 요청 흐름

사용자가 아래와 같은 URL을 브라우저에 입력하였을 때 어떤 흐름으로 네이버에 요청이 전달되는지 살펴본다.

https://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=102&oid=025&aid=0003111935

1) Application Layer의 브라우저가 HTTP 메시지를 생성하고 SOCKET 라이브러리를 통해 전달한다. 생성되는 HTTP 메시지는 아래와 같다.

GET /main/read.nhn?mode=LSD&mid=shm&sid1=102&oid=025&aid=0003111935 HTTP/1.1
Host: news.naver.com
공백 라인(CRLF)

2) Transport Layer에서 TCP/IP 패킷이 생성되고 패킷내에 HTTP 메시지가 포함된다.

3) DataLink Layer, Physical Layer를 통해 생성된 패킷이 서버에 전달된다.

4) 서버는 HTTP 요청에 대한 HTTP 응답 메시지를 Return 한다. 생성되는 HTTP 응답 메시지는 아래와 같다.

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
공백 라인(CRLF)
<html><body>...</body></html>

5) 브라우저는 응답 메시지의 HTML을 화면에 렌더링 한다.

'Infrastructure > Network' 카테고리의 다른 글

[HTTP] 메서드 - 2 (종류)  (0) 2021.06.23
[HTTP] 메서드 - 1 (API URI 설계)  (0) 2021.06.23
[HTTP] 메시지 구조  (0) 2021.06.23
[HTTP] 기본  (0) 2021.06.22
[Protocol] 인터넷 통신  (0) 2021.06.21