7.2. Контрольное суммирование
Когда модуль UDP получает датаграмму от модуля IP, он проверяет
контрольную сумму, содержащуюся в ее заголовке. Если контрольная сумма
равна нулю, то это означает, что отправитель датаграммы ее не подсчиты-
вал, и, следовательно, ее нужно игнорировать. Если два модуля UDP взаи-
модействуют только через одну сеть Ethernet, то от контрольного суммиро-
вания можно отказаться, так как средства Ethernet обеспечивают достаточ-
ную степень надежности обнаружения ошибок передачи. Это снижает наклад-
ные расходы, связанные с работой UDP. Однако рекомендуется всегда выпол-
нять контрольное суммирование, так как возможно в какой-то момент измене-
ния в таблице маршрутов приведут к тому, что датаграммы будут посылаться
через менее надежную среду.
Если контрольная сумма правильная (или равна нулю), то проверяется
порт назначения, указанный в заголовке датаграммы. Если к этому порту
подключен прикладной процесс, то прикладное сообщение, содержащееся в
датаграмме, становится в очередь для прочтения. В остальных случаях
датаграмма отбрасывается. Если датаграммы поступают быстрее, чем их
успевает обрабатывать прикладной процесс, то при переполнении очереди
сообщений поступающие датаграммы отбрасываются модулем UDP.
* 8. Протокол TCP *
Протокол TCP предоставляет транспортные услуги, отличающиеся от
услуг UDP. Вместо ненадежной доставки датаграмм без установления соеди-
нений, он обеспечивает гарантированную доставку с установлением соедине-
ний в виде байтовых потоков.
Протокол TCP используется в тех случаях, когда требуется надежная
доставка сообщений. Он освобождает прикладные процессы от необходимости
использовать таймауты и повторные передачи для обеспечения надежности.
Наиболее типичными прикладными процессами, использующими TCP, являются
FTP (File Transfer Protocol - протокол передачи файлов) и TELNET. Кроме
того, TCP используют система X-Window, rcp (remote copy - удаленное копи-
рование) и другие "r-команды". Большие возможности TCP даются не бесп-
латно. Реализация TCP требует большой производительности процессора и
большой пропускной способности сети. Внутренняя структура модуля TCP
гораздо сложнее структуры модуля UDP.
Прикладные процессы взаимодействуют с модулем TCP через порты. Для
отдельных приложений выделяются общеизвестные номера портов. Например,
сервер TELNET использует порт номер 23. Клиент TELNET может получать
услуги от сервера, если установит соединение с TCP-портом 23 на его
машине.
Когда прикладной процесс начинает использовать TCP, то модуль TCP на
машине клиента и модуль TCP на машине сервера начинают общаться. Эти два
оконечных модуля TCP поддерживают информацию о состоянии соединения,
называемого виртуальным каналом. Этот виртуальный канал потребляет
ресурсы обоих оконечных модулей TCP. Канал является дуплексным; данные
могут одновременно передаваться в обоих направлениях. Один прикладной
процесс пишет данные в TCP-порт, они проходят по сети, и другой приклад-
ной процесс читает их из своего TCP-порта.
Протокол TCP разбивает поток байт на пакеты; он не сохраняет границ
между записями. Например, если один прикладной процесс делает 5 записей
в TCP-порт, то прикладной процесс на другом конце виртуального канала
может выполнить 10 чтений для того, чтобы получить все данные. Но этот
же процесс может получить все данные сразу, сделав только одну операцию
чтения. Не существует зависимости между числом и размером записываемых
сообщений с одной стороны и числом и размером считываемых сообщений с
другой стороны.
Протокол TCP требует, чтобы все отправленные данные были подтверж-
дены принявшей их стороной. Он использует таймауты и повторные передачи
для обеспечения надежной доставки. Отправителю разрешается передавать
некоторое количество данных, недожидаясь подтверждения приема ранее отп-
равленных данных. Таким образом, между отправленными и подтвержденными
данными существует окно уже отправленных, но еще неподтвержденных данных.
Количество байт, которые можно передавать без подтверждения, называется
размером окна. Как правило, размер окна устанавливается в стартовых фай-
лах сетевого программного обеспечения. Так как TCP-канал является дуп-
лексным, то подтверждения для данных, идущих в одном направлении, могут
передаваться вместе с данными, идущими в противоположном направлении.
Приемники на обеих сторонах виртуального канала выполняют управление
потоком передаваемых данных для того, чтобы не допускать переполнения
буферов.
* 9. Протоколы прикладного уровня *
Почему существуют два транспортных протокола TCP и UDP, а не один из
них? Дело в том, что они предоставляют разные услуги прикладным процес-
сам. Большинство прикладных программ пользуются только одним из них.
Вы, как программист, выбираете тот протокол, который наилучшим образом
соответствует вашим потребностям. Если вам нужна надежная доставка, то
лучшим может быть TCP. Если вам нужна доставка датаграмм, то лучше может
быть UDP. Если вам нужна эффективная доставка по длинному и ненадежному
каналу передачи данных, то лучше может подойти протокол TCP. Если нужна
эффективность на быстрых сетях с короткими соединениями, то лучшим может
быть протокол UDP. Если ваши потребности не попадают ни в одну из этих
категорий, то выбор транспортного протокола не ясен. Однако прикладные
программы могут устранять недостатки выбранного протокола. Например,
если вы выбрали UDP, а вам необходима надежность, то прикладная программа
должна обеспечить надежность. Если вы выбрали TCP, а вам нужно переда-
вать записи, то прикладная программа должна вставлять маркеры в поток
байтов так, чтобы можно было различить записи.
Какие же прикладные программы доступны в сетях с TCP/IP?
Общее их количество велико и продолжает постоянно увеличиваться.
Некоторые приложения существуют с самого начала развития internet. Нап-
ример, TELNET и FTP. Другие появились недавно: X-Window, SNMP.
Протоколы прикладного уровня ориентированы на конкретные прикладные
задачи. Они определяют как процедуры по организации взаимодействия опре-
деленного типа между прикладными процессами, так и форму представления
информации при таком взаимодействии. В этом разделе мы коротко опишем
некоторые из прикладных протоколов.
... . 1. Персональные компьютеры в cетях TCP/IP 1.1 Иерархия протоколов TCP/IP Протоколы TCP/IP широко применяются во всем мире для объединения компьютеров в сеть Internet. Архитектура протоколов TCP/IP предназначена для объединенной сети, состоящей из соединенных друг с другом шлюзами отдельных разнородных компьютерных подсетей. Иерархию управления в TCP/IP – сетях обычно представляют в виде ...
... деление его функций. Однако модель TCP/IP разрабатывалась значительно позже самого комплекса протоколов, поэтому она ни как не могла быть взята за образец при проектировании протоколов. Семейство протоколов TCP/IP Семейство протоколов IP состоит из нескольких протоколов, часто обозначаемых общим термином “TCP/IP”: o IP – протокол межсетевого уровня; o TCP – протокол межхостового уровня, ...
... изменить размер окна, посылая управляющие сообщения некоторым конечным узлам, что позволяет им дифференцировано управлять интенсивностью потока данных в разных частях сети. Формат сообщений TCP Сообщения протокола TCP называются сегментами и состоят из заголовка и блока данных. Заголовок сегмента имеет следующие поля: Порт источника (SOURS PORT) занимает 2 байта, идентифицирует процесс- ...
... ISO/OSI, то, хотя он также имеет многоуровневую структуру, соответствие уровней стека TCP/IP уровням модели OSI достаточно условно. Структура протоколов TCP/IP приведена на рисунке 2.1. Протоколы TCP/IP делятся на 4 уровня. Рис. 2.1. Стек TCP/IP Самый нижний (уровень IV) соответствует физическому и канальному уровням модели OSI. Этот уровень в протоколах TCP/IP не регламентируется, но ...
0 комментариев