Галкин В.А., Григорьев Ю.А. - Телекоммуникации и сети (1053870), страница 83
Текст из файла (страница 83)
Поэтому обакомпьютера могут генерировать и посьшать дейтаграммы до 1500 октет длины. Путь между ними, тем не менее, включает сеть с MTU = 620 октет. ЕслиНд посьшает Н^ дейтаграмму длиннее 620 октет, маршрутизатор Rj будет фрагментировать эту дейтаграмму. Аналогично, если Н^ посьшает большую дейтаграмму Нд, маршрутизатор R2 будет фрагментировать эту дейтаграмму.Размер фрагмента выбирается таким, чтобы каждый фрагмент мог транспортироваться в одном кадре.
Кроме того, так как IP передает значение смещения данных в восьмерках октетов, размер фрагмента должен быть выбран кратным восьми. Конечно, выбор числа октетов, кратного восьми и наиболееблизкого к сетевой MTU, не обязательно делит дейтаграмму на равные части;последняя часть часто короче, чем остальные. Фрагменты должны собираться для воссоздания полной копии исходной дейтаграммы перед тем, как онабудет обрабатываться у получателя.Протокол IP как не ограничивает дейтаграммы до маленького размера, таки не гарантирует, что большие дейтаграммы будут доставлены без фрагментации.
Отправитель может выбрать любой размер дейтаграммы. Фрагментация и сборка производятся автоматически, не требуя специальных действий ототправителя. Спецификация IP устанавливает, что маршрутизаторы должны3535. СетевыеЗаголовокдейтаграммыДанные 1(600 октетов)Заголовокфрагмента 2Данные 2(600 октетов)Заголовокфрагмента 3Данные 2(600 октетов)Данные 1(600 октетов)1 Заголовок1 фрагмента 1Данные 3(200 октетов)протоколыДанные 3(200 октетов)Фрагмент 1 - смещение О1Фрагмент 2 - смещение 600Фрагмент 3 - смещение 1200Рис. 5.20.
Исходная дейтаграмма, несущая 1400 октетов данных (а)и три фрагмента для сети с MTU= 620 (б)принимать дейтаграммы с размерами, не превосходящими MTU сетей, к которым они присоединены. Кроме того, маршрутизаторы должны всегда обрабатывать дейтаграммы размером до 576 октет.Фрагментация дейтаграммы означает разделение ее на несколько частей. Рис.
5.20 иллюстрирует результат фрагментации.Каждый фрагмент содержит заголовок дейтаграммы, дублирующий большую часть заголовка исходной дейтаграммы (кроме бита в поле «Флаги», который показьшает, что это фрагмент), и столько данных, сколько может содержать фрагмент, чтобы общая длина бьша меньше, чем MTU сети, по которойон путешествует.Сборка фрагментов. В сетях ТСРЯР после фрагментирования дейтаграммы, ее фрагменты передаются как отдельные дейтаграммы на всем протяжении пути до места назначения, где они собираются. Сохранение фрагментащшна всем протяжении пути имеет два недостатка. Во-первых, так как дейтаграммы не собираются сразу же после прохождения сети с маленьким MTU,маленькие фрагменты будут передаваться с места фрагментащш до местаназначения. Сборка дейтаграмм в месте назначения может привести к неэффективности: даже если некоторые сети, проходимые после фрагментащш,имеют большое значение MTU, их будут пересекать только маленькие фрагменты.
Во-вторых, если какой-либо фрагмент будет потерян, дейтаграммунельзя будет восстановить. Принимающая машина запускает таймер сборкипри приеме первого фрагмента. Если таймер обнуляется до того, как принятывсе фрагменты, принимающая мапшна удаляет оставшиеся части, не обрабатывая дейтаграмму. Поэтому вероятность потери дейтаграммы увеличивается при использовании фрагментащяи, так как потеря одного фрагмента приводит к потере всей дейтаграммы.Несмотря на эти недостатки, вьшолнение сборки в месте назначения хорошо работает. Оно позволяет независимо маршрутизировать фрагменты ине требует от промежуточньгх: маршрутизаторов хранения собираемых фрагментов.3545.5.
Протоколы IIIуровня стека TCP/IPУправление фрагментацией. Три поля в заголовке дейтаграммы - Идентификация, Флаги и Смещение фрагмента ~ управляют фрагментацией и сборкой дейтаграмм (см. рис. 5.16). Поле «Идентификация» содержит уникальноецелое число, которое идентифицирует дейтаграл1му. Напомним, что когда шлюзили маршрутизатор фрагментирует дейтаграмму, он копирует большую частьполей в заголовке дейтаграммы в каждый фрагмент. Поле «Идентификация»позволяет получателю узнать, какой дейтаграмме принадлежат прибьгоающиефрагменты. Когда появляется фрагмент, получатель для идентификации дейтаграммы использует поле «Идентификация» вместе с полем адреса источника. Компьютер, посьшающий ЕР-дейтаграммы, должен генерировать уникальное значение поля «Идентификация» для каждой отдельной дейтаграммы (втеории, повторные передачи дейтаграммы должны содержать то же самое значение в поле «Идентификация», что и в исходной дейтаграмме; на практике,протоколы высокого уровня обычно вьшолняют повторную передачу как новуюдейтаграмму со своим значением поля «Идентификация»).
Один из модулей,используемых в программном обеспечении IP, храшгг глобальный счетчик впамяти, инкрементирует его каждый раз, когда создается новая дейтаграмма,и копирует результат в поле «Идентификация» дейтаграммы.Напомним, что каждый фрагмент имеет точно такой же формат, что и полная дейтаграмма. Для фрагмента поле «Смещение фрагмента» указывает смещение в исходной дейтаграмме данных, передаваемых в фрагменте, измеряемое в 8 октетах (смещения измеряются в восьмерках октетов для сохраненияместа в заголовке), начиная со смещения ноль. Для сборки дейтаграммы этополе должно получить назначение во всех фрагментах, начиная с фрагмента сосмещением О до фрагмента с наибольшим смещением.
Фрагмешы необязательно прибьшают по порядку, и не существует прямого взаимодействия между маршрутизатором, который фрагментирует дейтаграммы, и получателем,который пытается собирать их.Младшие два бита из трехбитового поля «Флаги» управляют фрагментацией. Обычно прикладное программное обеспечение, использующее TCP/IP, незаботится о фрагментации, так как и фрагментация, и сборка являются автоматическими процедурами, выполняемыми на низком уровне в операционнойсистеме незаметно для пользователя.
Тем не менее, для тестирования межсетевого программного обеспечения или отладки рабочих программ может оказаться важной проверка размеров дейтаграмм, для которых осуществляетсяфрагментация. Первый управляющий бит помогает при таком тестировании,указьшая возможность фрагментации дейтаграммы. Он назьгаается битом «нефрагментировать», так как установка его в единицу указьгаает, что дейтаграмму нельзя фрагментировать.
Приложение может выбрать запрет фрагментации, когда нужна лишь целая дейтаграмма. Всякий раз, когда маршрутизаторунужно фрагментировать дейтаграмму с установленным битом «не фрагментировать», он удаляет дейтаграмму и посьшает обратно источнику сообщение обошибке.3555. Сетевые протоколыМладший бит в поле «Флаги» указывает, содержит ли фрагмент данные изсередины дейтаграммы или из конца. Он назьшается битом «еще фрагменты».Поясним необходимость наличия этого бита. Программное обеспечение IP уполучателя будет получать фрагменты (возможно не по порядку), и ему нужнобудет знать, когда оно получит все фрагменты дейтаграммы.
Когда поступаеточередной фрагмент, поле «Общая длина» в заголовке указывает размер фрагмента, а не размер всей дейтаграммы, поэтому получатель не может использовать поле «Общая длина» для того, чтобы определить, собрало ли он всефрагменты.
Бит «еще фрагменты» легко решает проблему: как только получатель получает фрагмент со сброшенным битом «еще фрагменты», он знает,что этот фрагмент несет в себе данные из конца исходной дейтаграммы. Наоснове полей «Смещение фрагмента» и «Общая длина» оно может вьршслитьдлршу исходной дейтаграммы. Проверив «Смещение фрагмента» и «Общаядлина» у всех прибьшших фрагментов, получатель может определить, содержат ли фрагменты все данные, требуемые для сборки исходной дейтаграммы.Время жизни дейтаграммы.
Поле «Время жизни» указывает, сколькосекунд может оставаться дейтаграмма в межсетевой системе. Эта идея является насколько простой, настолько и важной: всякий раз, когда машина передает дейтаграмму в Интернет, она устанавливает максимальное время существования дейтаграммы. Шлюзы и маршрутизаторы, обрабатывающиедейтаграмму, должны декрементировать поле «Время жизни» по мере того,как идет время, и удалять дейтаграмму из Интернета, когда время вьпшю.Оценить время точно трудно, так как маршрутизаторы обычно не знаютвремя передачи между физическими сетями. Принятые соглашения упрощаютобработку и делают легкой обработку дейтаграмм без синхронизации часов.Во-первых, каждому маршрутизатору на пути от источника к назначению требуется декрементировать поле «Время жизни» на единицу, когда он обрабатывает заголовок дейтаграммы.
В случае, когда маршрутизаторы перегружены,что приводит к большим паузам при передаче, каждый маршрутизатор хранитлокальное время прихода дейтаграммы и декрементирует «Время жизни» начисло секунд, в течение которого дейтаграмма находилась в маршрутизаторе,ожидая обслуживания.Всякий раз, когда поле «Время жизни» обнуляется, маршрутизатор удаляетдейтаграмму и посьшает сообщение об ошибке обратно источнику. Поле «Время жизни» гарантирует, что дейтаграммы не смогут вечно путешествовать поИрггернету, даже если таблицы маршрутизации разрушатся и маршрутизаторыбудут маршрутизировать дейтаграммы по кольцу.Значение в поле «Протокол» указывает, какой протокол высокого уровняиспользовался при создании сообщения, передаваемого в области «Данные»дейтаграммы.
По существу, значение в «Протокол» специфицирует форматобласти «Данные». Соответствие между протоколом высокого уровня и целымчислом, используемым в поле «Протокол», должно устанавливаться ответственным центром, чтобы гарантировать действие соглашения по всему Интернету.3565.5. Протоколы IIIуровня стека TCP/IPПоле «Контрольная сумма заголовка» удостоверяет целостность значенийполей заголовка. Контрольная сумма IP формируется путем представлениязаголовка как последовательности 16-битовых чисел (с сетевым порядкомбайт), сложения их вместе, используя арифметику с дополнительным представлением отрицательных чисел, и получения отрицания числа.
При вычислении контрольной суммы поле «Контрольная сумма заголовка» предполагаетсяравньп^ нулю. Необходимо помнить, что эта контрольная сумма примениматолько к числам, находящимся в заголовке IP, а не в данных. Разделение контрольной суммы для заголовка и для даннык имеет свои преимущества и недостатки. Так как заголовок обычно занимает меньше октетов, чем данные, наличие отдельной контрольной суммы для него уменьшает время обработки вмаршрутизаторах, которые вычисляют только контрольную сумму заголовка.Это разделение также позволяет протоколам более высокого уровня выбиратьсвои собственные схемы расчета контрольной суммы для данных. Главнымнедостатком является то, что протоколы более высокого уровня вьшужденыдобавлять свои контрольные суммы или рисковать тем, что они не смогут обнаружить искажения данных.ЕР-адреса.