본문 바로가기
CS/네트워크

[HTTP] URI와 URL

by 우다다캣 2022. 8. 19.

URI란?

URIUniform Resource Identifiers의 약자로, 자원 식별자를 의미합니다. 여기서 말하는 '자원(Resource)'이란 '식별 가능한 모든 것'을 의미합니다. 문서 파일뿐만이 아니라 이미지, 서비스 등 다른것과 구별할 수 있는 모든 것이 자원이며, 여러 자원이 포함된 복수의 집합 도 자원으로 볼 수 있습니다.

 

식별자란 자원의 이름과도 같습니다. 예를 들어 컴퓨터에 Users라는 최상위 폴더 안에 cat.txt라는 파일이 있다면, 이 파일의 식별자는 다음과 같이 나타낼 수 있습니다.

Users/cat.txt

우리가 흔히 사용하는 파일 경로와 비슷한 모양이 나옵니다. 그렇다면 이 cat.txt 파일 안에서 'cute'라는 텍스트를 명시하고 싶다면 어떤식으로 나타낼 수 있을까요?

Users/cat.txt#cute

cat.txt까지는 파일 경로를 나타내는 구문이고, 다음 구문부터는 해당 파일 내에서 특정 텍스트를 식별하기 위한 식별자 역할을 합니다. 식별자를 나타내는 구문을 구분하기 위해 '#'을 사용했습니다.

 

이와 같이 URI는 '자원'으로 인식할 수 있는 모든 것의 이름, 즉 식별자를 나타낼 수 있습니다. 실제 표준 URI 포맷도 이와 같이 나타납니다.

http://www.example.com/index.html?id=1#ch1

파일 경로와 같이, ? 이전까지의 구문은 인터넷 상에서 자원의 주소를 나타냅니다. 그리고 id=1, #ch1과 같은 식별자를 통해 해당 주소에서 원하는 자원의 위치를 정확히 표시합니다.

 

URL이란?

URLUniform Resource Locator의 약자로, URI에 포함되는 개념입니다. URI가 특정 자원을 식별할 수 있는 식별자를 의미한다면, URL은 특정 자원이 위치하고 있는 주소를 의미합니다.

 

위 URI의 예시로 든 것은 동시에 URL이기도 합니다. 흔히 '웹사이트 주소'라고 얘기하는 부분인 www.example.com은 접근하고자 하는 자원이 위치하는 서버의 주소를 나타내는 도메인인데, 이 도메인에서 시작해 마치 파일 경로를 나타내듯 자원이 위치하는 경로가 이어서 나타나기 때문입니다.

 

엄밀히 말하면 경로를 나타내는 부분까지만 URL이고, 이후 식별 부분(? 이후)은 URI는 맞지만 URL은 아니라고 볼 수 있습니다. 하지만 URL이 웹 상 자원을 식별하는 대표 포맷으로 사용되고 있기 때문에 URI 대신 URL이라는 표현을 사용해도 무방합니다.

 

http 프로토콜에서 URI(URL)의 포맷은 다음과 같습니다.

- 스키마

 자원을 얻기 위한 프로토콜을 나타냅니다. http, https, ftp, telnet 등의 프로토콜이 있으며 'http:'와 같이 마지막에 콜론이 하나 붙습니다. 대소문자는 무시됩니다.

 

- 자격정보(크리덴셜)

 서버로부터 자원을 취득하기 위해 자격정보가 필요하다면 옵션으로 유저명과 패스워드를 지정할 수 있습니다. 여기에 지정한 정보는 Basic access authentication  인증 스킴을 사용하며, HTTP 헤더의 Authorization 필드에 해당 정보가 Base64로 인코딩되어 들어갑니다.

다만 현재는 보안 문제로 해당 방식의 URL을 사용하지 않습니다.

 

- 서버 주소

 요청하려는 자원이 있는 서버의 주소를 IP주소 또는 도메인 이름으로 나타냅니다.

 

- 서버 포트

 접속하려는 서버의 네트워크 포트 번호를 지정합니다. 옵션으로, 생략하면 디폴트 포트가 사용됩니다.

 

- 파일 경로

 특정 자원을 식별하기 위해 서버 상에서의 파일 경로를 지정합니다. UNIX 디렉토리 지정 방식과 유사합니다.

 

- 쿼리 문자열

 파일 경로로 지정된 자원에 임의의 파라미터를 넘겨주기 위해 사용됩니다. 옵션입니다.

 

- 프래그먼트 식별자

 주로 취득한 자원에서 서브 리소스, 즉 문서 중간에 위치하는 특정한 자원을 가리키기 위해 사용됩니다. 예를들어, 프래그먼트 식별자로 요소 아이디를 입력하면 해당 요소가 위치한 곳으로 바로 스크롤됩니다. 옵션입니다.

 

 

참고자료

HTTP & Network Basic

stackoverflow - Username and password in https url

MDN - HTTP 인증

'CS > 네트워크' 카테고리의 다른 글

홉바이홉 통신, ARP  (2) 2022.11.13
네트워크 기기  (4) 2022.11.06
네트워크 기초  (1) 2022.10.31
[HTTP] IP / TCP / DNS  (0) 2022.07.08
[HTTP] HTTP와 TCP / IP  (0) 2022.07.07