А причём тут собственно протокол HTTP? Всё дело в том, что я изучаю Python для веб-разработки. А значит надо понимать как устроена работа серверов и как с ними общаться. Вот с этим и будем дальше разбираться.
Сразу хочу напомнить, что я только учусь. И поэтому пишу обывательским, понятным, в первую очередь, мне самому языком.
Интернет – это огромная сеть компьютеров. Часть из них хранит информацию и обрабатывает запросы – это серверы. Браузеры пользователей, шлют запросы на серверы и называются при этом клиенты.
"Общаются" между собой клиенты и серверы по специальным правилам, которые и носят название протоколы. И вот тут на первое место и выходит протокол HTTP (HyperText Transfer Protocol) – протокол передачи гипертекста. Этот протокол отвечает за передачу веб-страниц между клиентами и серверами.
Загрузить из сети можно не только веб-страницы, но и файлы: картинки, видео, музыку. Все они являются объектами и у каждого из них есть своё имя – URL (Uniform Resource Locator).
Теперь попробуем что-нибудь поискать. Вбейте в поиске яндекса "Что такое URL".
Браузер преобразовал наш вопрос в HTTP-запрос и отправил его серверу поисковика, который, в свою очередь, после некоторых манипуляций, вернул нам HTTP-ответ.
Рассмотрим URL-запроса:
- https– протокол
- yandex.ru – имя сервера
- search – идентификатор ресурса на сервере, в нашем случае сервис поиска
- ? – служит некоей границей, за которой указываются параметры запроса. Они отделяются друг от друга знаком "&". В данном примере их два: text, со значением "Что такое URL" и lr, со значением "47"
lr – это некий технический параметр, эти параметры у разных поисковиков свои, так что не будем разбираться что это.
Согласно протоколу HTTP, в URL можно использовать только латинские буквы, цифры и некоторые знаки пунктуации. Так почему же мы видим в строке русские буквы? Это заслуга браузера, он немного приукрасил адрес. Попробуйте выполнить тот же запрос в другом браузере, результат может быть иным.
В Python есть библиотека, которая позволяет кодировать и декодировать URL.
Пока этого достаточно. Если появились вопросы, пишите в комментариях, будем разбираться.