본문 바로가기
cs/컴퓨터 네트워크

URI, URL, URN란?

by 장인이 2023. 1. 11.

0. 개요

 살면서 URL이라는 단어는 많이 들어봤을 것이다. 하지만 URI, URN?은 좀 생소한 단어이다. 이번 게시물에서는 URI, URL, URN에 대해서 적어보도록 하겠다. 사실 각각의 개념들은 하나하나 깊게 살펴봐야할 내용들이지만, 추후에 더 깊은 공부를 하여 작성할 예정이다.

 

 

1. URI

 URI는 Uniform Resource Identifier의 줄임말이다. 각 단어를 하나씩 살펴보자면,

 

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

- Resource: 자원, URI로 식별할 수 있는 모든 것

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

 

즉, URI는 리소스를 구분할 수 있는 식별자라고 할 수 있다. 이 URI를 통해 우리가 접근해야 하는 리소스가 어디있는지를 판별할 수 있게 된다.

 

 

2. URL, URN

1) URL

 URL은 Uniform Resource Locator의 약자이다. 즉 Locator, 리소스가 있는 위치를 지정한다. 우리가 흔히 알고 있는 https://www.naver.com 이 URL의 예시이다.

 

2) URN

 URN은 Uniform Resource Name의 약자이다. 즉 Name, 리소스에 이름을 부여하는 방식이다. urn:isbn:8960777331와 같이 이름을 부여하는데, URN 이름만으로는 리소스를 찾는 방식이 보편화되지 않았다... 즉, 잘 사용하지 않는 방식이다.

 

 따라서 현재 자주 쓰는 방법은 URL이며, 아래 내용부터 URI와 URL을 같은 의미로 서술할 것이다.

 

 

3. URL 문법

 URL의 문법은 다음과 같다. 예시와 함께 하나씩 살펴보자.

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

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

 

1) scheme

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

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

 

 주로 프로토콜을 사용한다. 여기서 프로토콜이란, 어떤 방식으로 자원에 접근할 것인가 하는 약속이다. 예시로는 http, https, ftp 등이 있다.

 

 

2) userinfo

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

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

 

 URL에 사용자 정보를 포함에서 인증하는 것으로, 거의 사용하지 않는다.

 

 

3) host

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

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

 

 호스트명으로, 도메인명 혹은 IP주소를 입력해서 사용한다.

 

 

4) PORT

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

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

 

 접속 포트 번호이다. 일반적으로 생략하며, 생략시 scheme에 기입한 프로토콜의 포트를 따라간다. http는 80, https는 443이다. 포트에 대한 추가 설명은 아래 게시글을 참고 바란다.

(포트 관련 게시글)

 

 

5) path

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

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

 

 리소스의 경로를 나타낸다. 계층 구조이며, 아래 예시를 보면 이해가 빠를것이다.

ex) /home/file1.jpg, /members, /members/100

 

 

6) query

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

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

 

 key=value의 형태로 구성이 되어있다. ?로 시작하며, 값을 추가하고 싶을 경우 &를 붙여주자.

ex) ?keyA=valueA&keyB=valueB

 query string 혹은 query parameter라고 불리며, 정보를 담아 전달하는 역할을 하고 있다.

 

 

7) fragment

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

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

 

 fragment는 서버에 전송하는 정보가 아닌, html 문서 상에서 "북마크"된 지점으로 스크롤 하도록 만들어준다.

 

 


위 내용은 김영한 님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식"의 내용과 강의자료를 토대로 작성된 게시글입니다.

강의 링크:

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

'cs > 컴퓨터 네트워크' 카테고리의 다른 글

HTTP 상태코드  (0) 2023.01.12
HTTP API 설계하는 법  (0) 2023.01.12
HTTP 메서드(GET, POST, PUT, PATCH, DELETE)  (0) 2023.01.12
HTTP란?, HTTP 메시지  (0) 2023.01.12
IP, TCP, UDP, 포트, DNS 정리  (0) 2023.01.11

댓글