Механизмы взаимодействия компьютеров в сети многое позаимствовали у схемы взаимодействия компьютера с периферийными устройствами. В самом простом случае связь компьютеров может быть реализована с помощью тех же самых средств, которые используются для связи компьютера с периферией, с той разницей, что в этом случае активную роль играют обе взаимодействующие стороны.
Приложения А и В (рис. 2.2) управляют процессом передачи данных путем обмена сообщениями. Чтобы приложения могли «понимать» получаемую друг от друга информацию, программисты, разрабатывавшие эти приложения, должны строго оговорить форматы и последовательность сообщений, которыми приложения будут обмениваться во время выполнения этой операции.
Например, они могут договориться о том, что любая операция обмена данными начинается с передачи сообщения, запрашивающего информацию о готовности приложения В; что в следующем сообщении идут идентификаторы компьютера и пользователя, сделавшего запрос; что признаком срочного завершения операции обмена данными является определенная кодовая комбинация и т. п. Тем самым определяется протокол взаимодействия приложений для выполнения операции данного типа.
Аналогично тому, как при выводе данных на печать необходимо передавать принтеру дополнительно некоторый объем служебной информации - в виде команд управления принтером, для передачи данных из одного компьютера в другой необходимо сопровождать эти данные дополнительной информацией в виде протокольных сообщений, которыми обмениваются приложения.
Заметим, что для реализации протокола нужно, чтобы к моменту возникновения потребности в обмене данными были активны оба приложения: как приложение А, которое посылает инициирующее сообщение, так и приложение В, которое должно быть готово принять это сообщение и выработать реакцию на него.
Передача любых данных (как сообщений протокола приложений, так и собственно данных, составляющих цель операции обмена) происходит в соответствии с одной и той же процедурой.
На стороне компьютера А приложение, следуя логике протокола, размещает в буфере ОП либо собственное очередное сообщение, либо данные и обращается к ОС с запросом на выполнение операции межкомпьютерного обмена данными. ОС запускает соответствующий драйвер сетевой карты, который загружает байт из буфера ОП в буфер интерфейсной карты, после чего инициирует ее работу. Сетевая интерфейсная карта последовательно передает биты в линию связи, дополняя каждый новый байт стартовым и стоповым битами.
На стороне компьютера В сетевая интерфейсная карта принимает биты, поступающие со стороны внешнего интерфейса, и помещает их в собственный буфер. После того как получен столовый бит, интерфейсная карта устанавливает признак завершения приема байта и выполняет проверку корректности приема, например путем контроля бита четности. Факт корректного приема байта фиксируется драйвером сетевой интерфейсной карты компьютера В. Драйвер переписывает принятый байт из буфера интерфейсной карты в заранее зарезервированный буфер ОП компьютера В. Приложение В извлекает данные из буфера и интерпретирует их в соответствии со своим протоколом либо как сообщение, либо как данные. Если согласно протоколу приложение В должно передать ответ приложению А, то выполняется симметричная процедура.
Таким образом, связав электрически и информационно два автономно работающих компьютера, мы получили простейшую компьютерную сеть.
Компьютерные сети. Учебник для вузов. Олифер В., Олифер Н.