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. query & params

Розкажу ще трохи про query.

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


        name=value&name2=value2&nameN=valueN
    

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

width="300" Символ Кодування
1 пробіл %20
2 ! %21
3 # %22
4 $ %24
5 % %25
6 & %26
7 ' %27
8 * %2A
9 + %2B
10 , %2C
11 / %2F

Докладніше на цю тему можна почитати за цим посиланням.