Я собираюсь предположить, что ваш реальный вопрос касается полного разделения URI / URL / URN. И я начну с того, что это просто терминология, и во многих случаях они взаимозаменяемы.
URL-адрес - это унифицированный ресурс Локатор : он определяет «схему» доступа, такую как http:
, и содержит достаточно информации, чтобы найти этот ресурс, используя эту схему. Он не обязательно содержит достаточно информации, чтобы получить доступ к ресурсу: например, HTTP-URL приведет вас на страницу, но эта страница может иметь требования аутентификации для доступа.
URN - это унифицированный ресурс Имя : он также начинается с «схемы», затем содержит произвольную информацию, подходящую для этой схемы. URN вводят в заблуждение, потому что, хотя есть несколько предопределенных схем, таких как «uuid», для этих схем нет определенного использования (в отличие, скажем, от HTTP). Это не обязательно плохо: мне нравится использовать URN для таких вещей, как пространства имен XML, где я не хочу, чтобы у вас возникали какие-либо предположения, что вы действительно можете получить что-то, связанное с этим пространством имен.
URI - это унифицированный ресурс. Идентификатор : расширенный набор, содержащий URL-адреса, URN и некоторые другие типы идентификаторов. RFC упоминает URL-адреса и URN, но не вдавается в подробности. Это потому, что он фокусируется на физическом построении URI (общий формат, способ его кодирования и т. Д.), А не на его использовании.
Правка для придирки: предположим, что когда я говорю «начинается со схемы», появляется текст «(который может подразумеваться текущим контекстом)».