URI, URL, URN과 요청 흐름

박태현·2025년 4월 9일

Web & Network

목록 보기
3/6

1. URL

URI ? / URL ? / URN ?

URI 내부에 URL, URN이 포함되어 있음

URL은 URI이지만, 모든 URI가 URL인 것은 아님

URI (Uniform Resource Identifier)


Ex : https://example.com/user/1

Uniform : 리소스를 식별하는 통일된 방식

Resource : URI로 식별이 가능한 모든 종류의 자원

Idenrifier : 다른 항목과 구분하는 데 필요한 정보

즉, 자원을 식별하기 위한 포괄적인 개념으로 URL과 URN 모두를 포함하는 상위 개념 !

"자원이 어디 있는지( URL )" 또는 "무엇인지( URN )"를 식별할 수 있게 해줌

URL (Uniform Resource Locator)


Ex : https://www.gptonline.ai/ko/

Locator : 리소스가 있는 위치를 지정

즉, 자원의 위치를 알려주는 주소 ( 인터넷 상의 자원이 어디 있는지 알려주는 경로 )

프로토콜 + 경로 + 포트 등 포함되며, 사용자가 웹 브라우저에 입력하는 주소 대부분은 URL

URN (Uniform Resource Name)


Name : 리소스에 이름을 부여

위치는 변할 수 있지만 이름은 변하지 않음

URN이 이름으로 실제 리소스가 결과 나오는게 매핑 되어야 하는데 찾기가 어려움

즉, 자원의 고유 이름만을 식별 , 자원의 위치는 몰라도 이름으로만 구분할 수 있음

( DNS처럼 고정된 네임스페이스 )

URL과 URI의 차이점 ??


URI : 통합 자원 식별자로서 인터넷 상의 모든 자원을 식별하는 문자열 체계

즉, URI는 무엇인지를 식별하는 고유한 이름

URL : 자원의 위치까지 포함한 URI

즉, 인터넷 상의 자원에 어떻게 접근할지 ( 주소 + 방법 )을 명시

+) URI의 하위 개념으로서 프로토콜 + 도메인 + 경로로 구성됨

즉, URI는 자원을 식별하는 고유한 식별자이고, URL은 그 자원이 어디에 있는지(위치)까지 알려주는 URI

URI 전체 문법


💡 scheme://[userinfo@]host[:port][/path][?query][#fragment]

https://www.google.com:443/search?q=hello&hl=ko

[ https://호스트명(사이트명)+포트+경로+쿼리 ] 형태로 거의 구성됨

  • scheme 주로  프로토콜 사용, 어떤 방식으로 자원에 접근할 것인가 하는 클라이언트와 서버 간의 약속 규칙이라고 보면 됨 http : 80 / https : 443 / ftp : 20, 21 을 주로 사용 ( https는 http에 강력한 보안이 추가로 적용된거임 → HTTP Secure )
  • userinfo URL에 사용자정보를 포함해서 인증해야 할 때 있는데 거의 사용하지 않음
  • host 호스트명이라고 함 보통 도메인명이나 IP 주소를 직접 사용 가능
  • port 접속 포트로서 일반적은 웹 브라우저에서는 생략을 많이 하지만 특정 서버에 따로 접근 할 때는 port를 입력을 함
  • path

    /home/file1.jpg => home 이라는 경로에 file1.jpg가 있음을 의미

    /members => 회원들에 대한 정보를 보여주는 경로

    /members/100, /items/iphone12 => 100번의 회원의 정보, 아이템 중에 아이폰12 정보 경로

    → 리소스가 있는 경로이자 계층 구조로 이루어져 있음

  • query

    ?keyA=valueA&keyB=valueB

    key와 value 형태로 데이터가 들어가 있음 query는 ?로 시작하고 &로 추가적으로 query string를 입력한다. 숫자를 적어도 다 문자 형태로 넘긴다 해서 query string이라고 부름

웹 브라우저 요청 흐름


웹 브라우저가 어떻게 동작을 할까 ?

  1. URL을 입력
  2. DNS 서버로 IP를 찾아내고 생략된 PORT는 scheme 로 찾아냄
  3. 웹 브라우저가 HTTP 요청 메시지를 생성함

  1. SOCKET 라이브러리를 통해서 TCP/IP로 IP와 PORT 정보 찾은 것을 3 way handshake 방식으로 서버랑 연결
  2. HTTP 요청 메시지는 OS에 있는 TCP/IP 계층으로 전달
  3. TCP/IP 계층에서 HTTP 요청 메시지에 패킷으로 감쌈

  1. 웹 브라우저가 만든 요청 패킷을 서버에서 도착하면 패킷을 열어서 HTTP 요청 메시지를 확인해서 서버가 해석

  1. 서버가 HTTP 응답 메시지를 만들어서 TCP/IP 패킷을 감싸서 클라이언트에게 도착하면 패킷을 열어서 HTTP 응답 메시지를 확인해서 클라이언트가 해석

  1. 웹 브라우저가 HTML 렌더링을 해서 클라이언트가 HTML 결과를 볼 수 있음
profile
꾸준하게

0개의 댓글