logo
эвм

1.2.8. Протоколы системного уровня. Протокол tcp/ip.

Рассмотрим суть протокола TCP/IP, являющегося основой сети Internet. Как было сказано, протокол отвечает за порядок формирования, передачи и обработки информационных пакетов системного уровня (TCP-пакетов и датаграмм). Информационный пакет состоит из 2-х частей - заголовка и тела пакета. Заголовок – это набор служебных данных, которые требуются для реализации соответствующего протокола. Тело – это собственно та полезная информация, которая должна быть передана.

Рассмотрим, например, передачу файла по электронной почте.

Прикладная программа, реализующая соответствующий прикладной протокол (ESMTP), сформирует прикладной пакет (MIME-пакет), добавив к файлу свой заголовок, т.е.

Прикладной пакет = MIME-заголовок + передаваемый файл

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

Прикладной пакет --> Фрагмент1 + Фрагмент2 + ...

Далее каждый фрагмент превращается в TCP-пакет добавлением TCP-заголовка

TCP-пакет 1 = TCP-заголовок 1 + Фрагмент1

TCP-пакет 2 = TCP-заголовок 2 + Фрагмент2

и т.д.,

Затем каждый TCP-пакет превращается в датаграмму добавлением IP-заголовка

Датаграмма 1 = IP-заголовок 1 + TCP-пакет 1

Датаграмма 2 = IP-заголовок 2 + TCP-пакет 2

В IP-заголовке содержится IP-адрес назначения и IP-адрес отправителя.

В TCP-заголовке содержится информация о том, как из фрагментов собрать исходный прикладной пакет, а также так называемая контрольная сумма для контроля правильности передачи информации. Контрольная сумма подсчитывается после каждого акта передачи пакета от одного узла другому. Если подсчитанная контрольная сумма не совпадает со значением, записанным в TCP-заголовке, то пакет считается испорченным при передаче – он уничтожается и поступает запрос на повторную передачу. Если канал связи плохой, то такой процесс может происходить многократно до тех пор, пока пакет не будет передан без искажений. Именно по этой причине иногда приходится очень долго ждать загрузки Web-страницы или файла. Вместе с аппаратным контролем такой контроль обеспечивает почти 100% надежность передачи данных. Но, естественно, за все приходится платить. За достоверность информации, обеспечивающуюся протоколом TCP, приходится платить временем. За счет такого жесткого контроля точности передачи информации время передачи возрастает. С этим можно смириться, если передаются программы. В этом случае нужна 100% точность передачи. Если же передается, например, видеоинформация в режиме реального времени, то точность передачи становится не столь важной: искажения информации будут означать просто искажения изображения.

TCP является транспортным протоколом (протоколом транспортного уровня модели OSI). Это не единственный транспортный протокол, используемый в Интернете. Другой широко используемый транспортный протокол – UDP (User Datagram Protocol). UDP в отличие от TCP не использует подсчет контрольной суммы и вообще не контролирует искажения информации при передаче. Протокол UDP используется тогда, когда скорость передачи информации важнее отсутствия искажений. В настоящее время протокол UDP используют для потоковых информационных технологий. С этой целью на основе протокола UDP был разработан протокол RTP (Real Time Protocol), предназначенный для передачи изображения и звука в реальном времени.

Вернемся к структуре датаграммы, состоящей из IP и TCP заголовков, а также из фрагмента прикладного пакета. Можно сказать, что фрагмент прикладного пакета вложен в TCP-пакет, а TCP-пакет вложен в свою очередь в IP-пакет (в датаграмму). Принцип вложения или инкапсуляции пакетов является базовым при рассмотрении взаимодействия протоколов Internet разного уровня. Аналогичным образом датаграмма (или ее фрагмент) тоже может быть вложена в более низкоуровневый пакет. Таким образом, может осуществляться передача датаграммы по сети, не поддерживающей TCP/IP протокол, - датаграмма просто будет вложена в пакет, который сможет передаваться по этой сети.

Существует еще несколько видов протоколов системного уровня. Например, протокол ICMP (Internet Control Message Protocol) позволяет узлам обмениваться системными командами. Так, запрос на повторную передачу TCP-пакета передается именно по протоколу ICMP.