КАК УСТРОЕН TCP/IP?

215.47k views4802 WordsCopy TextShare
Alek OS
Освойте профессию «Python-разработчика» с нуля в Яндекс Практикуме — https://ya.cc/t/uVoXrTeC5KrNfo ...
Video Transcript:
Итак семидесятые годы прошлого века несколько научных институтов США и Европы создают сеть из группы компьютеров для быстрого и удобного обмена информации между научными работниками это привело к тому что со временем в мире появилось много сетей работающих обособленно друг от друга Если же теперь просто взять и соединить все эти сети между собой то мы получим одну глобальную сеть под названием интернет Казалось бы проще некуда если бы не одна маленькая деталь работа каждой такой сети друг от друга Немного отличалось Немного отличался способ отправки и способ приёма немного отличался вид передаваемых данных Это означает что если взять две такие сети соединить их между собой и отправить сообщение от компьютера одной сети компьютеру другой сети то сообщение не сможет быть принято потому что отправлялось оно по одним правилам а принимается совершенно по другим что делать нам нужна какая-то общая модель и набор правил которым все производители сетевого оборудования будут следовать такая модель появилась в 83 году под названием osi модель организации сети она не описывает правила по которым сеть должна работать но она описывает Из каких уровней сеть должна состоять чтобы в будущем эта сеть могла объединиться с другой всего эта модель предлагает семь уровней физический канальный сетевой транспортный сеансовый уровень представления и прикладной где прикладной - это уровень нашей программы которая отправляют сообщение а физически Это мир тока и проводов по которым эти данные передаются идея состоит в том чтобы сообщение в ходе передачи с одного компьютера на другой прошло каждый из этих уровней сверху вниз по принципу матрёшки оборачиваясь специальными заголовками То есть все эти уровни - Это всего лишь последовательность шагов или действий через которые отправляемого сообщение должно пройти А на компьютере получателя этот процесс должен произойти в обратном порядке то есть полученное сообщение поднимается снизу вверх от которого на каждом уровне отсекает заголовок пока это сообщение не дойдёт до той программы к которой оно предназначено О'кей как всё это устроено мы сейчас разберём а пока что важно понимать что эта модель описывает как это должно работать лишь в теории но практика как мы все с вами знаем редко совпадает с теорией на 100% так произошло и в случае с построением сетей в ходе проектирования сетей семиуровневая модель osi была трансформирования модель tcpip самое главное в ней то что она описывает не только уровне из которых сеть должна быть построена но и набор протоколов которые на каждом уровне этой сети должны быть реализованы именно по названию Двух самых популярных протоколов и была названа эта модель первый её уровень если смотреть сверху вниз называется прикладной он объединяет в себе три верхних уровня модели osi сеансовый уровень представления и прикладной чтобы понять почему их объединили в один нужно разобраться с какими проблемами мы вообще можем столкнуться в ходе передачи сообщения во-первых во время передачи информации может пропасть связь и одна из задач - это поддержание сеанса связи в периоды неактивности другая проблема - это синхронизация потоков поступающих данных например синхронизация звука и видео ещё один пример - это контроль одновременного выполнения одной и той же задачи разными поступающими сетевыми запросами Чтобы избежать возможных ошибок быть ответственным за решение всех этих проблем Согласно модели osi должен сеансовый уровень вторая проблема - Это то что сообщение может прийти не в том виде в котором Наш компьютер его ожидает Дело в том что разные устройства могут по-разному кодировать символы и хранить числа сообщение Может быть от отправлено в зашифрованном виде и чтобы получатель мог такое сообщение прочитать оно должно быть корректно расшифровано быть представлено В правильной кодировке и в правильном формате хранения за всё это по логике osi должен был отвечать уровень представления и наконец прикладной уровень - это те самые программы которые мы создаём и через которые отправляются и принимаются те самые сообщения это может быть браузер электронная почта программы для удалённого доступа к файлам и так далее данные которые передаются на этом уровне принято называть сообщени так вот Согласно модели tcpip большинство функций из прикладного представления и сеансового уровня должны быть реализованы самой программой Именно поэтому три верхних уровня модели osi объединены в один прикладной в tcpip на этом уровне мы рассматриваем передачу данных от одной программы до другой опуская все остальные нюансы передачи данных по сети какой именно выбрать язык для того чтобы начать изучать программирование и сменить свою основную деятельность проблема многих людей которые хотят начать карьеру на сегодняшний день язык Python один из самых востребованных языков программирования который отличается своей простотой в изучении Он широко используется в backend разработке и на нём написано множество известных приложений таких как Google Drpbox Spotify и netflix чтобы понять подойдёт ли вам это направление и этот язык Можно попробовать бесплатную вводную часть курса Python разработчик от Яндекс практикума на ней вы узнаете Что такое Кэн Зачем он нужен и как устроен поймёте Какие задачи Он решает и следуете сервер часть приложения и узнаете как она взаимодействует с пользователями и другими серверами Кроме этого вы освоите основы программирования на пайтон создадите программного помощника Анфису которая запрашивает информацию на сторонних сервисах и использует полученные данные в работе Если вас устроит качество этого обучения то вы сможете перейти на платный курс который продлится 9 месяцев на нём вы Изучите Python SQL jungo и API научитесь создавать веб-приложения сайты Telegram боты и работать в команде обучение происходит в интерактивном учебнике в онлайн тренажёре и на реальных задачах с опытными Python разработчиками а помогать в учёбе вам будет Яндек gpt по которой есть целый модуль чтобы вы научились использовать нейросети в работе и с их помощью генерировать код на языке Python и проверять его на наличие ошибок Так вы сэкономите время и упростите процесс разработки пора перестать откладывать свою жизнь на потом и переходить конкретным действиям кликай по ссылке в описании или сканируй QR код и начинай бесплатно изучать Python разработку чтобы программа получатель могла корректно принять сообщение от программы отправителя к сообщению в самое начало должна быть добавлена какая-то служебная информация которая называется заголовком Что именно должно быть указано в этом заголовке определяется протоколом по которому мы отправляем данные например электронная почта отправляется по протоколу smtp к файловой системе мы можем подключиться по протоколу FTP а браузер отправляет Запрос к веб-сервер на получение веб-страницы по протоколу http который мы подробно разбирали ролики про то как работает браузер именно в таком виде наши данные с прикладного уровня переходят на транспортный чтобы понять для чего нужен этот уровень нужно познакомиться с новыми проблемами которые в ходе передачи могут возникнуть когда сообщение придёт на компьютер получателя то возникнет вопрос Какой из десятков запущенных программ или процессов это сообщение нужно передать и какой программе или процессу на компьютере отправителя в случае чего отправить ответ нужна какая-то адресация в рамках отдельного устройства такая адресация есть и называется она Port Это всего лишь целое уникальное число от одного до 65. 55 которые назначаются запущенной программе все эти порты можно разбить на три диапазона Первое - это общепринятые порты которые используются по договорённости например для сервера работающего по http принято использовать пор 80 для https Port 443 а для DNS пор 53 но при этом Никто не запрещает использовать другой порт например для своего собственного http веб-сервера если требуется такая необходимость парты из второго диапазона можно зарегистрировать в организации Ана мас третьего диапазона - это порты которые могут быть использованы для любых целей из этого диапазона порты назначаются операционной системой запущенным программам автоматически Именно поэтому отправил даже два одинаковых запроса с одной и той же веб-страницы но с двух запущенных браузеров ответ придёт именно на порт того браузера с которого был послан запрос потому что порты двух этих браузеров будут разными всё это реализуется как правило на уровне операционной системы вне нашего поля видения поэтому отправляя сетевые запросы Мы даже не задумываемся Как именно ответ приходит в нашу программу именно передаче данных между процессами на компьютере и занимается транспортный уровень свою служебную информацию Он передаёт с помощью двух основных протоколов транспортного уровня tcp и udp заголовок tcp точно также добавляется в начало К данным как и на прикладном уровне но есть важный момент сообщение которое пришло с прикладного уровня разбивается на небольшие части которые называются сегментами и уже каждому такому сегменту добавляется tcp заголовок Для чего нужно такое разбиение Мы скоро поймём А пока посмотрим на то из чего этот заголовок состоит вначале идёт номер порта отправителя и номер порта получателя это то о чём мы сказали перед тем как увидеть два следующих поля нужно понимать два следующих момента первые - это то что сегмент отправленный позже может дойти до получа раньше второй - это то что отправляемые данные до получателя Могут просто не дойти иными словами У нас нет никакой гарантии что отправляемые данные точно дойдут до получателя поэтому протокол tcp был разработан так чтобы мы эту гарантию могли получить чтобы решить первую проблему весь поступающий с прикладного уровня поток байт сначала нумеруется и только потом разбивается на сегменты первый номер байта в передаваемой сегменте указывается в поле порядковый номер поэтому даже если второй сегмент придёт раньше первого то дойдя до транспортного уровня итоговое сообщение всё равно соберётся в правильном порядке и будет передано на прикладной уровень вторая проблема решается путём отправки подтверждения получения сегментов от получателя в поле номер подтверждения в нём тоже указывается порядковый номер байта но не последнего полученного а следующего ожидаемого при этом после отправки сегмента запускается специальный таймер ожидания если подтверждение о получении сегмента вдруг не пришло то это означает что или сегмент не был доставлен или сегмент доставлен был но не получилось доставить подтверждение и первая и вторая проблема решаются повторной отправкой сегмента По истечению времени таймера И даже если он уже был получен ранее то благодаря нумерации байтов он просто будет отброшен получателем а отправителю будет заново отправлено подтверждение хорошо но что если вместо подтверждения о получении абсолютно каждого сегмента мы будем отправлять подтверждение о получении сразу нескольких сегментов это будет работать быстрее и именно так это выглядит на практике Но вместе с увеличением скорости мы сталкиваемся с новой проблемой данные которые передаются программе на прикладном уровне от tcp помещаются в специальную область памяти называемой буфером откуда впоследствии программа эти данные себе возьмёт но брать она их может не сразу А через какое-то время Это означает что если отправлять получателю слишком много сегментов то буфер Может попросту переполниться поэтому все остальные сегменты будут отброшены поэтому получатель в своём подтверждении должен указать Сколько байт данных он ещё готов принять эта информация по-другому называется размером окна который указывается в соответствующем поле заголовка Если место закончилось И в размере окна Пришёл ноль то отправитель делает паузу И ждёт пока в буфере освободится место и мы получим новое подтверждение с новым размером окна если такое подтверждение не приходит слишком долго то отправитель может передать специальный сегмент чтобы получатель ещё раз сообщил информацию о размере окна чтобы убедиться что связь с получателем не оборвалась О'кей следом за размером окна идёт поле контрольной суммы это хэш заголовка и данных для проверки корректности полученных данных на стороне получателя эта сумма вычисляется снова если она не совпадёт с той контрольной суммой которая пришла в заголовке то сегмент Просто отбрасывается перед размером окна находится три зарезервированных бита следом за которыми идут девять одно битовых флагов каждый флаг несёт для отправителя или получателя какую-то информацию флаг Ах ставится при подтверждении сегментов получателям для отправителя это будет означать что в поле номер подтверждения содержится информация которую нужно прочитать в противном случае поле с номером подтверждения будет проигнорированы флаг Син используется для установки соединения Дело в том что перед тем как начнётся передача сегментов Согласно протоколу tcp должно быть установлено предварительное соединение для этого отправитель посылает tcp сообщение с флагом sin в котором передаёт изначальный порядковый номер байта сгенерированный случайным образом в ответ получатель отправляет подтверждение с флагами си и АК передавая свой порядковый номер байта который он сгенерировал и номер подтверждения полученного байта в конце отправитель посылает ещё одно сообщение с флагом Mac указывая порядковый номер байта который ожидает получатель и подтверждение полученного от него байта после этого обе стороны готовы к передаче и получению данных друг от друга после того как все данные будут переданы соединение нужно разорвать для этого используется два флага Фин и РСТ Фин означает что у передающей стороны больше Нет данных для передачи поэтому она хохочет соединение разорвать в ответ на такой сегмент приходит подтверждение с флагом мак и передающая сторона больше не может отправлять данные но отправлять данные по-прежнему всё ещё может вторая сторона поэтому она точно также должна отправить сегмент с флагом фино и в ответ точно так же должна получить подтверждение с флагом АК после этого соединение считается полностью разорванным в обе стороны разрыв с флагом РСТ осуществляется в случае какой-то критической ошибки в случае получения такого сегмента соединение закрывается сразу в обе стороны следующие три флага сигнализируют о перег груз сети перегрузка возникает когда маршрутизаторы не справляются с количеством поступающих в сеть пакетов поэтому вынуждены их отбрасывать чтобы эту проблему решить нужно просто уменьшить размер окна то есть отправлять в сеть меньшее количество сегментов чем было главный вопрос здесь в том как нам узнать что сеть перегружена самый простой способ - это потеря сегмента То есть если он не дошёл до цели то это может служить сигналом о перегрузки сети минус такого способа в том что мы всегда будем узнавать о перегрузке сети только после того как перегрузка произошла Нам же хотелось бы перегрузку предотвратить поэтому кроме информации о потере сегмента Мы также можем обращать внимание и на задержку сегмента если среднее время движения сегмента от отправителя до получателя и обратно сильно растёт то это тоже может сигнализировать о загруженности сети но не всегда поэтому есть ещё способ используя сигнал от маршрутизатора если маршрутизатор получив пакет понимает что находится в состоянии близкому К перегрузке то в передаваемой пакете маршрутизатор изменяет IP заголовок устанавливая специальный флаг что мы вскоре увидим когда дойдём до следующего уровня когда этот пакет дойдёт до получателя И тот увидит этот флаг то в подтверждающем сегменте он сообщит отправителю о перегрузке сети поставив tcp заголовки флаг EC в ответ отправитель тоже посылает подтверждение о получении сигнала о перегрузки выставляя в единицу флаг cvr а флаг NS используются для защиты от случайного или не случайного изменения двух этих флагов хорошо получать сигнал перегрузки Мы научились как теперь всё это будет работать на стороне отправителя заводится специальное окно перегрузки на основе которого мы будем определять количество передаваемых сегментов после каждого получения подтверждения размер окна будет увеличиваться на два сегмента благодаря чему происходит экспоненциальное увеличение размера окна пока мы не получим сигнала перегрузки после этого размер окна уменьшаются вдвое и начинается постепенное увеличение при получении каждого подтверждения мы увеличиваем размер окна на некоторые значение пока снова не поступит сигнал о перегрузке когда он поступит то размер окна умножить на значение которое резко уменьшит размер окна Ну О'кей флаг Push предназначается для передачи данных программе без промежуточной записи в буфер а последний флаг ugr означает что в сегменте содержатся срочные данные которые необходимо быстро приложению передать смещение от порядкового номера байта до байта которым заканчиваются срочные данные указывается в соответствующем поле заголовка указатель на срочные данные последнее поле в заголовка которые мы ещё не разобрали содержат в себе общую длину заголовка Дело в том что заголовок состоит из обязательной фиксированной двадцати баййина этой части не фиксировано поэтому поле с длиной заголовка помогает понять где заканчивается tcp заголовок и Где начинаются данные измеряется эта длина тридцати двух битным словами поэтому максимальная длина в виде числа п означает 153 двух битных слов или 60 байт данных в качестве примера необязательных параметров могут выступать максимальный размер сегмента который может принять получатель Или например масштаб окна который позволяет увеличивать размер окна до 1 Гб далее идут сами данные и именно в таком виде данные с транспортного уровня передаются на сетевой но так они выглядят используя протокол tcp но как мы сказали существует ещё один популярный протокол транспортного уровня под названием udp в отличие от tcp это протокол не устанавливает предварительного соединения не гарантирует что данные дойдут и никак это не проверяет не занимается управлением размера окна и не контролирует перегрузку но он всего лишь отправляет данные с порта одного компьютера на порт другого что позволяет ему работать намного быстрее чем tcp возникает вопрос Какой в этом смысл Смысл появляется там где скорость передачи важнее гарантии доставки например смотря онлайн-трансляцию футбольного матча или общаясь по видеосвязи нам важно чтобы мы получали картинку в прямо эфире поэтому даже если трансляция зависнет мы ожидаем что она возобновится в прямом эфире потеряв всё то что до нас не дошло в момент зависания поэтому заголовок udp занимает всего 8 байт и состоит всего лишь из четырёх полей это необязательное поле порт отправителя порт получателя длина заголовка вместе с данными и контрольная сумма которая тоже не является обязательной кроме контента в реальном времени через этот протокол по пятьдесят третьему порту например происходит отправка ДНС запросом на получение IP по доменному а адресу Как устроен ДНС протокол Мы тоже разбирали в первой части по устройству интернета Несмотря на то что получение сегментов не гарантируется конкретно Здесь мы в любом случае должны получить ответ чтобы иметь возможность отправить запрос по IP Поэтому после отправки ДНС запроса запускается таймер и если ответ не пришёл то По истечению таймера отправляется новый запрос развитие компьютерных сетей привело к тому что сейчас уже невозможно представить чтобы огромные нагрузки обрабатывались только лишь одним компьютером например такие компании как Яндекс или Google используют десятки и сотни тысяч компьютеров для того чтобы справиться с их нагрузками эти компьютеры объединяются в системы которые способны эффективно справляться с большими нагрузками Если вы хотите научиться строить большие системы состоящие из множества компьютеров а также понимать как проектируются отказоустойчивые и высоконагруженные системы то я могу вам предложить авторский курс по System Design от ballon curses На этом курсе ты подробно разберёшься с такими темами как проксирование балансировка нагрузки кэширование репликация шардирование и познакомишься с огромным количеством паттернов и приёмов проектирования А уже после этого ты на практике сможешь применить полученные знания и на примере посмотреть как проектируются большие высоконагруженные системы такие как ВКонтакте WhatsApp Букин и другие также этот курс поможет тебе подготовиться к секции собеседования по System Design который нужно пройти чтобы получить хороший грейд в бигтех компании в общем ссылка будет под этим видео Итак На текущий момент мы можем передавать данные с порта одной программы на порт другой программы но чтобы до этих портов добраться нужно чтобы эти данные до компьютера получателя как-то дошли в этом нам помогают устройства которые называются маршрутизаторы они установлены на стороне провайдера и передают данные из одной подсети в другую чтобы это стало возможным у каждой подсети должен быть какой-то адрес а чтобы эта подсеть могла данные до нашего компьютера доставить должен быть какой-то номер Хоста вся эта информация зашита в IP адресе с которой мы подробно знакомились в ролике Про первую часть Интернета из неё мы знаем что адреса бывают четвёртой и шестой версии которые несовместимы между собой как и их протоколы IP версии 4 и IP версии 6 заголовки этих протоколов снова добавляются в начало к поступившему сегменту и наш сегмент на межсетевой уровне становится пакетом Этот уровень как мы видим тоже совпадает с моделью osi на нём не требуется устанавливать соединения отслеживать порядок сообщений и гарантировать доставку потому что всё это взял на себя транспортный уровень поэтому сами IP протоколы их заголовки выглядят намного проще в протоколе IP версии 4 в самом конце расположены IP адреса отправителя и получателя но а в самом начале идёт номер версии IP адреса IP версия 4 или IP версия 6 далее идёт общая длина заголовка которая снова делится на обязательную и не обязательную часть поэтому полю впоследствии определяется Где начинаются данные в пакете далее идёт поле тип обслуживания биты которого предназначены для повышения качества передачи данных IP пакета так например первые три бита задают некий приоритет четвёртый бит время задержки пятый пропускную способность шестой Надёжность передачи последние два бита этого поля отводится как раз-таки для того самого флага перегрузки который выставляет маршрутизатор следующее поле общая длина содержит в себе длину всего IP пакета включая заголовок плюс данные если данных нет то минимальный размер пакета будет составлять 20 байт что равняется длине заголовка если Данные есть то максимальная длина может составлять 65. 536 в на практике это не так но почему узнаем чуть позже в поле время жизни указывается максимальное число маршрутизаторов через которые этот пакет может пройти чтобы в случае какой-то ошибки он не гулял по сети вечно После перехода на следующий маршрутизатор это число уменьшается на единицу пока не дойдёт до нуля после чего пакет будет отброшен в поле тип протокола указывается специальный код обозначающий протокол с которого данные VI IP протокол попали например tcp или udp чтобы на компьютере получателя было понятно куда этот пакет далее следует передать хэш контрольный суммы вычисляется на основе заголовка и перерасчеты ется на каждом маршрутизаторе потому что каждый маршрутизатор может вносить в заголовок IP пакета некоторые изменения например с тем же уменьшением времени жизни последние три поля связаны с фрагментацией пакета на более мелкие части может так получиться что размер пакета который придёт на маршрутизатор окажется больше чем сеть канального уровня способно передать до канального уровня Мы ещё не дошли но сейчас важно понимать что технологии Тех самых Осо ленных локальных сетей которые работают немного по своим правилам пропускают разный размер пакета если этот размер меньше чем наш пакет то он разбивается и передаётся в несколько частей Проблема в том что эти части могут дойти до получателя в разном порядке и в разное время так как могут передаваться через разные цепочки маршрутизаторов чтобы такой пакет затем снова собрать в единое целое во-первых нужно понимать какому IP пакету каждая часть относится поэтому каждой части вписывается идентификатор пакета который был на части разбит во-вторых нужно понимать В какой последовательности эти фрагменты должны быть размещены поэтому используется ещё одно поле смещение фрагмента измеряется оно восьмибалльное биты флагов первый флаг зарезервирован и не используется третий флаг MF установленный в единицу означает что полученный фрагмент ещё не последний И наоборот если там установлен ноль значит это последний фрагмент пакета Ну если в ноль установлено ещё и смещение фрагмента значит это не фрагмент А сам пакет второй флаг DF запрещает фрагментацию Поэтому если такой пакет превышает допустимый размер но имеет такой флаг то маршрутизаторы его отбросит и отправит отправителю acmp сообщение acmp - это ещё один протокол который используется для отправки межсетевых сообщений Так например если во время обработки пакета на маршрутизаторе произойдёт какая-то ошибка то формируется icnp сообщение которое вкладывается в IP пакет и передаётся отправителю icnp заголовок состоит из четырёх полей тип сообщения уведомляю Что произошло код сообщения описывающий конкретную причину контрольная сумма для проверки целостности сообщения и некоторая служебная информация которая зависит от типа и кода сообщения последнее поле данных как правило включает в себя фрагмент пакета с которым произошла ошибка кроме передачи ошибок а 7p используется также для тестирования работы сети например через этот протокол работают две популярные утилиты Ping и Tracer первое определяет доступность получателя второе определяет до него маршрут то есть Ping посылает cnp сообщение с типом во и кодом ноль отправляет тем самым Эхо запрос Если маршрутизатору не удастся найти получателя То придёт Эхо ответ с типом ноль и кодом ноль в означающие что получатель недоступен Tracer работает немного иначе он поочерёдно посылает IP пакеты и увеличивая в них время на единицу то есть первому маршрутизатору на пути к получателю придёт пакет с м жизни оди который тут же уменьшится на единицу поэтому маршрутизатор отбросит пакет и вернёт acmp сообщение об ошибке с типом 11 и кодом ноль второй пакет будет содержать себе время жизни 2 Что позволит ему дойти до второго маршрутизатора третий пакет будет содержать время 3 и так далее именно по этим сообщениям об ошибке и определяется путь до получателя Ну О'кей самое последнее поле в IP заголовке предназначается для необязательных параметров туда могут вноситься адреса маршрутизаторов через которые проходит Паке Кет время их прохождения или может быть задана жёсткая маршрутизация где путь до получателя прописан вручную протокол IP версии 6 был заметно упрощённый лишён нескольких полей связанных с фрагментацией и контрольной суммой у него по-прежнему остались IP адреса отправителя и получателя поле с версией время жизни которое изменилось на число переходов тип протокола который изменился на следующий заголовок тип обслуживания который изменился на класс трафика появилась длина полезной нагрузки которая содержит в себе длину данных и новое Поле потока оно позволяет маршрутизатора быстрее обрабатывать поток пакетов с одинаковыми параметрами для обработки на основе дополнительных заголовков то есть маршрутизатор получив пакет с определённым адресом и определённой меткой анализирует заголовки обрабатывает их и заносит эти результаты в кэш Когда придёт следующий пакет с такой меткой и таким атри сом то маршрутизатор вместо анализа заголовков воспользуется своим кэшем что увеличит скорости его работы в таком виде наш пакет передаётся на Самый Нижний канальный уровень этот уровень в модели tcpip объединяет в себя физический и канальный уровень из модели osi Но если в прикладном уровне объединения сеансовый представление логически понятно то канальные и физические выполняют слишком разные функции чтобы их можно было объединять в одну группу Поэтому в некоторых источниках часто можно встретить пятиугольная физический уровень разъединены Итак В чём суть канального уровня в первой части мы говорили о том что IP - это виртуальный адрес который позволяет маршрути передавать пакет из одной подсети в другую одна такая взятая подсеть образует собой канальную среду в которой есть устройство называемое коммутатором которая подключается к провайдеру и к которому подключаются конечные сетевые устройства компьютеры роутеры и так далее и мы говорили о том что каждое сетевое устройство имеет свой индивидуальный MAC адрес по которому данные в канальной среде и передаются Сейчас две самые популярные технологии канального уровня - это exnet и wi-fi про wi-fi мы по говорим в другом видео А в этом рассмотрим как данные передаются классическим образом через проводной znet мы эту технологию придумали ещё в 1973 году с максимальной скоростью в 10 Мбит в секунду но со временем эта технология была заметно улучшена и с каждой её новой версии скорость только росла пакет который пришёл на канальный уровень сетевого становится кадром к каждому такому кадру снова добавляется свой заголовок Но кроме него в самый конец кадра добавляется контрольная сумма Если на канальном уровне получа она не совпадёт с его контрольной суммой то есть во время передачи кадра произошла какая-то ошибка то кадр будет отброшен рнет заголовок состоит всего из трёх полей мадрес получателя MAC адрес отправителя и тип протокола от которого данные получены чтобы на устройстве получателя было понятно куда эти данные дальше передать между заголовком и контрольной суммой находятся данные кадра их минимально возможный размер составляет 46 байт максимально возможный 1.
500 Именно поэтому данные поступившие из прикладного уровня на транспортный разбиваются на сегменты И именно поэтому максимальный размер такого сегмента в tcp составлял 1. 60 бай А размер данных IP пакета был 1. 480 бай потому что в сумме с заголовком tcp IP мы и получим 1.
Related Videos
КАК УСТРОЕН ИНТЕРНЕТ. НАЧАЛО
41:58
КАК УСТРОЕН ИНТЕРНЕТ. НАЧАЛО
Alek OS
730,649 views
КАК РАБОТАЕТ WIFI?
20:14
КАК РАБОТАЕТ WIFI?
Alek OS
62,517 views
Что такое Rest API (http)? Soap? GraphQL? Websockets? RPC (gRPC, tRPC). Клиент - сервер. Вся теория
57:31
Что такое Rest API (http)? Soap? GraphQL? ...
Ulbi TV
666,948 views
Структура файлов и каталогов в Linux
20:28
Структура файлов и каталогов в Linux
Aleksey Samoilov
420,059 views
Основы сетей передачи данных. Модель OSI и стек протоколов TCP IP. Основы Ethernet. [GeekBrains]
1:23:45
Основы сетей передачи данных. Модель OSI и...
GeekBrains
389,822 views
КАК РАБОТАЕТ БРАУЗЕР?
45:23
КАК РАБОТАЕТ БРАУЗЕР?
Alek OS
158,153 views
КАК РАБОТАЕТ ПРОЦЕССОР | ОСНОВЫ ПРОГРАММИРОВАНИЯ
33:48
КАК РАБОТАЕТ ПРОЦЕССОР | ОСНОВЫ ПРОГРАММИР...
Alek OS
989,252 views
CI/CD — Простым языком на понятном примере
15:29
CI/CD — Простым языком на понятном примере
Артём Шумейко
108,579 views
ПУТЬ ПРОГРАММИСТА С ПОЛНОГО НУЛЯ ДО ДЗЕН ЗА 24 ШАГА!
25:04
ПУТЬ ПРОГРАММИСТА С ПОЛНОГО НУЛЯ ДО ДЗЕН З...
Alek OS
622,973 views
TCP/IP: что это и зачем нужно
1:35:59
TCP/IP: что это и зачем нужно
Hillel IT School
588,508 views
КАК Я НЕ СТАЛ ПРОГРАММИСТОМ ЗА 8 ЛЕТ | ALEK OS
21:44
КАК Я НЕ СТАЛ ПРОГРАММИСТОМ ЗА 8 ЛЕТ | ALE...
Alek OS
403,943 views
Что такое Mikrotik?
10:21
Что такое Mikrotik?
Merion Academy
86,770 views
Что такое TCP/IP: Объясняем на пальцах
15:38
Что такое TCP/IP: Объясняем на пальцах
Listen IT
1,038,880 views
История Linux и UNIX! Кто породил ВСЕ современные системы!
43:26
История Linux и UNIX! Кто породил ВСЕ совр...
PRO Hi-Tech
1,065,817 views
КАК РАБОТАЕТ ШИФРОВАНИЕ? С НУЛЯ ЗА ЧАС
57:04
КАК РАБОТАЕТ ШИФРОВАНИЕ? С НУЛЯ ЗА ЧАС
Alek OS
287,593 views
ЭТИ КНИГИ СДЕЛАЮТ ИЗ ТЕБЯ ХАКЕРА
16:38
ЭТИ КНИГИ СДЕЛАЮТ ИЗ ТЕБЯ ХАКЕРА
Alek OS
428,065 views
Лучший Гайд по Kafka для Начинающих За 1 Час
1:15:01
Лучший Гайд по Kafka для Начинающих За 1 Час
Vlad Mishustin
204,017 views
«Осень». Самая большая загадка Windows XP
14:36
«Осень». Самая большая загадка Windows XP
Девять десятых
1,293,971 views
Главная проблема ИИ, которую никто не может решить
1:02:48
Главная проблема ИИ, которую никто не може...
Homo Deus
542,761 views
Docker Для Начинающих за 1 Час | Docker с Нуля
52:43
Docker Для Начинающих за 1 Час | Docker с ...
Vlad Mishustin
335,134 views
Copyright © 2024. Made with ♥ in London by YTScribe.com