URI, URL ve URN arasındaki fark nedir?


4363

İnsanlar URL'ler , URI'ler ve URN'ler hakkında farklı şeylermiş gibi konuşuyorlar, ancak çıplak gözle aynı görünüyorlar.

Aralarındaki ayırt edilebilir farklılıklar nelerdir?


157
URL, URI'den daha spesifik.
mk12

30
Web yöneticileri bu soruyu ele alıyor: URI ve URL arasındaki fark nedir
hippietrail

161
Mini Venn diyagramı:( URIs ( URLs ) )
icc97

29
Soruyu cevaplamaya çalışanlar bile URI ve URL hakkında çok fazla kafa karışıklığı var gibi görünüyor. O değil URI'ları, URL'ler değildir URI'lerinin örnekleri ve URL'ler örneklerdir URL'lerin pratik örnekler herkesin görmesini yararlanacak ve URI'ları.
Dennis

30
Kathy: "Bu senin köpeğin mi?" Bob: "Ona köpek demek daha doğru olur." Kathy: "Hayır, o bir köpek. Sen, efendim, bilgiçsin."
Yojimbo

Yanıtlar:


1746

Gönderen RFC 3986 :

Bir URI ayrıca bir konumlandırıcı, bir ad veya her ikisi olarak sınıflandırılabilir. "Tekdüzen Kaynak Konum Belirleyicisi" (URL) terimi, bir kaynağın tanımlanmasına ek olarak, birincil erişim mekanizmasını (ör. Ağ "konumu") tanımlayarak kaynağı bulmanın bir yolunu sağlayan URI'lerin alt kümesini ifade eder. "Tekdüzen Kaynak Adı" (URN) terimi, geçmişte her iki URI'ye "urn" şeması [RFC2141] kapsamında atıfta bulunmak için kullanılmıştır. bir adın özelliklerine sahip başka bir URI'ye.

Dolayısıyla tüm URL'ler URI'lardır (aslında tam olarak değil - aşağıya bakın) ve tüm URN'ler URI'lardır - ancak URN'ler ve URL'ler farklıdır, bu nedenle tüm URI'lerin URL'ler olduğunu söyleyemezsiniz.

DÜZENLEME: Daha önce tüm URL'lerin geçerli URI'ler olduğunu düşündüm, ancak yorumlara göre:

Değil "tüm URL'ler lerdir". RFC'nin yorumlanmasına bağlıdır. Örneğin Java'da URI ayrıştırıcısı hoşlanmaz [veya ]bunun nedeni spec'in "olmamalı" ve "olmamalı" yazmasıdır.

Maalesef suları daha da çamurluyor.

Roger Pate'in cevabını henüz okumadıysanız , bunu da yapmanızı tavsiye ederim.


15
Yalnızca urn: şemasına sahip URI'ler URN'lerdir. Bir URI klasik bir URL, bir URN veya yalnızca "urn:" ile başlamayan ve bir kaynağın konumuna gönderme yapmayan bir URI olabilir.
Mark Cidade

18
Değil " tüm URL'ler lerdir ". RFC'nin yorumlanmasına bağlıdır. Örneğin Java'da URI ayrıştırıcısı hoşlanmaz [veya ]bunun nedeni spec'in "olmamalı" ve "olmamalı" yazmasıdır.
Adam Gent

5
@AdamGent: RFC 3986 1.1.3: "Bir URI ayrıca bir konumlandırıcı, bir ad veya her ikisi olarak sınıflandırılabilir." Dolayısıyla, URL özel bir URI türü ise, her URL'nin bir URI olduğu anlamına gelir. Öyle değil mi?
Hubert

14
@AdamGent: Bu, bir Java uygulama tuhaflığına benziyor ve normatif değil. java.net.URIDoc kendisi "Her URL soyut anlamda, bir URI, ancak her URI URL" diyor. Ve java.net.URLgarip şeyler (ilk etapta RFC 3986 sn 6 ile oran ve sanal konaklar w kesinti anlarında görünüyor) IP adreslerine ana bilgisayar adlarını çözümlemek tarafından URL'lerin eşitliğini kontrol sevmez. Bu sadece Java Standart Kütüphanesi bazı tutarsız sınıf davranışı var demektir düşünüyorum.
Andrew Janke

3
@JonSkeet Belki sadece standartlar ve uygulamalar arasında ayrım yapmanız gerekir? Örneğin, "Resmi olarak, RFC'lere göre, tüm URL'ler URI'lerdir. (RFC alıntısı) Ancak mevcut uygulamalar, muhtemelen birlikte çalışabilirlik için spesifikasyonla tam olarak eşleşmeyebilir ve RFC'ler için geçerli olmayan URL'leri kullanabilir. , bazı kişiler ve belgeler RFC tarafından belirtilen şeyden farklı bir şey ifade etmek için 'URL'yi kullanabilir. " Çoğu e-posta doğrulama rutininin RFC tanımlarıyla eşleşmemesi gibi.
Andrew Janke

3840

URI tespit s ve URL ler bulun ; ancak, konum belirleyiciler de tanımlayıcılardır , bu nedenle her URL aynı zamanda bir URI'dir, ancak URL olmayan URI'ler vardır.

Örnekler

  • Roger Pate

Bu benim adım, tanımlayıcı. Bir URI gibidir, ancak size konumum veya benimle nasıl iletişim kuracağım hakkında hiçbir şey söylemediğinden URL olamaz. Bu durumda, yalnızca ABD'de en az 5 kişinin daha tanımlanması gerekir.

  • 4914 West Bay Street, Nassau, Bahamalar

Bu, o fiziksel konumun tanımlayıcısı olan bir konumlandırıcıdır. Hem bir URL hem de URI gibidir (çünkü tüm URL'ler URI'lerdir) ve beni dolaylı olarak "ikamet eden .." olarak tanımlar . Bu durumda beni benzersiz bir şekilde tanımlar, ancak bir oda arkadaşı alırsam bu değişecektir.

"Beğen" diyorum çünkü bu örnekler gerekli sözdizimine uymuyor.

Popüler karışıklık

Gönderen Vikipedi :

Hesaplamada, Tekdüzen Kaynak Konum Belirleyicisi (URL), Tekdüzen Kaynak Tanımlayıcı'nın (URI), tanımlanmış bir kaynağın nerede kullanılabilir olduğunu ve onu alma mekanizmasını belirten bir alt kümedir. Popüler kullanımda ve birçok teknik belgede ve sözlü tartışmada URI ile eşanlamlı olarak yanlış kullanılır , ... [vurgu mayın]

Bu yaygın karışıklık nedeniyle, birçok ürün ve belge yanlış bir terimi diğeri yerine yanlış kullanır, kendi ayrımını belirler veya eş anlamlı olarak kullanır.

urns

Benim adım Roger Pate, URN (Tekdüzen Kaynak Adı) gibi olabilir , ancak bunlar çok daha düzenlenmiş ve hem alan hem de zaman boyunca benzersiz olması amaçlanmıştır .

Şu anda bu adı başkalarıyla paylaştığım için, küresel olarak benzersiz değil ve bir URN olarak uygun olmayacak. Ancak, başka hiçbir aile bu adı kullanmasa bile, babamın dedesi tarafından isimlendirildim, bu yüzden zamanla benzersiz olmayacaktı. Ve hatta eğer o böyle değildi, benden sonra benim kökenini adlandırma olasılığı bir URN olarak bu uygunsuz kılmaktadır.

Her ikisi de URI'lerin sözdizimini paylaşsalar da, URN'ler bu katı benzersizlik kısıtlamasındaki URL'lerden farklıdır.


3
URNs are different from URLs in this rigid uniqueness constraintBu, URL'lerin bir konumu benzersiz bir şekilde tanımlamadığı anlamına mı geliyor?
eugene

30
Roger'ın cevabı iyi pragmatik tavsiyeler sunar. Resmi cevap için, 2001'de " URI'ler, URL'ler ve URN'ler: Açıklamalar ve Öneriler " adlı W3C'ye gidiyorum . Özetle W3C, çağdaş görüşün her şeyin bir URI olduğunu söylüyor. URL resmi olmayan bir kavramdır, resmi bir kavram değildir. Ve karışıklık, URI kategorilerini (URL'si bir kategori olan) katı bir şekilde ayırt etmeye çalışan "klasik bir görünüme" dayanıyor.
netjeff

5
..a Tekdüzen Kaynak Konum Belirleyicisi (URL) .., tanımlanmış bir kaynağın nerelerde kullanılabileceğini ve kaynak alma mekanizmasını belirtir . Başka bir deyişle, "göreli" URL diye bir şey yoktur?
Arne

9
"Earth128: Edward-de-Leau / 6000000000569063853" (çoklu çoklu evrendeki benzersiz ben) bir URN, URL veya URI mı?
edelwater

6
@edelwater: Sanırım bu sadece sizi tanımladığı için bir uri var ama size nasıl ulaşılacağına dair hiçbir şey söylemiyor, earth128 gezegenler arası seyahatin bir aracı olmadığı anlamına gelmez :)
user20358

669

URI - Tekdüzen Kaynak Tanımlayıcısı

URI'ler, kısa bir sayı dizisi, harf ve simge kullanarak belgeleri tanımlamak için bir standarttır. Bunlar RFC 3986 - Tekdüzen Kaynak Tanımlayıcısı (URI): Genel Sözdizimi tarafından tanımlanır . URL'ler, URN'ler ve URC'lerin tümü URI türleridir .

URL - Tekdüzen Kaynak Bulucu

Bir kaynağın konumundan nasıl getirileceği hakkında bilgi içerir. Örneğin:

  • 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 (Göreli bir URL, yalnızca başka bir URL bağlamında yararlıdır)

URL'ler her zaman bir protokol ( http) ile başlar ve genellikle ağ ana bilgisayar adı ( example.com) ve genellikle bir belge yolu ( /foo/mypage.html) gibi bilgiler içerir. URL'lerde sorgu parametreleri ve parça tanımlayıcıları olabilir.

URN - Tekdüzen Kaynak Adı

Bir kaynağı benzersiz ve kalıcı bir adla tanımlar, ancak mutlaka internette nasıl bulacağınızı söylemez. Genellikle önekle başlar urn: Örneğin:

  • urn:isbn:0451450523 bir kitabı ISBN numarasına göre tanımlamak için kullanılır.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 global olarak benzersiz bir tanımlayıcı
  • urn:publishing:book - Belgeyi bir kitap türü olarak tanımlayan bir XML ad alanı.

URN'ler fikirleri ve kavramları tanımlayabilir. Belgeleri tanımlamakla sınırlı değildirler. Bir URN bir belgeyi temsil ettiğinde, "çözümleyici" tarafından URL'ye çevrilebilir. Doküman daha sonra URL'den indirilebilir.

URC - Tekdüzen Kaynak Atıfları

Belgenin kendisi yerine belgeyle ilgili meta verilere işaret eder. Bir URC örneği, aşağıdaki gibi bir sayfanın HTML kaynak koduna işaret eden bir örnektir:view-source:http://example.com/

Veri URI'si

Verileri internette bulmak veya adlandırmak yerine doğrudan bir URI'ye yerleştirilebilir. Buna bir örnek verilebilir data:,Hello%20World.


Sıkça Sorulan Sorular

Artık URL dememem gerektiğini duydum, neden?

HTML için W3 spesifikasyonu href, bir bağlantı etiketinin yalnızca bir URL değil, bir URI içerebileceğini söylüyor . Gibi bir URN koyabilirsiniz <a href="urn:isbn:0451450523">. Daha sonra tarayıcınız bu URN'yi bir URL'ye çözer ve kitabı sizin için indirir.

Herhangi bir tarayıcı URN tarafından dokümanların nasıl getirileceğini gerçekten biliyor mu?

Bildiğimden değil, modern web tarayıcısı veri URI şemasını uyguluyor.

URL ve URI arasındaki farkın, göreli veya mutlak olmasıyla bir ilgisi var mı?

Hayır. Hem göreli hem de mutlak URL'ler URL'lerdir (ve URI'ler).

URL ve URI arasındaki farkın, sorgu parametrelerine sahip olup olmadığıyla ilgisi var mı?

Hayır. Sorgu parametreleri olan ve olmayan her iki URL de URL'lerdir (ve URI'ler).

URL ve URI arasındaki farkın, bir parça tanımlayıcısına sahip olup olmadığıyla bir ilgisi var mı?

Hayır. Parça tanımlayıcıları olan ve olmayan her iki URL de URL'lerdir (ve URI'lerdir).

URL ve URI arasındaki farkın izin verilen karakterlerle ilgisi var mı?

Hayır. URL'ler, URI'lerin katı bir alt kümesi olarak tanımlanır. Ayrıştırıcı URL'deki bir karaktere izin veriyor ancak URI'de izin vermiyorsa, ayrıştırıcıda bir hata var. Spesifikasyonlar, URL'lerin ve URI'lerin hangi bölümlerinde hangi karakterlere izin verildiği konusunda ayrıntılı olarak açıklanmaktadır. Bazı karakterlere URL'nin yalnızca bazı bölümlerinde izin verilebilir, ancak yalnızca karakterler URL'ler ve URI'ler arasında bir fark değildir.

Ancak W3C artık URL'lerin ve URI'lerin aynı şey olduğunu söylemiyor mu?

Evet. W3C, bu konuda bir ton karışıklık olduğunu fark etti. URL ve URI terimlerini birbirinin yerine (URI anlamına gelir) kullanmanın artık uygun olduğunu söyleyen bir URI açıklama belgesi yayınladılar . Artık URI'leri URL, URN ve URC gibi farklı türlere bölmek artık yararlı değildir.

Bir URI hem bir URL hem de bir URN olabilir mi?

URN'nin tanımı artık yukarıda belirttiğimden daha gevşek. URI'larına son RFC herhangi URI şimdi (olursa olsun başlar olmadığı bir URN olabileceğini söylüyor urn:) sahip olduğu sürece "bir adın özelliklerini." Yani, kaynak ortadan kalktığında veya mevcut olmadığında bile küresel olarak benzersiz ve kalıcıdır. Bir örnek: gibi HTML dokümanlarında kullanılan URI'ler http://www.w3.org/TR/html4/strict.dtd. Bu URI, w3.org web sitesindeki sayfa silinmiş olsa bile HTML4 geçiş dokümanı adını vermeye devam edecektir.


URI / URL Venn Şeması


8
"C: \ dosyam" URI, URL veya URN mi? ya da hiçbiri.
bvdb

12
file://Öneki üzerine koymadığınız sürece dosya yolu bir URL veya URI değildir . Tarayıcılar genellikle URL biçimlendirilmemiş dosya yollarını işlese de. Mozilla, test URL'lerini dosya URL'leri için yayınlar .
Stephen Ostermiller

2
RFC'nin 1.1 bölümüne bakınız - "Tekdüzelik birçok fayda sağlar. Bu kaynaklara erişmek için kullanılan mekanizmalar farklı olsa bile, farklı kaynak tanımlayıcı türlerinin aynı bağlamda kullanılmasına izin verir. Farklı kaynak tanımlayıcı türleri arasında ... "
Stephen Ostermiller

mailto:user@example.comURL olarak bahsettiniz , ancak aşağıdaki başka bir yanıt bunun bir URN olduğunu söylüyor? Hangisi doğru? Hem URN hem de URL mi?
user31782

4
Bu cevabı anlamak çok daha kolay. URL'lerin ve URN'nin gerçek örneğinin net resimlerini açıkça görebiliyorum. Ve herkes bunun hakkında daha fazla okumak için ... danielmiessler.com/study/url-uri
vee

253

Özetle: bir URI tanımlanır, bir URL tanımlanır ve bulunur.

Ev ağınızda dijital bir kopyası olan Shakespeare'in Romeo ve Juliet adlı oyununun belirli bir sürümünü düşünün .

Metni olarak tanımlayabilirsiniz urn:isbn:0-486-27557-4.
Bu bir URI, ancak daha spesifik olarak bir URN * olacaktır çünkü metni adlandırır .

Metni olarak da tanımlayabilirsiniz file://hostname/sharename/RomeoAndJuliet.pdf.
Bu aynı zamanda bir URI, ancak daha spesifik olarak bir URL olacaktır çünkü metni bulur .

* Tekdüzen Kaynak Adı

(Örneğimin Wikipedia'dan uyarlandığını unutmayın )


6
Gerçek URN'yi not etmek yararlıdır (bir URL ile nasıl karşılaştırıldığını görmek için): urn: isbn: 0-486-27557-4
Michael Brewer-Davis

2
@Michael - ISBN 0486275574Metni adlandıran ve dolayısıyla bir URN olarak nitelendirilen benim anlayışım . Okuyuculara daha aşina olacağına inandığım bir format seçiyorum.
Greg

2
Bir dosyanın karmasının (örn. SHA1) bu dosya için bir URN olabileceğini söylemek mantıklı olur mu?
johnsimer

@johnsimer Aynı bilgisayarda bir dosyanın bir kopyasına sahip olabileceğinizden, aynı hash ile sonuçlanacağından ve bu nedenle benzersiz olmadığından böyle düşünmeyin.
Dennis98

141

Bunlar çok iyi yazılmış ama uzun soluklu cevaplar. İşte CodeIgniter açısından fark :

URL - http://example.com/some/page.html

URI - /some/page.html

Basitçe söylemek gerekirse, URL herhangi bir kaynağı herhangi bir yerde tanımlamak için tam yoldur ve FTP, HTTP, SCP vb.Gibi farklı protokollere sahip olabilir.

URI, geçerli etki alanındaki bir kaynaktır, bu nedenle bulunması için daha az bilgiye ihtiyaç duyar.

CodeIgniter'ın URL veya URI kelimesini kullandığı her durumda, bahsettikleri fark budur, ancak web'in genel şemasında% 100 doğru değildir.


10
Bu cevap aşırı basitleştirilmiş olabilir ancak sorusunun bağlamına bakın. XML ad alanları hakkında şaşkınlık duyması onun için daha yararlı olacaktır!
Phil Sturgeon

140
Bu cevap sadece yanlış değil, aynı zamanda aktif olarak yanıltıcıdır. Her iki örnek de URL'lerdir. Ve her URL aynı zamanda bir URI olduğundan, bu her iki örneğin de URI olduğu anlamına gelir . URI'ler ve URL'ler arasındaki farkı göstermek amacıyla, bu tamamen işe yaramaz.
Jörg W Mittag

12
CodeIgniter söz konusu olduğunda fark budur. Her durumda, URL veya URI kelimesini kullanıyorlar, bahsettikleri fark bu. Bu nedenle, web'in genel şemasında% 100 doğru değildir, ancak OP'nin sorusu kapsamında (CodeIgniter'daki fark), bu cevap mükemmel bir şekilde doğrudur.
Phil Sturgeon

12
Bu yanlış. @ JörgWMittag çoğunlukla dikkat çekiyor. URL'ler URI'lardır ve "tam niteliklidir"; yani bu yanıttaki "URL" her ikisi de. Ancak /some/page.htmlbir URI değildir. Bu bir tür "URI-referansı" olan bir "göreceli-ref" dir. Temel URI bağlamıyla birlikte, bir URI'ye çözümlenebilir, ancak kendisi bir URI değildir. Bkz . RFC 3986, Bölüm 4.1 . CodeIgniter muhtemelen yanlış terimleri kullanıyor ve bu çağrılmalıdır; Q (şu anda düzenlendiği gibi) CodeIgniter'a özgü olarak çerçevelenmemiştir.
Andrew Janke

37
Bu yorumları okuyan ve benim gibi kafam karışan gelecekteki insanlar için: Bu soru bu soruya gönderilmedi. Bu sorunun CodeIgniter ile hiçbir ilgisi yoktu. Kapatılmış ve tüm cevapları bu soruya taşınmış olan CodeIgniter'den özellikle bahseden yinelenen bir soru vardı. Bu cevap eski kapalı sorudan bu korunan soruya taşınan cevaplardan biriydi. Yine de, bu cevap yanıltıcı. Onu reddettim - diğerleri de aynı şeyi yapmalı çünkü yeni evinde yanlış. Yazar bunu silmeli veya birleştirme geri alınmalıdır.
ArtOfWarfare

92

Her şeyden önce zihninizi karışıklıktan çıkarın ve basitleştirin ve anlayacaksınız.

URI => Tekdüzen Kaynak Tanımlayıcısı Kaynağın tam adresini, yani konumu, adı veya her ikisini de tanımlar.

URL => Tekdüzen Kaynak Konum Belirleyici Kaynağın konumunu tanımlar.

URN => Tekdüzen Kaynak Adı Kaynağın adını tanımlar

Misal

Https://www.google.com/folder/page.html adresimiz var ,

URI (Tekdüzen Kaynak Tanımlayıcısı) => https://www.google.com/folder/page.html

URL (Tekdüzen Kaynak Konum Belirleyici) => https://www.google.com/

URN (Tekdüzen Kaynak Adı) => /folder/page.html

URI => (URL + URN) veya yalnızca URL veya yalnızca URN


66

Daha önce gönderilen cevaplara küçük bir ek olarak, teoriyi özetlemek için bir Venn diyagramı (Prateek Joshi'nin güzel açıklamasından ):

resim açıklamasını buraya girin

Ve bir örnek (ayrıca Prateek'in web sitesinden):

resim açıklamasını buraya girin


20
İkinci illüstrasyonun yanlış olduğuna inanıyorum. Url.spec.whatwg.org/#url-writing spesifikasyonuna göre URL, göreli URL veya mutlak URL olarak yazılmalı, ardından isteğe bağlı olarak "#" ve bir parça yazılmalıdır. Yani, #postsparça kimliği URL'nin bir parçası olabilir
ruvim

7
İki resim birbiriyle çelişiyor.
patapouf_ai

53

Bu, bir web profesyoneli olarak karşılaştığım en kafa karıştırıcı ve muhtemelen alakasız konulardan biridir.

Anladığım kadarıyla, bir URI, bir şeyin ve konumunun hem benzersiz adını (tanımlamasını) hem de tanımlayabilen kabul edilen bir formatı takip eden bir şeyin açıklamasıdır.

İki temel alt küme vardır - konumu tanımlayan URL'ler (özellikle bir web sayfasını aramaya çalışan bir tarayıcı için) ve bir şeyin benzersiz adını tanımlayan URN'ler.

URN'leri GUID'lere benzer olarak görme eğilimindeyim. Bunlar, sadece şeylere benzersiz isimler sağlamak için standartlaştırılmış bir metodolojidir. Bir şirketin adını kullanan ad alanı bildiriminde olduğu gibi - bir metin üzerinde o metin satırına karşılık gelen bir yerde oturan bir kaynak yok gibi değil - bir şeyi benzersiz bir şekilde tanımlar.

Ayrıca URI teriminden tamamen kaçınmaya ve şeyleri sadece URL veya URN açısından tartışmaya eğilimliyim, çünkü çok fazla karışıklığa neden oluyor. İnsanlar için gerçekten cevaplamaya çalışmamız gereken soru semantiğin çok fazla değil, ancak bir programlama durumuna yaklaşımını değiştirecek pratik bir fark olup olmadığı terimleriyle karşılaşıldığında nasıl tanımlanacağı. Örneğin, biri beni sohbette düzeltirse ve "oh, bu bir URL değil, bir URI" diyorsa onunla dolu olduğunu biliyorum. Birisi "kaynağı tanımlamak için bir URN kullanıyoruz" derse, bunu bir sunucuda bulamadığımız için yalnızca benzersiz bir şekilde adlandırdığımızı anlamam daha olasıdır.

Eğer üs dışına gidersem lütfen bana bildirin


4
Hayır, bence haklısın. URI'ya karşı URL'ye karşı URL'ye karşı URL'ye ve URI'ya ref vb. Anlambilimleri çoğu geliştirici için işe yaramaz, çünkü anlamsız (üretken olmayan, karar vermede önemsiz) tartışmaları yönlendirir. redirect_urlBunun yerine Google API kullanılıyorsa redirect_uri, kimse gerçekten umursar mı?

53

Kimlik = Konum İçeren Ad

Her URL ( U niform R esource L ocator) bir URI (olan U niform R esource ben , dentifier) soyut anlamda, ama her URI URL değil. URI'nin başka bir alt kategorisi, adlandırılmış bir kaynak olan ancak mailto, news, ISBN gibi URI'lerin nasıl bulunacağını belirtmeyen URN'dir ( U niform R esource N ame). Kaynak

resim açıklamasını buraya girin

URN:

  • URN Biçimi: urn:[namespace identifier]:[namespace specific string]
  • urn: ve: kendilerini temsil et.
  • Örnekler :
    • urn: Uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
    • urn: ISSN: 0167-6423
    • urn: isbn: 096139210x
    • Amazon Kaynak Adları (ARN'ler) benzersiz olarak tanımlanmış bir AWS kaynağıdır.
      • ARN Biçimi: arn:partition:service:region:account-id:resource

URL:

  • URL Biçimi: [scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
  • : // ,? ve # kendilerini temsil ederler.
  • şemaları https, ftp, gopher, mailto, haberler, telnet, dosya, bir, bilgi, whatis, ldap ...
  • Örnekler:

Analoji:
Bir kişiye ulaşmak için: Sürüş (diğerlerinin SMS, e-posta, telefon protokolü), Adres (ana bilgisayar adı diğer telefon numarası, e-posta kimliği) ve kişi adı (göreceli yolu olan nesne adı)


Küçük kelime oyunu: [domain] ve [port] arasında iki nokta üst üste olmalıdır. IE: example.com:1234
Rex Schrader

42

URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

URL'ler, URI'lerin (ayrıca URN'leri de içeren) bir alt kümesidir.

Temel olarak, bir URI, bir URL'nin bir konumu ve bir URN'nin bir adı belirttiği genel bir tanımlayıcıdır.


1
URL'ler gerçek bir URI alt kümesi değildir. Sen vaid URL karakterlerle yapabilir [ve ]ancak bir URI.
Adam Gent

4
Köşeli ayraçlar URI'lerde veya URL'lerde geçerli değildir. Özelliklere birçok referansı olan bu soruya bakın: URL'lerde köşeli parantezlere izin veriliyor mu? . Her ikisinde de köşeli ayraçlar göründüğünde kodlanmalıdır.
Stephen Ostermiller

35

URI'leri düşünürken kullanmak gibi başka bir örnek bir XML belgesinin xmlns özniteliğidir:

<rootElement xmlns:myPrefix="com.mycompany.mynode">
    <myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>

Bu durumda com.mycompany.mynode, XML belgemde kullanan tüm öğeler için "myPrefix" ad alanını benzersiz bir şekilde tanımlayan bir URI olacaktır. Bu bir URL DEĞİLDİR, çünkü yalnızca bir şeyi bulmak için kullanılır, kendi başına bir şeyi bulmak için kullanılmaz.


28

URI ve URL'yi açıkça ayırt etmekte güçlükler nedeniyle, hatırladığım kadarıyla W3C, URI ve URL arasında artık bir fark yaratmıyor ( http://www.w3.org/Addressing/ ).


Belki bu bölümü kaçırdım, ancak sağlanan bağlantıda URL ve URI arasındaki farkı kaldıran herhangi bir referans görmüyorum, yalnızca karışıklığı kabul ediyor ve URL'yi yanlış referansta bulunan spesifikasyonların URI'ye referans olması için güncellenmesini istiyoruz.
Tim Gautier

27

Aynı şey . URI, bir URL'nin genelleştirilmesidir. Başlangıçta, URI'lerin URL'lere (adresler) ve URN'lere (adlar) bölünmesi planlanmıştı, ancak bir URL ile URI arasında çok az fark vardı ve http URI'lar, gerçekte herhangi bir kaynak bulamamış olsalar bile ad alanları olarak kullanılıyordu.


Bunun tam tersi olduğunu düşündüm. Bir URL somut bir nesneyi ifade eder ve bir URI buna veya bir konsepte veya başka bir şeye başvurabilir.
Chris Charabaruk

4
URL bir kaynağı bulur ve bir kaynağı tanımlayan bir tür URI'dir.
Mark Cidade

URL'nin tanımı zaman içinde değiştiği için aynı şey oldukları doğrudur. URL'ler eskiden belirli bir URI türüydü, ancak buna neden olan karışıklık nedeniyle W3C, URL'yi URI anlamına gelecek şekilde yeniden tanımladı.
Stephen Ostermiller

25

URI ve URL

URI, URL, URN

Yukarıdaki görüntüden de anlaşılacağı gibi, burada ç farklı bileşen var. Bu gibi konuları tartışırken genellikle kaynağa gitmek en iyisidir, bu yüzden Tim Berners-Lee, et. ark. in RFC 3986: Tekdüzen Kaynak Tanımlayıcısı (URI): Genel Sözdizimi:

Tekdüzen Kaynak Tanımlayıcısı (URI), soyut veya fiziksel bir kaynağı tanımlayan küçük bir karakter dizisidir.

Bir URI ayrıca bir konumlandırıcı, bir ad veya her ikisi olarak sınıflandırılabilir. “Tekdüzen Kaynak Konum Belirleyicisi” (URL) terimi, bir kaynağın tanımlanmasına ek olarak, birincil erişim mekanizmasını (ör. Ağ “konumu”) tanımlayarak kaynağı bulmak için bir araç sağlayan URI'lerin alt kümesini ifade eder.



17

Wikipedia burada ihtiyacınız olan tüm bilgileri verecektir. Http://en.wikipedia.org/wiki/URI adresinden alıntı :

URL, bir kaynağın tanımlanmasına ek olarak, birincil erişim mekanizmasını veya ağ "konumunu" tanımlayarak kaynağın üzerinde hareket etme veya bir temsili elde etme aracı sağlayan bir URI'dır.


16

URL

URL, belirli bir kaynağın ağ konumunu tanımlayan bir URI uzmanlığıdır. Bir URN'den farklı olarak, URL kaynağın nasıl elde edileceğini tanımlar. URL'leri her gün http://example.comvb. Biçiminde kullanırız. Ancak bir URL'nin HTTP URL olması gerekmez, ftp://example.comvb. De olabilir .

URI

URI, kaynağı konuma, ada veya her ikisine göre tanımlar. Çoğu zaman, bir kaynağa konum tanımlayan URI'ları kullanırız. Bir URI'nin bir kaynağı hem isim hem de yere göre tanımlayabilmesi, bence çok fazla karışıklığa neden oldu. Bir URI'nin URL ve URN olarak bilinen iki uzmanlığı vardır.

URL ve URI arasındaki fark

URI bazı kaynakların tanımlayıcısıdır, ancak bir URL size bu kaynağı edinmeniz için belirli bilgiler verir. Bir URI bir URL'dir ve bir yorumcunun işaret ettiği gibi, artık uygulamaları açıklarken URL kullanmak yanlış kabul edilir. Genellikle, URL bir kaynağın hem konumunu hem de adını açıklarsa, kullanılacak terim URI olur. Çoğumuzun her gün karşılaştığı durum genellikle olduğundan, URI doğru terimdir.


15

RFC 3986 uyarınca , URI'ler aşağıdaki parçalardan oluşur:

scheme://authority/path?query

URI , bir sunucudaki ( yetki ) bir kaynağa ( yola ) veya uygulamaya ( sorguya ) erişim protokolünü açıklar .

Resim açıklamasını buraya girin

Tüm URL'ler URI'lardır ve tüm URN'ler URI'lardır, ancak tüm URI'ler URL değildir.

Lütfen daha fazla ayrıntı için bakınız:

Vikipedi


3
Bu, bana en az 6 yaşında olan ve çok daha eksiksiz olan ve aslında URI'leri URL'lerden nasıl ayırt edeceğimizi açıklamaya çalışan diğer cevapların kapsamadığı hiçbir şeyi öğretmez.
ccjmne

2
Tipik görünmese de görüntünün bir Venn şeması olduğunu belirtmek önemlidir . İnsanların bunu "URL'nin parçaları" olarak yorumlamaya çalıştıklarını gördüm. Bu şema yok değil o URI'ları bir URN'leri bir URL ve sonu ile başlamak demek.
Stephen Ostermiller

14

URI, kaynağı konuma, ada veya her ikisine göre tanımlar. Çoğu zaman, bir kaynağa konum tanımlayan URI'ları kullanırız. Bir URI'nin bir kaynağı hem isim hem de yere göre tanımlayabilmesi, bence çok fazla karışıklığa neden oldu. Bir URI'nin URL ve URN olarak bilinen iki uzmanlığı vardır.

URL, belirli bir kaynağın ağ konumunu tanımlayan bir URI uzmanlığıdır. Bir URN'den farklı olarak, URL kaynağın nasıl elde edileceğini tanımlar. URL'leri her gün http://stackoverflow.com vb . Şeklinde kullanırız . Ancak bir URL'nin HTTP URL olması gerekmez ftp://example.com, olabilir , vb.


11

URI ve URL terimleri kesinlikle tanımlanmış olsa da, çoğu terim için tanımlandığından başka şeyler kullanır.

Örneğin Apache'yi ele alalım. Bir Apache sunucusundan http://example.com/foo istenirse, aşağıdaki ortam değişkenleri ayarlanır:

  • REDIRECT_URL: /foo
  • REQUEST_URI: /foo

Mod_rewrite etkinken, şu değişkenlere de sahip olacaksınız:

  • REDIRECT_SCRIPT_URL: /foo
  • REDIRECT_SCRIPT_URI: http://example.com/foo
  • SCRIPT_URL: /foo
  • SCRIPT_URI: http://example.com/foo

Bazı karışıklıkların nedeni bu olabilir.


10

Bu belgeye bakın . özellikle,

URL, bir kaynağı, sahip olabileceği diğer bazı özelliklerden ziyade, birincil erişim mekanizmasının (ör. ağ "konumu") temsili yoluyla tanımlayan bir URI türüdür.

Gerçekten çok açık bir terim değil.


10

Yazıları okuduktan sonra çok alakalı yorumlar buluyorum. Kısacası, URL ve URI tanımları arasındaki karışıklık kısmen hangi tanımın yazılım geliştirmede URI kelimesinin hangi ve gayri resmi kullanımına bağlı olduğuna bağlıdır.

Tanıma göre URL, URI'nin [RFC2396] bir alt kümesidir. URI URN ve URL içeriyor. Hem URI hem de URL'nin her biri, kendilerine URI veya URL olma durumunu sunan kendi sözdizimine sahiptir. URN, bir kaynağı benzersiz bir şekilde tanımlamak içindir, URL ise bir kaynağı bulmak içindir. Bir kaynağın birden fazla URL'ye ancak yalnızca tek bir URN'ye sahip olabileceğini unutmayın. [RFC2611]

Web geliştiricileri ve programcıları olarak neredeyse her zaman URL ve dolayısıyla URI ile ilgileneceğiz. Artık bir URL, tüm parça şemasına sahip olacak şekilde tanımlanmıştır: şemaya özgü bölüm, örneğin https://stackoverflow.com/questions . Bu bir URL ve aynı zamanda bir URI. Şimdi, sayfaya gömülü ../index.html gibi göreli bir bağlantı düşünün. Bu artık tanım gereği bir URL değil. Hala "URI referansı" olarak adlandırılan şeydir [RFC2396].

URI kelimesi göreceli yollara başvurmak için kullanıldığında, "URI-referansı" nın aslında düşünülen şey olduğuna inanıyorum. Dolayısıyla gayri resmi olarak, yazılım sistemleri mutlak adres için göreli yol ve URL'ye atıfta bulunmak için URI kullanır. Bu anlamda, göreli bir yol artık bir URL değil, yine de URI'dir.


10

İşte benim sadeleştirme:

URN: benzersiz kaynak adı, yani "ne" (ör. Urn: issn: 1234-5678). Bu benzersiz olmak içindir .. hiçbir farklı dokümanda aynı urn sahip olamaz gibi. Biraz "uuid" gibi

URL: bulmak için "nerede" (ör. Https://google.com/pub?issnid=1234-5678 .. veya ftp://somesite.com/doc8.pdf )

URI: bir URN veya URL olabilir. Bu bulanık tanım W3C ve IETF tarafından üretilen RFC 3986 sayesinde.

URI'nin tanımı yıllar içinde değişti, bu yüzden çoğu insanın kafasının karışması mantıklı. Ancak, http://somesite.com/something adresine bir URL veya URI olarak başvurabileceğiniz gerçeğinde şimdi tesadüfen alabilirsiniz ... an her iki şekilde de haklı olacaksınız (en azından şimdiye kadar olan zaman için .. .)


9

Aynı şeyi merak ediyordum ve bunu buldum: http://docs.kohanaphp.com/helpers/url .

url::current()Yöntemi kullanarak net bir örnek görebilirsiniz . Bu URL'niz varsa : http://example.com/kohana/index.php/welcome/home.html?query=stringkullanarak , dokümantasyona göre: welcome / homeurl:current() olan URI'yi size verir


1
Bu cevap yanlış. URI, URL'nin bir parçası değildir. Aksine URL'ler bir tür URI'dır. Ayrıca, bu cevaptaki bağlantı koptu (ve uygun bir yedek bulamıyorum.)
Stephen Ostermiller

8

URI'ler, Web'deki kaynakları ve elektronik posta kutuları gibi diğer İnternet kaynaklarını tekdüze ve tutarlı bir şekilde tanımlama ihtiyacından ortaya çıktı . Yani, yeni bir widget türü tanıtılabilir : widget kaynaklarını tanımlamak veya tel kullanmak için URI'ler : URI'ler veya web bağlantılarının çağrıldığında telefon görüşmeleri yapılmasına neden olmak URI'ler .

Bazı URI'ler bir kaynağı (DNS ana bilgisayar adı ve o makinedeki bir yol gibi) bulmak için bilgi sağlarken, bazıları saf kaynak adları olarak kullanılır. URL tanımlayıcıları için ayrılmıştır kaynak bulma vardır gibi 'http' URL'ler dahil, http://stackoverflow.com ana bilgisayarda verilen yolda web sayfasını tanımlar. Başka bir örnek, belirli bir adresteki posta kutusunu tanımlayan mailto: fred@mail.org gibi 'mailto' URL'leridir .

URN'ler , konumlandırıcılardan ziyade saf kaynak adları olarak kullanılan URI'lerdir . Örneğin, URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com , 'İleti Kimliği' alanında onu içeren e-posta iletisini tanımlayan bir URN'dir . URI, bu mesajı diğer herhangi bir e-posta mesajından ayırt etmeye yarar. Ancak iletinin adresini herhangi bir mağazada sağlamaz.


7

Bunu cevaplamak için başka bir soruya değiştirdiğim bir cevaba yaslanacağım . Bir URI'ye iyi bir örnek, bir Amazon S3 kaynağını nasıl tanımladığınızdır. Hadi alalım:

s3://www-example-com/index.html [incir. 1]

önbelleğe alınmış bir kopyası olarak oluşturduğum

http://www.example.com/index.html [incir. 2]

Amazon'un S3-US-West-2 bölgesinde veri merkezinde.

StackOverflow s3:// protokol şemasına köprü oluşturmama izin verse bile , kaynağı bulmakta size hiçbir faydası olmaz . O Çünkü tanımlar bir kaynak , şek. 1 geçerli bir URI. Aynı zamanda geçerli bir URN'dir, çünkü Amazon, grubun ( authorityURI'nin kısmı için terimleri ) veri merkezleri arasında benzersiz olmasını gerektirir . Öyle yararlı onu bulma konusunda, ancak veri merkezi göstermez. Bu nedenle URL olarak çalışmaz.

Peki, bu durumda URI, URL ve URN arasındaki farklar nelerdir?

NOT: RFC 3986, URI'ları şu şekilde tanımlar :scheme://authority/path?query#fragment


6

Açıklanması kolay:

Aşağıdakileri varsayalım

URI Adınız

URL, sizinle iletişim kurabilmeniz için adınızı içeren adresinizdir.

  • benim adım Loyola

    Loyola URI

  • adresim TN, Chennai 600001.

TN, Chennai 600 001, Loyola URL'dir

Umarım anlarsın,

Şimdi kesin bir örnek görelim

http://www.google.com/fistpage.html

yukarıda http://www.google.com/fistpage.html ( URL ) adresini kullanarak firstpage.html ( URI ) adlı bir sayfayla iletişim kurabilirsiniz .

Bu nedenle URI, URL'nin alt kümesidir ancak tersi değildir.


4
Bu cevap yanıltıcı. Wikipedia'dan Alıntı "Tekdüzen Kaynak Adı (URN) bir kişinin adı gibi işlev görürken, Tekdüzen Kaynak Konum Belirleyicisi (URL) o kişinin sokak adresine benzer. o." Ayrıca hem URN'ler hem de URL'ler URI'lardır.
Vegan Sv

4

Tekdüzen Kaynak Tanımlayıcısı (URI), İnternet Kaynağını tanımlayan bir karakter dizesidir.

En yaygın URI, bir İnternet etki alanı adresini tanımlayan Tekdüzen Kaynak Konum Belirleyicisi'dir (URL). Çok yaygın olmayan başka bir URI türü de Evrensel Kaynak Adı'dır (URN).


4

Buldum:


Tekdüzen bir kaynak tanımlayıcısı (URI) büyük bir resimden ibarettir. URI'leri / URI'leri konum belirleyiciler (tekdüzen kaynak konumlandırıcıları-URL) veya adlar (tekdüzen kaynak adı-URN) veya her ikisi olarak sınıflandırılabilir. Temel olarak, bir URN bir kişinin adı gibi işlev görür ve URL o kişinin adresini gösterir. Uzun hikaye kısa, bir URN bir öğenin kimliğini tanımlarken, URL sağlar bulmak için yöntemi tanımlar, nihayet bu iki kavramı kapsüllemek URI olduğunu


2

En iyi (teknik) özet imo bu

IRI, URI, URL, URN ve Jan Martin Keil'den farkları :

IRI, URI, URL, URN ve farklılıkları

Anlamsal Web ile uğraşan herkes tekrar tekrar IRI , URI , URL ve URN terimlerini karşılıyor . Bununla birlikte, tam anlamlarıyla ilgili bazı karışıklıklar olduğunu sık sık gözlemliyorum. Ve elbette, diğerleri de bunu fark etti (örneğin RFC3305 veya Google'da arama yapın). Dürüst olmak gerekirse, başlangıçta kendimi bile karıştırdım. Ama aslında mesele bu kadar karmaşık değil. Farklılıkların ne olduğunu görmek için belirtilen terimlerin tanımlarına bir göz atalım:

URI

Bir Uniform Resource Identifier soyut veya fiziksel kaynağı tanımlayan bir karakter kompakt dizisidir. Karakter kümesi, bazı ayrılmış karakterler hariç olmak üzere US-ASCII ile sınırlıdır. İzin verilen karakter kümesinin dışındaki karakterler Yüzde Kodlaması kullanılarak temsil edilebilir. URI, konum belirleyici, ad veya her ikisi olarak kullanılabilir. URI bir konumlandırıcıysa, bir kaynağın birincil erişim mekanizmasını açıklar. URI bir adsa, kaynağı benzersiz bir ad vererek tanımlar. Bir URI'nin sözdizimi ve semantiğinin tam özellikleri, ilk iki noktadan önceki karakterler tarafından tanımlanan kullanılan Şemaya bağlıdır. [RFC3986]

URN

Bir Tekdüzen Kaynak Adı şeması urn bir URI kalıcı, konumdan bağımsız, kaynak tanımlayıcı olarak hizmet amaçlanmıştır olduğunu. Tarihsel olarak, terim herhangi bir URI'ye de atıfta bulunur. [RFC3986] Bir URN, bir Ad Alanı Tanımlayıcısı (NID) ve bir Ad Alanına Özel Dize (NSS) içerir: urn :: NSS'nin sözdizimi ve semantiği, her NID için spesifiktir. Kayıtlı NID'lerin yanı sıra, resmi kayıt sürecinden geçmeyen birkaç NID daha var. [RFC2141]

URL

Bir Uniform Resource Locator bir kaynak belirlenmesi ek olarak, birincil erişim mekanizması [RFC3986] anlatarak kaynak yerini belirlemek için bir araç sağlar, bir URI. Bir dizi Şema aracılığıyla URL'nin kesin bir tanımı olmadığından, "URL yararlı ancak gayri resmi bir kavramdır", genellikle URN içermeyen bir URI alt kümesine atıfta bulunur [RFC3305].

IRI

Bir Internationalized Kaynak Tanımlayıcısı bir URI benzer bir şekilde tanımlanır, ancak karakter kümesi Evrensel Kodlu Karakter Kümesi için uzatılır. Bu nedenle, ayrılmış karakterler dışında herhangi bir Latin ve Latin olmayan karakter içerebilir. URI tanımını genişletmek yerine, IRI terimi, net bir ayrımın yapılmasını sağlamak ve uyumsuzluklardan kaçınmak için tanıtıldı. IRI'lar, Evrensel Kodlu Karakter Kümesinin desteklendiği durumlarda kaynakları tanımlamak için URI'lerin yerini almayı amaçlamaktadır. Tanım olarak, her URI bir IRI'dir. Ayrıca, IRI'lerin URI'lara yönelik tanımlanmış bir hedef eşlemesi vardır: Her IRI tam olarak bir URI ile eşlenebilir, ancak farklı IRI'lar aynı URI ile eşlenebilir. Bu nedenle, bir URI'den bir IRI'ye dönüştürme orijinal IRI'yı üretmeyebilir. [RFC3987]

Özet olarak şunu söyleyebiliriz:

IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)

Anlamsal Web Sorunları İçin Sonuçlar

RDF, varlıkları adlandırmak için IRI'lerin kullanılmasına açıkça izin verir [RFC3987]. Bu, varlık adlarında hemen hemen her karakteri kullanabileceğimiz anlamına gelir. Öte yandan, genellikle erken durum yazılımlarıyla uğraşmak zorundayız. Bu nedenle, ASCII olmayan karakterler kullanarak sorun yaşaması pek olası değildir. Bu nedenle, varlıklar için URI olmayan adlardan kaçınmanızı ve http URI'leri [LINKED-DATA] kullanmanızı öneririz. Kısaca söylemek gerekirse: Varlıklarınızı adlandırmak için yalnızca URL'leri kullanın. Elbette, bir URN tarafından adlandırılan mevcut varlıkları ifade edebiliriz. Ancak, bu tür tanımlayıcıları yeni oluşturmaktan kaçınmalıyız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.