تفاوت URL و URN و URI چیست؟

امیرحسین بیگدلو 12 ماه قبل

با اینکه اکثر برنامه نویسان با URL آشنا هستند و کمی هم درباره URI میدانند اما کمتر توسعه دهنده ای را پیدا میکنید که بداند URN چیست. در این مقاله تفاوت های بین مفاهیم URL و URN و URI را با یاد میگیریم.

 

ویدیو پیشنهادی: آشنایی با بخش های مختلف پروتکل http

 

# URL چیست؟

ما با URL ها هر روز سر و کار داریم. URL مخفف کلمه Uniform Resource Locator است. شاید نام کامل آن عجیب به نظر برسد، اما می‌توانید به سادگی آن را به عنوان یک آدرس در نظر بگیرید. URL آدرس یک منبع در وب است. URL همیشه یک منبع منحصر به فرد را نشان می دهد و می تواند یک صفحه HTML، یک سند CSS، یک تصویر و غیره باشد.

 

یک URL از پروتکلی برای دسترسی به منبع استفاده می کند که می تواند HTTP، HTTPS، FTP و غیره باشد. URL عمدتاً به عنوان آدرس وب سایت شناخته می شود که کاربر می تواند آن را در نوار آدرس خود پیدا کند. نمونه ای از URL در زیر آورده شده است:

https://jwt.io
https://auth0.com/docs/get-started#learn-the-basics
https://identicons.dev/static/icons/mono/png/icon-access-token.png
mailto:yourfriend@somewhere.com
ftp://ftpserver.com/myfolder

 

 

+ ساختار URL

قسمت Uniform از URL  ساختار مشترک این رشته های مکان یاب را نشان میدهد. تصویر زیر این ساختار استاندارد را نشان می دهد:

توضیح ساختار url ها

 

هر URL از بخش های زیر ساخته میشود:

  • Scheme: به پروتکلی گفته میشود که باید برای دسترسی به منبع از آن استفاده شود.
  • Domain: سرور میزبان منبع را نشان می دهد که می تواند یک نام دامنه یا یک آدرس IP باشد.
  • Port: پورت پروتکلی است که درخواست دسترسی به منبع به آن ارسال می شود. اگر وجود نداشته باشد به این معنی است که باید از پورت پیش فرض استفاده شود.
  • Path: مسیر منبع روی سرور میزبان است.
  • Parameters: اطلاعات اضافی اختیاری هستند که به سرور میزبان ارائه می شوند.
  • Anchor: بخش نشان دهنده یک بخش خاص در داخل منبع است. به آن قطعه(fragment) نیز می گویند.

 

 

# URI چیست؟

کلمه URI مخفف Uniform Resource Identifier است. URI رشته ای است که یک منبع را شناسایی می کند اما با URL تفاوت دارد. هم URL و هم URI از مشخصات یکسانی پیروی می کنند. با این حال، در حالی که URL ها به شما امکان می دهند یک منبع را پیدا کنید، یک URI به سادگی یک منبع را شناسایی می کند. این بدان معنی است که یک URI لزوماً به عنوان آدرسی برای دریافت یک منبع در نظر گرفته نشده است. فقط به عنوان یک شناسه در نظر گرفته شده است.

 

فرض کنید که در تنها خانه زرد رنگ شهر زندگی میکنید. اگر در زمان آدرسی دهی بگویند که خانه زرد رنگ شهر، از یک URI استفاده شده است. درست است که آدرس خیابان یا کوچه مشخص نشده اما میتوان خانه شما را شناسایی کرد.

 

تفاوت url و uri

 

از طرف دیگر، هر URL یک URI است. فراتر از این واقعیت که از همان نحو URI استفاده می کند، یک منبع را نیز از طریق یک آدرس شناسایی می کند. به عبارت دیگر، URL شناسه‌ای است که به شما امکان می‌دهد یک منبع را شناسایی کنید و در عین حال مسیرهایی را برای دسترسی به آن به شما می‌دهد.

 

آدرس منزل شما نه تنها راهنمایی هایی برای یافتن آن می دهد، همچنین آن را شناسایی می کند تا نتوانید آن را با یکی دیگر اشتباه بگیرید. به طور خلاصه، URL ها زیرمجموعه ای از URI ها هستند.

 

اکنون احتمالاً از خود می‌پرسید که اگر URI آدرس یک منبع نیست، پس چه هدفی دارد. مثالی از URI که یک URL نیست، شناسه فضای نام XML است. اگر تا به حال با XML کار کرده اید، ممکن است سندی مشابه موارد زیر پیدا کرده باشید:

<?xml version = "1.0" encoding = "UTF-8"?>
<rec:recipe xmlns:recipe = "https://the-great-chef.com/languages/recipe">
  <rec:title>Spaghetti carbonara</rec:title>
  <rec:author>Anonymous</rec:author>
  <rec:ingredients>
    ...
  </rec:ingredients>
</cont:contact>

 

رشته https://the-great-chef.com/languages/recipe یک URI است که فضای نام XML را مشخص می‌کند. اگرچه فرمت URI مانند URL است، اما به شما اجازه دسترسی به هیچ منبعی در وب را نمی دهد.

 

 

# URN چیست؟

شاید URN نسبت به URL و URI محبوبیت کمتری داشته باشد، اما متعلق به همان خانواده است. URN مخفف Uniform Resource Name است و دامنه آن شناسایی منابع به صورت دائمی است، حتی پس از اینکه آن منبع دیگر وجود نداشته باشد.

 

برخلاف URL، مفهوم URN هیچ اطلاعاتی در مورد مکان یابی منبع ارائه نمی کند، بلکه آن را به سادگی شناسایی می کند، درست مانند یک URI خالص. ساختار URN به شکل زیر است:

urn:<NAMESPACE-IDENTIFIER>:<NAMESPACE-SPECIFIC-STRING>

 

مقدار <NAMESPACE-IDENTIFIER> مخفف رشته ای است که نشان دهنده دسته منبعی است که می خواهید شناسایی کنید. مقدار <NAMESPACE-SPECIFIC-STRING> شناسه خاص منبع است و قالب آن به شناسه فضای نام بستگی دارد.

 

نمونه‌هایی از URN در زیر آمده است:

urn:isbn:1234567890
urn:ISSN:0167-6423
urn:ietf:rfc:2648

 

این URN ها اشیاء از انواع مختلف را شناسایی می کنند. به عنوان مثال، urn:isbn:1234567890 یک نشریه را از طریق سیستم ISBN شناسایی می کند. urn:ISSN:0167-6423 یک نشریه را از طریق سیستم ISSN شناسایی می کند. urn:ietf:rfc:2648 یک RFC است که توسط IETF صادر شده است.

 

برخلاف URI، این URN ها شناسه هایی هستند که توسط سازمان های استاندارد عمومی صادر می شوند و ممکن است شامل هر چیزی که نیاز به شناسه استاندارد در فعالیت های انسانی داشته باشد و فقط به سیستم های کامپیوتری و نرم افزاری محدود نمیشود.

 

 

# جمع بندی

امیدوارم اکنون تصویر واضح تری از رابطه بین URL ها، URI ها و URN ها داشته باشید. برای خلاصه کردن تفاوت‌های بین این مفاهیم همپوشانی، این اینفوگرافیک را بررسی کنید:

اینفوگرافیک تفاوت های بین url و urn و uri

مطالب مشابه



مونگارد