В вычислительной технике рукопожатие — это сигнал между двумя устройствами или программами, используемый, например, для аутентификации, координации. Примером может служить рукопожатие между гипервизором и приложением в гостевой виртуальной машине .
В телекоммуникациях рукопожатие — это автоматизированный процесс переговоров между двумя участниками (например, « Алиса и Боб ») посредством обмена информацией, которая устанавливает протоколы канала связи в начале коммуникации, до начала полноценной коммуникации. [1] Процесс рукопожатия обычно происходит для того, чтобы установить правила коммуникации, когда компьютер пытается связаться с другим устройством. Обычно два устройства обмениваются сигналами для установления канала связи. Например, когда компьютер общается с другим устройством, таким как модем , два устройства будут сигнализировать друг другу, что они включены и готовы к работе, а также согласовывать, какие протоколы используются. [2]
При рукопожатии можно согласовывать параметры, приемлемые для оборудования и систем на обоих концах канала связи, включая скорость передачи информации , алфавит кодирования , четность , процедуру прерывания и другие функции протокола или оборудования. Рукопожатие — это метод связи между двумя объектами. Однако в документах RFC TCP/IP термин «рукопожатие» чаще всего используется для обозначения трехстороннего рукопожатия TCP. Например, термин «рукопожатие» отсутствует в документах RFC, охватывающих FTP или SMTP. Исключением является Transport Layer Security, TLS, настройка, FTP RFC 4217. Вместо термина «рукопожатие» в FTP RFC 3659 для передачи команд используется термин «разговор». [3] [4] [5]
Простой протокол рукопожатия может включать только отправку получателем сообщения, означающего «Я получил ваше последнее сообщение и готов к отправке мне еще одного». Более сложный протокол рукопожатия может позволить отправителю спросить получателя, готов ли он к приему, или дать получателю ответ с отрицательным подтверждением, означающим «Я не получил ваше последнее сообщение правильно, пожалуйста, отправьте его повторно» (например, если данные были повреждены в пути). [6]
Квитирование связи упрощает соединение относительно разнородных систем или оборудования по каналу связи без необходимости вмешательства человека для установки параметров.
Для установления обычного TCP- соединения требуется три отдельных шага:
Причина, по которой клиент и сервер не используют порядковый номер по умолчанию, такой как 0, для установления соединения, заключается в защите от двух воплощений одного и того же соединения, которые повторно используют один и тот же порядковый номер слишком рано. Это означает, что сегмент из более раннего воплощения соединения может помешать более позднему воплощению соединения.
Simple Mail Transfer Protocol (SMTP) — ключевой стандарт Интернета для передачи электронной почты. Он включает в себя квитирование для согласования аутентификации, шифрования и максимального размера сообщения.
Когда начинается соединение Transport Layer Security (SSL или TLS), запись инкапсулирует протокол «управления» — протокол обмена сообщениями о рукопожатии (тип содержимого 22). Этот протокол используется для обмена всей информацией, необходимой обеим сторонам для обмена фактическими данными приложения по TLS. Он определяет форматирование сообщений или содержащих эту информацию, а также порядок их обмена. Они могут различаться в зависимости от требований клиента и сервера, т. е. существует несколько возможных процедур для настройки соединения. Этот начальный обмен приводит к успешному соединению TLS (обе стороны готовы передавать данные приложения по TLS) или к оповещению (как указано ниже).
Протокол используется для согласования безопасных атрибутов сеанса. (RFC 5246, стр. 37) [7]
Стандарт WPA2 для беспроводной связи использует четырехэтапное рукопожатие, определенное в IEEE 802.11i-2004 .
Одним из классических примеров квитирования является модемы dial-up , которые обычно согласовывают параметры связи в течение короткого периода, когда соединение устанавливается впервые, и затем используют эти параметры для обеспечения оптимальной передачи информации по каналу в зависимости от его качества и пропускной способности. «Визжащие» (которые на самом деле являются звуком, который меняет высоту 100 раз в секунду) шумы, издаваемые некоторыми модемами с выходом динамика сразу после установления соединения, на самом деле являются звуками модемов на обоих концах, участвующих в процедуре квитирования; после завершения процедуры динамик может замолчать, в зависимости от настроек операционной системы или приложения, управляющего модемом.
Этот часто используемый термин описывает использование сигналов RTS и CTS по последовательному соединению. Однако это не совсем правильно; [ требуется цитата ] это не настоящая форма квитирования, и лучше описать ее как управление потоком .
В зарядных устройствах для мобильных устройств, предлагающих специальные возможности быстрой зарядки для поддерживаемых устройств, процесс зарядки переключится на более высокое выходное напряжение для увеличения передачи мощности. Но это может привести к серьезному повреждению неподдерживаемого устройства или даже вызвать пожар. Поэтому очень важно, чтобы устройство и зарядное устройство сначала выполнили рукопожатие, чтобы «согласиться» на взаимно поддерживаемые параметры зарядки. Если такое зарядное устройство не может идентифицировать подключенное устройство или определить его совместимость, оно по умолчанию перейдет к обычным, но гораздо более медленным параметрам зарядки в рамках стандарта USB.