Привет! Мы уже несколько постов ходим вокруг да около этой темы. Настало время объяснить и ее, тем более она одинаково актуальна и тестировщикам и программистам. И это тема протоколов: сейчас поговорим про них.
Запомните (а лучше - запишите) - абсолютное большинство терминов в IT взяты из реальной жизни, поэтому можно совершенно спокойно проводить параллели. Так вот, что же такое «протокол» в реальной жизни? Если взять Википедию, то там приводят несколько определений разных видов протоколов. Все из них в какой-то мере можно притянуть за уши к компьютерным протоколам передачи данных, но больше всего мне нравится это:
Протокол — исторически сложившийся и культурологически обусловленный свод правил и предписаний, в соответствии с которым регламентируется и регулируется порядок официальных церемоний и мероприятий (переговоры, подписание двусторонних документов), официальная переписка, форма одежды и т. д., например: дворцовый, придворный протокол.
То есть свод правил (или документ), регламентирующий взаимодействие двух сторон. Есть целый сайт, содержащий подробнейшее описание каждого из них (https://www.rfc-editor.org).
Протоколы есть на любой чих: протокол взаимодействия с веб-сайтами (HTTP, Hyper Text Transfer Protocol, https://www.rfc-editor.org/rfc/rfc2616.html), протокол для отправки электронной почты (SMTP, Simple Mail Transfer Protocol, https://www.rfc-editor.org/rfc/rfc5321.html), да даже протокол для синхронизации локальных часов компьютера или телефона с мировым сервером времени (NTP, Network Time Protocol, https://www.rfc-editor.org/rfc/rfc5905.html), ведь вы же задумывались, как это на всех ваших устройствах от телефона до ноутбука время всегда одинаковое? Давайте откроем и посмотрим один из них, например какими сообщениями обменивается с сервером ваш компьютер для отправки почты. Ровно такой диалог происходит для отправки почты между Клиентом (К), то есть вашим компьютером и Сервером (С)
Обязательное приветствие от клиента:
К: HELO relay.example.org
Сервер может ответить по-разному, но важен код его ответа в начале (250)
С: 250 Hello relay.example.org, I am glad to meet you
Клиент сообщает, от кого письмо:
К: MAIL FROM:<artem@example.org>
С: 250 Ok
Клиент сообщает, кому адресовано письмо:
К: RCPT TO:<vasya@example.com>
С: 250 Ok
Теперь говорим, что мы готовы передать содержание письма
К: DATA Смотрим ответ от сервера и видим, что он готов принять:
С: 354 End data with <CR><LF>.<CR><LF>
Сообщаем тему письма:
К: Subject: Test message
Обязательная пустая строчка, которая отделяет тему письма от его тела:
К: К: Hello Alice.
Сервисная точка, которая дает понять серверу, что письмо окончено:
К: .
Сервер сказал, что поставил письмо в очередь на отправку
С: 250 Ok: queued as 12345
Клиент сообщает, что сеанс завершается и прощается с сервером:
К: QUIT С: 221 Bye
Вот так и происходит ежедневная передача писем, так что нет там никакой магии в этих ящиках с железками!