Протоколы


Данная информация предназначена для тех, кто желает подробнее разобраться, что же такое протоколы и какую роль они играют при обмене информацией между компьютерами.

Любые данные в вычислительной технике кодируются двоичными целыми числами. Информация от одного компьютера к другому передается в виде потока числовых двоичных кодов, которые, конечно же, надо уметь расшифровать. Самый "мелкий" код состоит из восьми двоичных разрядов и называется байтом. Код считается переданным, если получены все 8 двоичных разрядов (битов). В противном случае считается, что произошла ошибка. Одним байтом можно представить 256 простых целых чисел (2 в степени 8) - от 0 до 255. Что же можно закодировать таким набором чисел? Оказывается, достаточно много. Помимо обычных целых чисел можно считать, что байт - это код некоторой команды. Тогда вы получите набор из 256 команд. Для очень многих систем управления этого оказывается вполне достаточным. Если же договориться, что байт - это код текстового символа, то вы получите "алфавит" из 256 символов. Сюда поместятся все большие и малые латинские буквы (26 + 26 = 52), все большие и малые буквы кириллицы (около 70 символов), десять символов цифр (0...9), все знаки пунктуации и масса дополнительных специальных символов (~ @ # $ % ^ & * и т.д.). Именно так организована стандартная символьная таблица ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена информацией), которая широко используется в вычислительной технике. Аналогично можно кодировать и другие виды информации, объединяя их в наборы и кодируя целыми числами. Мало 256 чисел? Можно договориться, что число представляется не одним, а двумя байтами. А это уже 16 двоичных разрядов, т.е. 2 в степени 16 = 65536 чисел. Объедините 4 байта - и получите более 4 млрд чисел. И т.д. А как быть с рациональными или дробными числами? Вспомните физику, где во многих расчетах результаты представляются числами в виде мантиссы и порядка, т.е. некоторого простого числа (мантиссы), умноженного на 10 в некоторой степени (порядка). Если для рационального числа выделить, например, 4 байта (32 двоичных разряда), внутри которых часть битов (не обязательно половину) отвести под мантиссу, а оставшуюся часть - под порядок, то оказывается, что любое рациональное (дробное) число можно представить в виде целой (!) мантиссы и целого порядка, который определяет положение десятичной запятой (точки). Нужен больший диапазон или точность? Пожалуйста, - выделяйте для кодирования чисел большее количество байтов. Вот так. Простыми маленькими байтами можно закодировать вообще что угодно.

Теперь совершенно понятно, что при обмене информацией важно знать, сколько байт и под какой именно вид информации отведено в каждом конкретном месте передаваемой цепочки кодов. Это и описывается протоколом. Информация по компьютерным сетям передается еще более крупными единицами, нежели байтами. Данные объединяются в пакеты. Пакеты могут иметь различный размер. Например, 512 байт (0,5 Кбайт), 1 Кбайт, 2 Кбайт, 4 Кбайт и т.д. Все зависит от конкретного вида передаваемой информации. В конце каждого пакета содержится так называемая контрольная сумма (сумма всех числовых кодов в пакете), которая позволяет компьютерам контролировать правильность принятой информации, особенно в условиях помех или сбоев. Это значительно повышает надежность обмена информацией. Принимающий компьютер просто суммирует все байты пакета и проверяет полученную сумму с контрольной суммой пакета. Если они совпадают, то передающему компьютеру посылается подтверждение о правильной приемке пакета. В противном случае передающий компьютер повторяет передачу информации до тех пор, пока принимающий компьютер не выполнит ее успешно. Распределение информации в пакете описывается соответствующим протоколом. Таким образом, протокол - это спецификация (описание), определяющая порядок и вид передаваемой (принимаемой) информации. Для раскодирования каждого отдельного вида информации (за исключением обычных чисел) на всех компьютерах, участвующих в обмене, должны присутствовать еще и соответствующие кодировочные таблицы (таблица символов, таблица команд и т.д.). Большинство стандартных кодировочных таблиц, как правило, входит в состав практически всех операционных систем, используемых на вычислительных машинах. Нестандартные таблицы можно предварительно передать по сети, указав затем, что вся последующая информация кодируется по этим таблицам. Именно так работают протоколы дополнительного шифрования информации для повышения секретности и скрытности. В таких случаях передаваемый поток данных становится "понятным" только двум конкретным компьютерам, участвующим в обмене.

Нам не важно знать конкретный протокол, а достаточно понимать общие принципы работы всех протоколов. Каждый компьютер и без вас прекрасно "знает" все стандартные протоколы, используемые для обмена информацией. Если же вдруг вам понадобится при написании собственной программы осуществлять извлечение информации из пакетов самостоятельно, то описание любых протоколов можно найти в Интернете на сайтах соответствующих международных и отечественных организаций и институтов по стандартам (например, ISO).

Все виды работ между компьютерами в сети подразделяются на стандартные категории: передача абстрактных данных, передача почтовых сообщений, передача Web-документов, синхронизация времени между компьютерами, передача информации о структуре хранилищ файловых или других видов данных и т.д. и т.п. Для каждой категории работ обычно используется свой специальный протокол. Для каждого пакета данных протокол определяет так называемый заголовок и тело. Например, протокол SMTP при передаче почтовых сообщений между серверами для заголовка указывает, в каких байтах содержится адрес сервера адресата, в каких - адрес сервера-отправителя, время отправки сообщения, тип почтовой системы и некоторая другая служебная информация. Вобщем, заголовок - это примерно то, что указывают на почтовом конверте или посылке. Для тела пакета указывается, с какого байта оно начинается и в какой кодировке представлено. Это само сообщение. Оно может быть в символьном виде в уже известной нам кодировке ASCII или других кодировках в зависимости от истории развития и применяемых операционных систем. Так, для операционных систем UNIX стандартной кодировочной таблицей для кириллических сообщений считается кодировка КОИ-8, в операционных системах Windows - кодировка Win-1251 и т.д. Конечно же, все это описано в весьма упрощенном виде, но в любом случае понятно, что для однозначного понимания принимаемой или передаваемой информации нужно знать, где и в каком виде содержится конкретная информация. Это описывают и стандартизуют протоколы. Имея нужный протокол, компьютер без проблем может выполнить соответствующий вид работы по обмену информацией.


© 2002 Кафедра АСМЕ, Інженерно-економічний факультет