2.1 host

После того, как Тим Бернерс-Ли придумал всемирную паутину, HTML, HTTP и веб-серверы, он решил усложнить жизнь будущим веб-программистам и придумал ссылки, или URL. URL расшифровывается как Universal Resource Locator.

Типичная ссылка задается шаблоном:


        protocol://host/path?query#anchor
    

Некоторые из частей могут отсутствовать, но protocol и host всегда должны быть указаны.

Protocol задает имя протокола, по которому будут взаимодействовать клиент и сервер. Типичные названия протоколов: HTTP, HTTPS, FTP, SSH, …

Host — это имя сервера в сети, к которому нужно отправить запрос. Изначально это был IP-адрес, но люди быстро придумали удобочитаемые имена (domain names), чтобы ничего не запоминать. Как будто запомнить пару цифр так сложно)

Изначально никакого query не задумывалось. Path задавал месторасположения HTML-файла, который сервер должен был отдать клиенту. Однако после того, как веб захватили аматоры, они быстро сообразили, что HTML-файлы можно динамически создавать на стороне сервера. Поэтому в URL добавили раздел query, в котором серверу можно передать кучу полезной информации.

Ну и наконец anchor — это просто специальная метка на HTML-странице, которая подсказывает браузеру, что страницу нужно не просто отобразить, но еще и проскролить ее до определенного места, то есть метки.

2.2 query & params

Расскажу еще немного про query.

Часть ссылки под названием query начинается сразу после знака вопроса и заканчивается знаком # (или концом ссылки). Информация в query представляет из себя набор параметров в таком виде:


        name=value&name2=value2&nameN=valueN
    

URL не может содержать пробелов и еще кучу разных символов, поэтому все подозрительные символы экранируются. Скорее всего ты часто с таким сталкивался, когда копировал ссылку и кидал ее другу:

Символ Кодировка
1 пробел %20
2 ! %21
3 # %22
4 $ %24
5 % %25
6 & %26
7 %27
8 * %2A
9 + %2B
10 , %2C
11 / %2F

Более подробно почитать на эту тему можно по ссылке.