[HTTP] URI와 웹 브라우저 요청 흐름

URI (Uniform Resource Identifier)

우선 URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다. 

그림을 보고 설명을 해보면, URI라는 가장 큰 개념이 있고 그 안에 크게 평소에 많이 들어봤을 URL(리소스의 위치)URN(리소스의 이름)이 있다. 

 

URL과 URN은 다음과 같이 생겼다. 

URL은 보다시피 우리가 흔히 인터넷에서 사용하는 형식이고, URN은 단순히 이름을 부여해 놓은 것이다. 그래서 URN은 거의 사용하지 않는다. 

 

그럼 돌아와서 URI의 뜻에 대해 살펴보면

  • Uniform : 리소스를 식별하는 통일된 방식
  • Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)
  • Identifier : 다른 항목과 구분하는데 필요한 정보

그래서 URL리소스가 있는 위치를 지정하는 것이고, URN리소스에 이름을 부여하는 것이다. 리소스의 위치는 변할 수 있지만, 이름은 변하지 않는다. URN 이름만으로 실제 리소스를 찾을 수 있는 방법은 보편화되어있지 않다. 

 

URL 문법

그럼 실제 URL을 보고 어떻게 이루어져 있는지 분석해보자. 

URL 형식은 이렇다.

scheme://[userinfo@]host[:port][/path][?query][#fragment]
  • scheme : 보통 http와 같은 프로토콜 정보가 들어간다. http는 80 포트, https는 443 포트를 주로 사용하는데, 이는 생략이 가능하다.
  • [userinfo@] : URL에 사용자 정보를 포함에서 인증할 때 사용하지만, 거의 사용하지 않는다. 
  • host : 호스트명으로 도메인 명이IP 주소를 직접 사용할 수 있다.
  • [:Port] : 포트 번호로, 접속 포트를 나타내고 일반적으로 생략하고, 생략 시 http는 80, https는 443 포트이다. 
  • [/path] : 리소스가 있는 경로. 계층적 구조로 되어 있다. 예를 들어, /home/file.jpg
  • [?query] : Key=Value의 형태로 데이터가 들어간다. ?로 시작하고, &로 파라미터를 추가할 수 있다. 예를 들면,
    ?KeyA=valueA&KeyB=valueB 와 같이 사용 가능하다.  웹서버에 제공하는 파라미터, 문자 형태이기 때문에 보통 query parameter, query string으로 불린다.
  • [#fragment] : html 내부 북마크 등에 사용된다. 서버에 전송하는 정보는 아니다. 

웹 브라우저의 요청 흐름

위의 URL을 전송하는 상황을 살펴보자.

DNS를 조회해 IP 주소를 받고, Port 번호가 생략되어있으므로 443번일 것이다(https). 이 정보를 바탕으로 http 요청 메시지를 생성한다. 

간단하게는 이와 같은 메시지를 전송한다.

웹 브라우저가 먼저 HTTP 메시지를 생성한다. 그리고 Socket 라이브러리를 통해 TCP/IP로 이를 전달하고 TCP/IP 패킷을 만들어 전송한다. 최종적으로는 이와 같은 패킷을 전송하는 것이다.

이 패킷을 인터넷 망으로 던지면 수많은 인터넷 노드를 거쳐 해당 목적지 주소에 전달이 될 것이다. 이를 받은 서버는 HTTP 메시지만 추출하여 내용을 확인하고 해당하는 데이터를 응답 메시지와 함께 전달한다.

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 메서드  (0) 2023.01.13
[HTTP] HTTP 기본  (0) 2022.08.10
[HTTP] 인터넷 네트워크  (2) 2022.08.04