نشانی وب یا URL چیه و چطور کار می‌کنه.

Uniform Resource Locator نشانی وب یا URL یه شناسه منحصر به فرده که برای پیدا کردن یه منبع در اینترنت ازش استفاده میشه. URLها شامل بخش‌های متعددی هستن؛ از جمله پروتکل و نام دامنه - که مشخص می‌کنن مرورگر کجا و به چه طریقی می‌تونه به یه منبع دسترسی پیدا کنه.کاربرا از URL از طریق تایپ مستقیم در نوار آدرس مرورگر یا کلیک کردن روی لینک تو یه صفحه‌‌وب، بوک‌مارک‌ها و ... استفاده می‌کنن.وقتی آدرسی رو در مرورگرتون تایپ می‌کنید، اتفاقات زیادی در پشت صحنه می‌افته. و بیشترش توسط قسمت‌های مختلف URL که تایپ کردید تعیین میشه. بیایید نگاه دقیق تری داشته باشیم.يو آر ال می‌تونه از بخش‌های مختلفی تشکیل شده باشه. مثل یه hostname که به آدرس IP یه منبع بخصوص تو اینترنت مربوط میشه،‌ و یه سری اطلاعات بیشتر که به مرورگر و سرور میگن که چطور باهم در تعامل باشن.میتونید آدرس IP رو چیزی شبیه به شماره تلفن و نامِ هاست رو اسم کسی که شماره تلفن متعلق بهشه در نظر بگیرید. DNS در پس‌زمینه مثل یه دفترچه تلفن کار می‌کنه و hostname رو به آدرس‌های IP که شبکه‌ها برای مسیریابی ترافیک استفاده می‌کنن، ترجمه می‌کنه.در تئوری، هر URL معتبر به یه منبع منحصر به فرد اشاره میکنه. این منبع می‌تونه یه صفحه CSS، HTML، یه تصویر و ... باشه. ولی در عمل، بعضی استثناها وجود داره، رایج ترینشون URLیه که به منبعی اشاره میکنه که دیگر وجود ندارد یا منتقل شده. از اونجایی که منبع نشان‌داده‌شده توسط URL و خود URL توسط وب سرور مدیریت میشن، این بر عهده مالک وب سروره که به منبع و URL مرتبط باهاش به دقت رسیدگی کنه.خب از اینکه چی بر عهده کیه بگذریم. ساختار URL چطوریه؟ URLهای مطلق و نسبی چه فرقی باهم دارن؟ در ادامه به این موضوعات می‌پردازیم.ساختار URLURL structureاساسا URL ایده نام دامنه رو با مسیر فایل(file patch) ترکیب کرده. همرا با یسری چیزای دیگه که به پیدا کردن سرور مورد نظر تو اینترنت و نحوه تعامل باهاش کمک می‌کنه.نکته: مسیر فایل رشته‌ای از کاراکترهاست که برای شناسایی یه مکان بخصوص در ساختار دایرکتوری استفاده میشه. شبیه به آدرس زیر تو ویندوز.C:\Documents\Personal\myfile.txtبخش اول URL مربوط به پروتکوله که مشخص می‌کنه مروگر به چه نحوی با منبع تعامل داشته باشه. قسمت دوم مربوط به نام دامنه‌ست؛ مثل virgool.io بعد از نام دامنه، URL میتونه حاوی موارد زیر باشه:مسیری به یه صفحه یا فایل خاص تو یه دامنه؛یه پورت شبکه که به منظور ایجاد اتصال ازش استفاده میشه؛ارجاع به یه نقطه بخصوص داخل صفحه یا فایلی که داره بهش اشاره می‌که، مثل یه anchor نام‌گذاری شده در یه فایل HTML.پارامترهای جستجو-- معمولاً تو URLهای مربوط به نتایج جستجو پیدا میشه.توجه: می‌تونید URL رو مثل یه آدرس پستی معمولی فرض کنید: رویه (Scheme) یا پروتکل شبیه خدمات پستیه که می‌خواید استفاده کنید، نام دامنه مثل اسم شهر. مسیر ساختمانی رو که تحویل‌گیرنده توش مستقره نشون میده. پارامترها اطلاعات بیشتری مثل: تعداد واحدهای اون ساختمان رو نشون میدن. و در نهایت، anchor نشان دهنده شخصیه که بسته رو براش ارسال کردید.اجزای URLAnatomy of a URLProtocol یا Scheme پروتکل یا رویهاولین بخش URL رویه‌ست (Scheme). این بخش نشان دهنده پروتکلیه که مرورگر و سرور باید طبقش باهم ارتباط برقرار کنن. (پروتکل مجموعه‌ قوائدی برای تبادل یا انتقال داده‌ها تو یه شبکه کامپیوتریه).یه سری از پروتکل‌هایی که بیشتر باهاش سروکار داریم:HyperText Transfer Protocol (HTTP)این پروتکل بنیادی وبه و تعیین میکنه که وب‌سرورها و مرورگرها در پاسخ به دستورات خاص چه اقداماتی انجام بدن.HTTP Secure (HTTPS)یه فرم از HTTP که با استفاده از یه لایه امن و رمزگذاری شده برای انتقال امن‌تر اطلاعات کار میکنه.File Transfer Protocol (FTP)از این پروتکل برای انتقال فایل‌ها از طریق اینترنت استفاده میشه.تو مرورگر‌های امروزی دیگه نیازی به نوشتن پروتکل نیست. اگر وارد وب سایتی مثل «virgool.io» بشین، مرورگر شما به طور خودکار پروتکل مناسب رو تعیین میکنه.Authorityمرجعبعدی Authority هستش که با « //: » از رویه جدا میشه. در تصویر بالا Authority یا مرجع شامل دو بخش:دامنه: دامنه به وب‌سروری که مورد در‌خواسته اشاره می‌کنه. معمولاً تو این قسمت دامنه مشاهده میشه، اما این امکان هم وجود داره که از یه آدرس IP بجاش استفاده بشه.پورت: ابزارهای شبکه از آدرس IP برای رسوندن اطلاعات به دستگاه مورد نظر تو شبکه استفاده می‌کنن. شماره پورت به دستگاه میگه ترافیک دریافتی برای چه کاربردی منظور شده. اگه وب‌سرور از پورت‌های استانداردی مثلHTTP ( از شماره پورت ۸۰ برای http و ۴۴۳ برای https استفاده میشه) برای دسترسی به منابع خود استفاده کنه معمولاً شماره پورت ذکر نمی‌شه. در غیر این صورت ذکر شماره پورت الزامیه.Path to resourceمسیربخش مرجع URL، مرورگر شما (یا هر برنامه دیگری) رو به سرور مناسب در شبکه وصل می‌کنه. مسیری که بعدش نوشته‌میشه - که درست مثل یه مسیر تو ویندوز، macOS یا لینوکس کار می‌کنه - شما رو به پوشه یا فایل مورد‌نظر در سرور می‌رسونه. قبل از مسیر و بین هر دایرکتوری و زیر شاخه یه اسلش وجود داره، مثل این:www.example.com/folder/subfolder/filename.htmlآخرین بخش نام فایلیه که با ورود به وب سایت باز میشه. ممکنه اون رو در نوار آدرس نبینید، اما به این معنی نیست که اونجا نیست. برخی از زبان‌هایی که برای ایجاد صفحات وب استفاده میشن، نام و پسوند فایلی رو که مشاهده می‌کنید پنهان می‌کنن. این باعث می‌شه به خاطر سپردن URL و تایپ کردنش آسون تر بشه و ظاهر تمیزتری بهش میده.پ.ن: در روزهای ابتدایی وب، مسیر نشان دهنده مکان فیزیکی فایل در وب سرور بود. امروزه، مسیر بیشتر یه انتزاعه که توسط وب سرورها مدیریت میشه و الزاماً به معنای مکان فیزیکی فایل نیست.Parametersپارامتر‌هااین پارامترها لیستی از جفت‌های کلید/مقدار هستن که با علامت & از هم جدا میشن. وب سرور میتونه از این پارامترها برای انجام کارهای بیشتری مثل جستار استفاده کنه.Queryبخش جستارِ URL برای شناسایی مواردی استفاده میشه که بخشی از ساختار مسیر نیستند. غالباً، وقتی جستجویی انجام می‌دیم یا زمانی که صفحه وب داده‌ها رو از طریق یک فرم ارائه میده باهاشون مواجه میشیم. قسمت query در URL بعد از یه علامت سوال قرار می‌گیره.به عنوان مثال، زمانی که ما در آمازون کلمات کلیدی "wi-fi extensioner" رو جستجو کردیم، با URL زیر مواجه شدیم.https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=wi-fi+extenderفرم جستجو اطلاعات رو به موتور جستجوی آمازون ارسال کرد. همونطور که میبینید، بعد از علامت سوال دو بخش برای جستار(query) وجود داره: یه URL برای جستجو:url=search-alias%3Daps&field۲. کلمات کلیدی‌ای که تایپ کردیم:keywords=wi-fi+extenderاین یه مثال نسبتاً ساده‌ست، شما بیشتر وقتا URLهایی رو با متغیرهای بیشتر(و پیچیده تر) می‌بینید. به عنوان مثال، این URL زمانیه که ما کلمه کلیدی "howtogeek" رو تو گوگل جستجو کردیم:https://www.google.com/search?q=howtogeek&rlz=1C1GCEA_enUS751US751&oq=howtogeek&aqs=chrome..69i57j69i60l4j0.1839j1j4&sourceid=chrome&ie=UTF-8همانطور که می بینید، تو این URL یه سری اطلاعات متفاوتی وجود داره. تو این مورد URL اطلاعاتی درباره زبان جستجو، مرورگر مورد استفاده ما (Chrome) و حتی شماره نسخه مرورگر بهمون میده.FragmentAnchor یا Fragment آخرین بخش URL که ممکنه مشاهده کنید Fragment نامیده میشه. Fragment بعد از علامت هشتگ (#) وجود داره و برای نشون دادن یه مکان بخصوص تو یه صفحه وب استفاده میشه. هنگام کدنویسی صفحه وب، میشه anchorهایی رو برای متن‌های بخصوص مثل عنوان‌ها ایجاد کرد. هنگامی که Fragment مناسب در انتهای URL استفاده میشه، مرورگر بعد از بارگذاری صفحه به آن anchor مراجعه می‌کنه. anchorها و URLهای دارای Fragment اغلب برای ایجاد فهرست مطالب در صفحات وب استفاده میشن که باعث آسون‌تر شدن جستجو میشه. در ادامه یه مثال رو بررسی می‌کنیم. صفحه ویکی‌پدیای رنسانس یه صفحه طولانیه و حدوداً به ۱۱ بخش تقسیم شده که هرکدومشون چندین زیربخش دارن. برای هر عنوان در صفحه یه anchor گنجانده شده و از طریق فهرست مطالبی که در ابتدای مقاله وجود داره که حاوی لینک‌هایی به بخش‌هایی از مقاله‌ن می‌تونید به بخش‌های مختلف مقاله رجوع کنید. این لینک‌ها با گنجاندن Fragmentها کار میکنن.همچنین می تونید از این Fragmentها به طور مستقیم در نوار آدرس یا به عنوان لینک‌های قابل اشتراک‌گذاری استفاده کنید. مثلاً فرض کنید می‌خواید بخشی از صفحه رو که به «روسیه» می‌پردازه به کسی نشون بدید. فقط کافیهه این لینک را براش ارسال کنید:https://en.wikipedia.org/wiki/Renaissance#Russiaقسمت «Russia#» در انتهای URL، بعد از لود شدن صفحه اون‌ها رو مستقیم به بخش روسیه میبره.تفاوت‌های بین URL مطلق و نسبیآنچه تا الان بهش پرداختیم URL مطلق نامیده میشه، اما چیزی به نام URL نسبی وجود داره. در ادامه به بررسی دقیق تفاوت بین این دو می‌پردازیم.بخش های مورد نیاز URL تا حد زیادی به زمینه‌ای که URL در آن استفاده میشه بستگی داره. در نوار آدرس مرورگر شما، یه URL هیچ زمینه‌ای نداره، ولی وقتی از URL تو یه سندی مثل یه صفحه HTML استفاده می‌شه، ماجرا یکم تغییر می‌کنه. ازاونجایی که مرورگر، URL خودِ سند رو از قبل داره می‌تونه از این اطلاعات برای پر کردن قسمت‌های خالی URLهای موجود در سند استفاده کنه.فقط با نگاه کردن به قسمت مسیر URL میتونیم تفاوت بین URL مطلق و URL نسبی رو متوجه بشیم. اگر قسمت مسیر URL با کاراکتر "/" شروع بشه، مرورگر اون منبع رو از ریشه بالای سرور، بدون ارجاع به زمینه ارائه شده توسط سند فعلی می‌گیره.برای روشن تر شدن این موضوع به مثال‌های زیر توجه کنید.مثال‌هایی از URLهای مطلقیو آر ال کاملhttps://developer.mozilla.org/en-US/docs/Learnپروتکل ناآشکار//developer.mozilla.org/en-US/docs/Learnدر این حالت، مرورگر اون URL را با همان پروتکلی که برای بارگیری سند میزبانِ اون URL استفاده شد فراخوانی می کنه.نام دامنه ناآشکار/en-US/docs/Learnاین رایج ترین مورد استفاده برای URL مطلق در HTML است. مرورگر از همون پروتکل و نام دامنه مورد استفاده برای بارگیری سند میزبان آن URL استفاده می‌کنه.توجه: حذف نام دامنه بدون حذف پروتکل امکان پذیر نیست.مثال‌هایی از URLهای نسبیبرای درک بهتر مثال‌های زیر، فرض می‌کنیم که URLها از داخل سند واقع در URL زیر فراخوانی می‌شن:https://developer.mozilla.org/en-US/docs/Learnزیر منابعSkills/Infrastructure/Understanding_URLsاز آنجایی که این URL با « / » شروع نمیشه، مرورگر سعی میکنه سند رو در زیر شاخه‌ای از دایرکتوری که حاوی منبع فعلی است پیدا کنه. پس تو این مثال، ما در واقع می‌خوایم به این URL برسیم:https://developer.mozilla.org/en-US/docs/Learn/Skills/Infrastructure/Understanding_URLsبازگشت در درخت دایرکتوری../CSS/displayدر این مورد، ما از قرارداد نوشتنِ« ../ » استفاده می‌کنیم - که از فایل سیستم یونیکس به ارث رسیده- تا به مرورگر بگیم که می‌خوایم از یه دایرکتوری بالا بریم. در اینجا می‌خوایم به این URL برسیم:https://developer.mozilla.org/en-US/docs/Learn/../CSS/displayکه بصورت زیر میشه ساده‌ش کرد:https://developer.mozilla.org/en-US/docs/CSS/displayمنابعhttps://www.businessinsider.com/what-is-a-urlhttps://www.youtube.com/watch?v=OvF_pnJ6zrYhttps://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_URLhttps://www.techtarget.com/searchnetworking/definition/URLhttps://en.wikipedia.org/wiki/URLhttps://www.geeksforgeeks.org/difference-between-url-and-link/https://www.howtogeek.com/356563/what-is-a-url-uniform-resource-locator/