[http] URI, URL 및 URN의 차이점은 무엇입니까?

사람들은 URL , URIURN에 대해 마치 다른 것처럼 이야기하지만 육안과 동일하게 보입니다.

그들 사이의 구별되는 차이점은 무엇입니까?



답변

에서 RFC 3986 :

URI는 로케이터, 이름 또는 둘 다로 더 분류 될 수 있습니다. “Uniform Resource Locator”(URL)라는 용어는 리소스를 식별하는 것 외에 기본 액세스 메커니즘 (예 : 네트워크 “위치”)을 설명하여 리소스를 찾는 방법을 제공하는 URI의 하위 집합을 나타냅니다. “URN (Uniform Resource Name)”이라는 용어는 역사적으로 “urn”체계 [RFC2141] 에서 두 URI를 모두 지칭하기 위해 사용되었으며 , 이는 자원이 존재하지 않거나 사용할 수 없게되었을 때에도 전 세계적으로 고유하고 지속적으로 유지되어야합니다. 이름의 속성을 가진 다른 URI에.

따라서 모든 URL은 URI이며 (실제로는 그렇지 않음) 모든 URN은 URI이지만 URN과 URL은 다르므로 모든 URI가 URL이라고 말할 수는 없습니다.

편집 : 이전에는 모든 URL이 유효한 URI라고 생각했지만 의견에 따라 :

“모든 URL이 URI”인 것은 아닙니다 . RFC의 해석에 따라 다릅니다. 자바 예를 들어, URI 파서는 아니 같은 않습니다 [또는 ]과 사양이 “해야하지”가 아니라 말한다의 때문 “안된다”를.

불행히도 물을 더 진흙으로 만듭니다.

Roger Pate의 답변을 아직 읽지 않았다면 그렇게하는 것이 좋습니다.


답변

URI는 식별 하고 URL은 찾습니다 . 그러나 로케이터도 식별자 이므로 모든 URL도 URI이지만 URL이 아닌 URI가 있습니다.

  • 로저 페이트

제 이름은 식별자입니다. URI와 비슷하지만 내 위치 나 연락 방법에 대해 알려주지 않으므로 URL이 될 수 없습니다. 이 경우 미국에서만 5 명 이상의 다른 사람들을 식별하는 것도 가능합니다.

  • 4914 West Bay Street, 나 사우, 바하마

이 로케이터는 해당 물리적 ​​위치의 식별자입니다. URL과 URI 모두 같으며 (모든 URL이 URI이기 때문에) ” 나의 거주자” 라고 간접적 으로 식별합니다 . 이 경우에는 나를 고유하게 식별하지만 룸메이트가 있으면 변경됩니다.

이 예제는 필요한 구문을 따르지 않기 때문에 “like”라고 말합니다.

인기있는 혼란

에서 위키 백과 :

컴퓨팅에서 URL (Uniform Resource Locator)은 식별 된 리소스를 사용할 수있는 위치와이를 검색하는 메커니즘을 지정하는 URI (Uniform Resource Identifier)의 하위 집합입니다. 대중적인 사용법과 많은 기술 문서와 구두 토론에서 종종 URI동의어로 잘못 사용됩니다 . [강조]

이러한 혼동으로 인해 많은 제품과 문서에서 다른 용어 대신 한 용어를 잘못 사용하거나 고유 한 용어를 지정하거나 동의어로 사용합니다.

URN

내 이름은 로저 페이트는 같은 수 URN 사람들은 제외하고, (통일 자원 이름) 더 많은 규제 와에서 고유하도록 모두 공간과 시간.

현재이 이름을 다른 사람들과 공유하고 있기 때문에 전 세계적으로 고유하지 않으며 URN으로 적합하지 않습니다. 그러나 다른 가족 이이 이름을 사용하지 않더라도 나는 할아버지 할아버지의 이름을 따서 명명되었으므로 시간이 지나도 고유하지는 않습니다. 그리고 경우에도 사건이 아니었다, 나를 따라 내 후손의 이름을 지정할 수있는 가능성은 URN 등이 적합합니다.

URN은 URI의 구문을 공유하지만이 엄격한 고유성 제약 조건에서 URL과 다릅니다.


답변

URI- 균일 한 자원 식별자

URI는 짧은 숫자, 문자 및 기호 문자열을 사용하여 문서를 식별하는 표준입니다. RFC 3986-URI (Uniform Resource Identifier) ​​: 일반 구문에 의해 정의됩니다 . URL, URN 및 URC는 모두 모든 유형 의 URI입니다.

URL- 균일 한 리소스 로케이터

해당 위치에서 리소스를 가져 오는 방법에 대한 정보가 포함되어 있습니다. 예를 들면 다음과 같습니다.

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:user@example.com
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (상대 URL, 다른 URL의 상황에서만 유용합니다)

URL은 항상 프로토콜 ( http)로 시작 하며 일반적으로 네트워크 호스트 이름 ( example.com) 및 종종 문서 경로 ( /foo/mypage.html) 와 같은 정보를 포함합니다 . URL에는 쿼리 매개 변수 및 조각 식별자가있을 수 있습니다.

URN- 균일 한 자원 이름

고유하고 지속적인 이름으로 리소스를 식별하지만 인터넷에서 리소스를 찾는 방법을 반드시 알려주지는 않습니다. 일반적으로 접두사로 시작합니다. urn: 예를 들면 다음과 같습니다.

  • urn:isbn:0451450523 ISBN 번호로 책을 식별합니다.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 세계적으로 고유 한 식별자
  • urn:publishing:book -문서를 장부 유형으로 식별하는 XML 네임 스페이스.

URN은 아이디어와 개념을 식별 할 수 있습니다. 문서 식별에만 국한되지 않습니다. URN이 문서를 나타내는 경우 “확인자”에 의해 URL로 변환 될 수 있습니다. 그런 다음 URL에서 문서를 다운로드 할 수 있습니다.

URC-균일 한 자원 인용

문서 자체가 아닌 문서에 대한 메타 데이터를 가리 킵니다. URC의 예는 다음과 같은 페이지의 HTML 소스 코드를 가리키는 것입니다.view-source:http://example.com/

데이터 URI

인터넷에서 찾거나 이름을 지정하지 않고 데이터를 URI에 직접 배치 할 수 있습니다. 예를 들면 다음과 같습니다 data:,Hello%20World.


자주 묻는 질문

더 이상 URL을 말하면 안된다는 이야기를 들었습니다. 왜 그렇습니까?

HTML에 대한 W3 사양에 따르면 href앵커 태그 의 URL은 URL뿐만 아니라 URI도 포함 할 수 있습니다. 와 같은 URN을 넣을 수 있어야합니다 <a href="urn:isbn:0451450523">. 그러면 브라우저가 해당 URN을 URL로 해석하고 책을 다운로드합니다.

실제로 브라우저는 URN으로 문서를 가져 오는 방법을 알고 있습니까?

내가 아는 것은 아니지만 최신 웹 브라우저는 데이터 URI 체계를 구현합니다.

URL과 URI의 차이가 상대적인지 아니면 절대적인 것과 관련이 있습니까?

아니요. 상대 및 절대 URL은 모두 URL (및 URI)입니다.

URL과 URI의 차이점은 쿼리 매개 변수가 있는지 여부와 관련이 있습니까?

아니요. 검색어 매개 변수가 있거나없는 URL은 모두 URL (및 URI)입니다.

URL과 URI의 차이점은 조각 식별자가 있는지 여부와 관련이 있습니까?

아니요. 조각 식별자가 있거나없는 URL은 모두 URL (및 URI)입니다.

URL과 URI의 차이점은 허용되는 문자와 관련이 있습니까?

아니요. URL은 엄격한 URI 하위 집합으로 정의됩니다. 구문 분석기가 URL에는 문자를 허용하지만 URI에는 문자를 허용하지 않으면 구문 분석기에 버그가 있습니다. 스펙은 URL 및 URI의 어느 부분에서 어떤 문자가 허용되는지에 대해 자세히 설명합니다. 일부 문자는 URL의 일부에서만 허용 될 수 있지만 문자만으로는 URL과 URI의 차이가 아닙니다.

그러나 W3C는 이제 URL과 URI가 같은 것이라고 말하지 않습니까?

예. W3C는 이것에 대해 많은 혼란이 있음을 깨달았습니다. 그들은 URL과 URI라는 용어를 서로 바꿔서 사용하는 것이 좋다고 말하는 URI 설명 문서 를 발행했습니다 ( URI 를 의미 함). 더 이상 URI를 URL, URN 및 URC와 같은 다른 유형으로 엄격하게 세그먼트 화하는 것은 더 이상 유용하지 않습니다.

URI가 URL과 URN이 될 수 있습니까?

URN의 정의는 이제 위에서 언급 한 것보다 느슨합니다. URI최신 RFC에 따르면 urn:“이름의 속성”이 있는 한 모든 URI가 (시작 여부에 관계없이) URN이 될 수 있다고합니다 . 즉, 자원이 존재하지 않거나 사용할 수 없게 된 경우에도 전 세계적으로 독특하고 지속적입니다. 예 :와 같은 HTML doctypes에 사용되는 URI http://www.w3.org/TR/html4/strict.dtd. 해당 URI는 w3.org 웹 사이트의 페이지가 삭제 된 경우에도 HTML4 전환 doctype의 이름을 계속 지정합니다.


URI / URL 벤 다이어그램


답변

요약하면 : URI는 식별하고 URL은 식별하고 찾습니다.

셰익스피어의 희곡 로미오와 줄리엣 의 특정 판을 생각해 보자 . 홈 네트워크에 디지털 사본이있다.

텍스트를로 식별 할 수 urn:isbn:0-486-27557-4있습니다.
이는 URI이지만보다 구체적으로 텍스트 이름을 지정 하기 때문에 URN * 입니다.

텍스트를로 식별 할 수도 있습니다 file://hostname/sharename/RomeoAndJuliet.pdf.
그것은 또한 URI이지만, 더 구체적으로 는 텍스트를 찾기 때문에 URL 입니다.

* 균일 자원 이름

(내 예제는 Wikipedia 에서 수정되었습니다. )


답변

이것들은 매우 잘 쓰여졌지만 오래 지속 된 답변입니다. CodeIgniter에 관한 한 차이점은 다음과 같습니다 .

URLhttp : //example.com/some/page.html

URI- /some/page.html

간단히 말해 URL은 어디에서나 리소스를 식별 할 수있는 완벽한 방법이며 FTP, HTTP, SCP 등과 같은 다른 프로토콜을 가질 수 있습니다.

URI는 현재 도메인의 리소스이므로 찾을 정보가 더 적습니다.

CodeIgniter가 URL 또는 URI라는 단어를 사용하는 모든 경우에있어 이는 웹의 대 체계에서 100 % 정확하지는 않지만 그들이 말하는 차이점입니다.


답변

우선 혼동을 피하고 간단하게 이해하면 이해하게됩니다.

URI => Uniform Resource Identifier 자원
의 전체 주소, 즉 위치, 이름 또는 둘 다를 식별합니다.

URL => Uniform Resource Locator 자원의 위치를
식별합니다.

URN => Uniform Resource Name 자원의 이름을
식별합니다

https://www.google.com/folder/page.html 주소가 있습니다 .

URI (Uniform Resource Identifier) ​​=> https://www.google.com/folder/page.html

URL (Uniform Resource Locator) => https://www.google.com/

URN (Uniform Resource Name) => /folder/page.html

URI => (URL + URN) 또는 URL 만 또는 URN 만


답변

이미 게시 된 답변에 약간의 추가 사항이 있습니다. (Prateek Joshi의 아름다운 설명에서 ) 이론을 요약하는 Venn의 다이어그램이 있습니다 .

여기에 이미지 설명을 입력하십시오

그리고 예 (Prateek의 웹 사이트에서도) :

여기에 이미지 설명을 입력하십시오