Фрагментация в протоколе IP. Поля заголовка IP, используемые для фрагментации: идентификатор пакета, флаги (DF и MF), смещение фрагмента. Сборка пакета из фрагментов. Запрет фрагментации с помощью флага DF.
Пікірлер: 98
@sergeyshestakov6075 жыл бұрын
Спасибо! Работаю сетевым администратором и если есть время в конце рабочего дня смотрю ваш ролик , очень здорово и познавательно !
@AndreySozykin5 жыл бұрын
Пожалуйста! Рад, что нравится!
@AndreySozykin8 жыл бұрын
+Moral Proxy, отпуск и командировки :-) Сейчас начался учебный год и буду записывать лекции чаще. Книгу, к сожалению, не знаю. Мне нравятся книги Таненбаума и Олиферов, они очень полные и подробные. Но для понимания новичков сложны. Поэтому и стал записывать лекции, т.к. ничего похожего не смог найти для своих студентов.
@alexeydobriy27128 жыл бұрын
вот и я не могу найти(((читаю олифера, более-менее понятно пишет, ну тогда будем смотреть Ваши труды))
@user-km5fp5sk9k5 жыл бұрын
Андрей, большое спасибо за лекции. Книги Олиферов и Таненбаум действительно читаются тяжело. Ваши лекции смотрю с большим удовольствием, очень нравится подача материала! Еще раз спасибо!
@sammyel4eg4 жыл бұрын
Andrey Sozykin, оч крутой курс по сетям жалко что ты ушел от этого направления, тема фргаментации интересна но я так понимаю не особо актуальна т.к. это очень плохо, интересна работа pmtud да не просто то что он ждет ip unreachble и меняет мту запоминая в буфере а то как от первого хоста до последнег все это происходит с ключем df без ключа df да и в целом
@ynxela4 жыл бұрын
Спасибо Вам за Ваш труд!
@user-ux6qf6ws7z Жыл бұрын
Спасибо за видео. В одном месте оговорочка. "1480*8", а надо было сказать "1480:8", но это впечатление не портит. Материал очень хорошо разъяснен.
@user-tj3mj3si5k6 жыл бұрын
спасибо огромное за курс!!! намного понятнее и нагляднее, чем в учебнике!
@AndreySozykin6 жыл бұрын
Пожалуйста!
@nikolay_antipin3 жыл бұрын
Андрей, огромное спасибо за Вашу работу! Изучал по Вашим урокам компьютерные сети, прошёл собеседование!
@kaskad2122 жыл бұрын
Легко воспринимаются Ваши ролики, спасибо за работу
@Stwl38 жыл бұрын
Спасибо за труды!
@AndreySozykin8 жыл бұрын
+Сергей «gavr» Гаврилов Пожалуйста! Хорошо, что смотрите!
@RD-wd5ik3 жыл бұрын
на курсах циско это занятие расписали на полтора часа, тут кратко и познавательно, спасибо, подписываюсь
@AndreySozykin3 жыл бұрын
Спасибо за приятный отзыв! Я рассказываю общие идеи, а в курсах Cisco все технические детали.
@Q_School3 жыл бұрын
Спасибо. Qilgan bu yaxshi amallariyezni ajrini bersin
@vitalii76723 жыл бұрын
Добрый день. Спасибо за видео, очень полезно!
@AndreySozykin3 жыл бұрын
Пожалуйста!
@kseniyasakki43823 жыл бұрын
Спасибо вам, Андрей!
@AndreySozykin3 жыл бұрын
Пожалуйста!
@user-jm5zb6sl4h3 жыл бұрын
Благодарочка полезная информация, ты лучший)
@AndreySozykin3 жыл бұрын
Спасибо!
@asvitin2 жыл бұрын
Спасибо большое за лекцию! Интересно, как генерируется идентификатор пакета? Может это обычный счётчик на маршрутизаторе, который инкрементируется для каждого отправленного пакета, требующего фрагментации (и который сбрасывается по достижению числа 65536)?
@user-ku5yx5gb7g3 жыл бұрын
Спасибо! Очень интересно)
@AndreySozykin3 жыл бұрын
Пожалуйста!
@Andrzej39352 жыл бұрын
Спасибо!
@user-hh9xr4uj3o3 жыл бұрын
Спасибо!!!
@AndreySozykin3 жыл бұрын
Пожалуйста!
@user-zf9sh4mt8z6 жыл бұрын
Дежавю бай Олиферы. Даже цифры с книжки)
@ilyzaboom61846 жыл бұрын
4:21, 1480 -умножить- разделить на 8
@AndreySozykin6 жыл бұрын
Спасибо за уточнение!
@nonamenoname7423 Жыл бұрын
А почему не используется банальное нумерование пакетов при их фрагментации? Зачем нагружать маршрутизаторы лишними вычислениями путём нахождения смещения?
@serega1103cpp7 ай бұрын
Как тогда определить что это сегменты и какого пакета конкретно? Если нам нужно пересобрать целый пакет например, чтобы найти "вредоносную" последовательность байт в его пэйлоаде. У нас есть буфер, который пересобирает пакет, пока не перестанет встречать флаг MF. Понятно, что буфер активируется когда встречает у пакета флаг MF (признак фрагмента). И тогда он набирает фрагменты с одинаковым номером, сортирует их по смещению, потом формируется один большой пакет и мы уже ищем в его пэйлоаде последовательность байт, по которой мы хотим пакет заблокировать, не послать дальше. А как должна активироваться пересборка фрагментов, если у них отличается номер? Как определить что это фрагмент, а не пакет, чтобы мы начали улавливать остальные фрагменты для дальнейшей пересборки в один?
@serega1103cpp7 ай бұрын
Или проще говоря, по какому признаку я могу поймать все фрагменты одного пакета? Если это мне вдруг стало необходимо.
@atillaattila89008 жыл бұрын
spasibo za viedo:)
@AndreySozykin8 жыл бұрын
+atilla atilla, пожалуйста!
@user-wq4cw7ej1n2 жыл бұрын
Простите , может туплю но разве не получилось у нас лишнего байта в трех фрагментах ? 0-3980 == 3981? Не должно ли быть : 0 - 1479, 1480 - 2959, 2960 - 3979 ?
@ruskorn7 жыл бұрын
Андрей, спасибо. Понятно и очень интересно. Одно уточнение. На слайде "фрагментация" показана часть пакета IP без IHL, ToS, TTL, контр.суммы. При этом длина указана полная - 1500. Еще вопрос - кто и как определяет размер фрагмента (технологию канального уровня)? Хост, или первый маршрутизатор, или каждый маршрутизатор?
@AndreySozykin7 жыл бұрын
Каждый маршрутизатор при отправке пакета.
@sammyel4eg5 жыл бұрын
Ppp Kkk что такое IHL? я не понял в чем именно проблема? 1500 это же нормально и это с IP заголовком.
@user-gd6il5zb8l4 жыл бұрын
В длину в том числе и весь заголовок входит. Не только три поля, необходимые для фрагментации. Андрей же в самом ролике сказал: мол, представим, что весь заголовок равен 20 байтам. Часть этого заголовка - поля фрагментации, все остальные поля Андрес просто опустил, чтобы слайд не нагромождать.
@WhiteBear1419815 жыл бұрын
Андрей, спасибо за лекцию! Вопрос: почему первый фрагмент начинается с 0, а не с единицы?
@AndreySozykin5 жыл бұрын
Потому что в ИТ всегда начинают считать с 0, а не с 1 :-)
@user-bj9hd1bc4j2 жыл бұрын
Немного не понятно, если есть фрагментация на канальном уровне (когда кадр разбивается на несколько маленьких), то зачем фрагментация на сетевом? Пакет должен инкапсулироваться в кадр, а там уже фрагментироваться на кусочки. Ну и в обратном порядке из кусочков получается кадр а кадр превращается в пакет.
@artur_kia2 жыл бұрын
Спасибо
@AndreySozykin2 жыл бұрын
Пожалуйста!
@user-zu4ek5cd3o3 жыл бұрын
Андрей, в первую очередь хочу поблагодарить вас за классный курс, спасибо большое. Во-вторых у меня есть вопрос, относительно слайда где описывается фрагментация пакета и сборка У нас был пакет 4000 байт, маршрутизатор разбивает его на 1500 + 15000 + 1040. - в сумме это 4040, а не 4000 Правильно ли я полагаю, что 1) Заголовок пакета это 20 байт, а пейлоад 3980 2) Заголовок передается в каждом фрагменте Следовательно при полной сборке пакета получается (20 + 3980) а лишние 40 байт - это два "лишних" заголовка, которые пришли со 2 и 3 фрагментом и их мы при сборке отбрасываем?
@AndreySozykin3 жыл бұрын
Да, именно так. Появились два фрагмента, для них нужны заголовки. Поэтому на 40 байт больше.
@user-km5nv6ww2e2 жыл бұрын
А мне в этом примере было непонятно почему мы говорим о пакете в 4000 байт, приводя как пример источника таких пакетов технологии FDDI/Token Ring. Но далее, говорим что 20 байт из этих 4000 это заголовок (что понятно), но заголовок IP. В этот момент мне стало непонятно что это за сеть такая с той стороны где FDDI -- IP over FDDI? Так бывает? Ведь FDDI это технология канального уровня
@ruslanruslan55833 жыл бұрын
Супер
@AndreySozykin3 жыл бұрын
Спасибо!
@onamixt2 жыл бұрын
5:57 имелся в виду отправитель, а не получатель?
@Km-pn3hf3 жыл бұрын
спасибо
@AndreySozykin3 жыл бұрын
Пожалуйста!
@TrashDaddi4 жыл бұрын
В этом уроке, для понимания полной картины, мне не хватило пары слов о том, как решается задача предотвращения переполнения буфера при фрагментации. На сколько я понял, теоретически может быть передан пакет любого размера, в вашем примере это был пакет размером 4000 байт. Но что если пакет будет в разы больше и таких пакетов на хост будет прислано множество? Хост будет каждый из этих пакетов собирать по фрагментам в буфер, пока не получит последний фрагмент с MF=0 для каждого пакета. Возможно в этом уроке рассказывать об этом это лишнее, я бы с удовольствием посмотрел от вас урок, где рассматриваются подобные ньюансы.
@user-km5nv6ww2e2 жыл бұрын
Если посмотреть формат пакета IP, длину поля смещения (13 бит) то получается что в рамках формата пакета IP получится фрагментировать кусок данных (я бы не называл его пакетом) макс 64 КБ ( (2^13-1) * 8 байт на блок = 64 КБ). Есть даже ощущение что 64 КБ здесь появляются не случайно, это значение часто возникает в сетях связи.
@lukardo168 жыл бұрын
Андрей, расскажите пожалуйста, зачем мы используем сегментацию на 4м уровне, если на 3м у нас уже реализован такой механизм фрагментации?
@AndreySozykin8 жыл бұрын
+Nikita Andrich, на 4 уровне TCP получает от приложения большой поток данных, который точно не поместится в 1 IP пакет. Поэтому поток данных делится на отдельные части по размеру пакета. Но размер пакета в разных сетевых технологиях может быть разным. В Ethernet размер 1500 байт, но по дороге нам может встретится другая сеть, с меньшим размером. Чтобы пройти через такую сеть, IP делает фрагментацию пакета.
@sammyel4eg5 жыл бұрын
И запомните фрагментация плохо но иногда необходима. но лучше резать mtu на источнике.
@sammyel4eg4 жыл бұрын
а еще есть значение mss которое tcp согласует когда тройное рукопожатие проходит выбирая меньшее.
@user-ip8qy6xq5s4 жыл бұрын
Скажите пожалуйста, а я правильно понимаю, что заголовок IP-пакета передается каждый раз с каждым фрагментом и единственное, что будет в нём (заголовке) меняться это поле смещения?
@AndreySozykin4 жыл бұрын
Да, заголовок передается с каждым пакетом.
@mysonicteam79774 жыл бұрын
Если фрагменты передаются не по порядку, то что будет, если последний фрагмент, в котором флаг mf =0, придет раньше остальных фрагментов?
@AndreySozykin4 жыл бұрын
Маршрутизатор поймет по номерам, что есть еще фрагменты пакета, и будет их ждать.
@serega1103cpp7 ай бұрын
@@AndreySozykin по смещению вы имели в виду? Что нужно ждать ещё фрагменты этого пакета.
@user-bz9xm5bt8p2 жыл бұрын
спасибо большое за ваш труд! подскажите пожалуйста, чем отличаются пакет, кадр и фрейм?
@AndreySozykin2 жыл бұрын
Пакет и кадр - это названия единицы передаваемых на разных уровнях: пакет на сетевом, а кадр на канальном. Принципиальной разницы между ними нет, только уровень сетевой модели. На английском единица передаваемых данных на канальном уровне называется frame. Официальный перевод frame на русский - кадр. Но некоторые просто пишут frame русскими буквами. Поэтому кадр и фрейм одно и то же.
@ASPushkin80lvl5 жыл бұрын
Такой вопрос: заполняется ли поле *идентификатор пакета* если пакет не фрагментируется?
@sammyel4eg4 жыл бұрын
ASPushkin80lvl, да, каждый пакет имеет свой идентификатор, можете снять дамп трафика и посмотреть.
@user-sd3es7dk4r2 жыл бұрын
Почему в примере заголовок 20 байт, хотя в предыдущих видео в протоколе IP длина заголовка должна быть кратна 32?
@krekerstna19412 жыл бұрын
Длина заголовка IP-пакета должна быть кратна 32 битам, 20байт * 8бит/байт = 160бит, а это кратно 32 битам
@user-kr3do8yf7o6 жыл бұрын
Приветсвую вас ! Спасибо за такую прекрасную подачу материала. У меня есть вопрос по поводу флагов фрагментации. DF - не фрагментировать - поле устанавливается в значение 0 MF - говорит о том что полученый фрагмент не последний,есть еще фрагменты. - поле устанавливается в значение 1 Я все правильно понял ? Спасибо !
@user-kr3do8yf7o6 жыл бұрын
Или верный второй вариант ? у нас имеется 2 бита под флаги,и каждый бит отвечает за свой флаг,то есть каждый флаг имеет два вида 0 или 1
@AndreySozykin6 жыл бұрын
Да, каждый бить используется независимо. DF - флаг фрагментации. 0 - можно фрагментирвать, 1 - нельзя фрагментировать. MF - флаг, который говорит о том, есть еще фрагменты, или нет. Между собой флаги не связаны (за исключением случая, когда фрагментация запрещена, флаг MF не имеет смысла).
@user-gd6il5zb8l4 жыл бұрын
А идут они в том же порядке, в каком вы указали? 00 = DFMF?
@krekerstna19412 жыл бұрын
А что является признаком того, что все фрагменты дошли? Предположим из 5 фрагментов пришел последний, первый и второй, а остальные не пришли, как маршрутизатор это поймет?
@onamixt2 жыл бұрын
Думаю, это определяется по смещениям. Если пришел первый и последний пакет, мы знаем общую длину пакета. Сравниваем ее с суммарной полученных данных, и если оба числа совпадают, значит, все данные получены
@nikonlaw6 ай бұрын
@@onamixt я думаю, что маршрутизатору достаточно последнего фрагмента с нулем в поле. он видит значение смещения и может посчитать весь размер пакета целиком.
@alextikh49592 жыл бұрын
Непонятен один момент. Допустим сделали фрагментацию и отправили фрагменты по сети. Где они будут собираться? Протокол не гарантирует что промежуточные узлы будут одни и те же. Есть только конечный адрес. Значит на нем? А что если есть на различных путях другие сети, требующие другой фрагментации? Вы что-то недоговариваете, так как в одном из предыдущих роликов показывали фиксированный путь и разборку-сборку на промежуточных узлах. Впрочем ваш курс хорош и его изучение полезно и приятно. Но здесь бы хотелось большей ясности.
@nikonlaw6 ай бұрын
между 2 маршрутизаторами может дробиться, но на принимающем все собирается в кучу перед следующем хопом. и так далее.
@sergeykurk5 жыл бұрын
а почему из 4000 байт ip пакета фрагментируются только 3980 ? А заголовок куда девается ? Спасибо
@FeelUs5 жыл бұрын
Изначально были данные. Только данные. Вместе с IP-заголовком они не проходят по MTU и фрагментируются. (Без заголовка они тоже не проходят, но если бы проходили без заголовка а с заголовком нет, тоже пришлось бы фрагментировать.) И к каждому фрагменту присоединяется IP-заголовок.
@w1tcherj5 жыл бұрын
@@FeelUs он не про то, есть пакет, получатель должен прочитать пакет. Мы пакет должны разрезать на кусочки, к каждому кусочки прикрепить хэдер сетевого уровня и передать. Получатель должен получить все кусочки, выкинуть заголовки и сложить пакет(заголовок+данные). Почему так не делается для автора вопрос, как, в прочем, и для меня.
@FeelUs5 жыл бұрын
@@w1tcherj Допустим мы хотим передать пакет (TCP-данные1-данные2-данные3) Я буквами TCP или IP буду обозначать соотв. заголовки. Мы должны снабдить его IP-заголовком, и по сети пойдет (IP-TCP-данные1-данные2-данные3) Потом это придет на wi-fi модуль, и он посчитает это слишком длинным, и фрагментирует: (IP-TCP-данные1) (IP-данные2) (IP-данные3) Когда это всё придет конечному получателю, его сетевой модуль соберёт это в 1 пакет (IP-TCP-данные1-данные2-данные3) , отбросит IP-заголовок и получателю передаст (TCP-данные1-данные2-данные3)
@sammyel4eg5 жыл бұрын
Че то я не че у вас не понял. инкапсуляция и деинкапсуляция почитайте.
@AJIagguH3 жыл бұрын
Когда может понадобиться флаг DF (don't fragmentation)?
@AndreySozykin3 жыл бұрын
Если по каким-то причинам фрагментирован пакет нельзя.
@user-ec1tw4nk2p4 жыл бұрын
+
@PROswimming2 жыл бұрын
4:20 деленное на 8¡¡¡
@catshannon50648 жыл бұрын
подскажите от куда взялось 185 как смещение пакета
@AndreySozykin8 жыл бұрын
+Vlad Stetsenko смещение измеряется в блоках по 8 байт. Если второй фрагмет содержит байты с 1480 по 2959, то делим 1480 на 8 и получаем 185.
@FeelUs5 жыл бұрын
А для чего может понадобиться запретить фрагментацию?
@sammyel4eg5 жыл бұрын
Филя Усков, фрагментация пакета очень плохо, это лишний оверхед + нагрузка на цп устройства, в IPv6 фрагментация существует как доп опция а функцию PMTUD реализована за счет ICMP и создание нового сообщения источником данных а не промежуточным устройством.
@viktorbesleaga8568 жыл бұрын
sto mne delati u menea wifi ne rabotaet kak zdelati most u menea rooter d link dir 615
@AndreySozykin8 жыл бұрын
+viktor besleaga к сожалению, я не занимаюсь консультациями по настройке сети. Инструкции по настройке d-link dir 615 в режиме моста можно посмотреть в руководстве, например, здесь: help.netbynet.ru/domashnij-internet/nastrojka-routerov/manual-po-nastrojke-routera-d-link-dir-615/