Сетевой протокол для чайников
Zip File, мамкины хацкеры и папкины эникеи. В одном из прошлых роликов в рамках рубрики Катехизис Системного Администратора мы уже разговаривали о сетевой протокольной модели TCP/IP описывающей процесс передачи информации от источника к получателю. История становления этой самой модели тесно связана с историей появления интернета. Придумана она была, по сути, аж в 1972 году, когда группа разработчиков под руководством Винтона Серфа модернизировала морально устаревающий сетевой протокол NCP.
А уже в 1976 году с помощью нового протокола TCPбыла осуществлена легендарная передача пакета из Сан-Франциско до Лондона, а оттуда до университета Южной Калифорнии, что находится близ Лос-Анжелеса.
В 1978 году разработанный ранее протокол передачи данных был окончательно доработан и разделен на две составные части — TCP и IP. Отныне TCPотвечал за разбивку информации на дейтаграммы и последующую декапсуляцию в конечном пункте.
А на IPсоответственно возлагалась функция передачи отдельных датаграмм. Этот стек протоколов и по сей день является стандартом для передачи данных в сети Интернет.
Однако, на кой чёрт спрашивается, тогда вообще нужно было создавать эталонную модель OSI, изучением уровней которой даже сегодня выносят мозги всем без исключения студентам, поступившим на сетевых инженеров?
А дело тут, как это обычно бывает, в банальной бюрократии и желании отмыть побольше баблишка посредством создания кипы бумажек.
В 1982 году, когда TCP/IPуже вовсю внедрялся по всей Америке, международная компания по стандартизации ISO заручившись поддержкой АйТиЮ решили хайпануть на горяченькой теме.
Каким образом? Да очень просто. Они решили придумать свою собственную модель и заставить отраслевых вендеров согласовать общие сетевые стандарты для обеспечения максимального уровня совместимости оборудования.
Однако, с практической точки зрения, проект полностью провалился, ибо пока кабинетные лысые дяденьки согласовывают бумажки и дорабатывают устаревшие спецификации пытаясь хоть как-то подогнать полнейшую шляпу под реалии современной ITиндустрии.
Эта самая индустрия уходит вперёд со скоростью света и развивается за счёт идейных сетевых инженеров, которые внедряют сети на знакомых стандартах и протоколах TCP/IP.
Да и говоря откровенно, в финальной версии OSIоказалась слишком громоздкой и тормознутой. Протоколы ISOосновывались на концепциях в принципах, не имеющих смысла в современных сетях.
По функциональным возможностям они значительно уступали другим протоколам, а их спецификации были неполными, пишет в своей книге Unixи Linuxзнаменитая писательница и инженер Эви Немет.
Того же мнения придерживается и Таненбаум сказавший, что в промышленных сетях из OSIиспользуется всего пара уровней, а Ethernetи вовсе прекрасно обходится без 5 и 6.
По его словам, это напрямую связано с тем, что данная модель появилась значительно позже, чем TCP/IPи над её созданием работали люди бесконечно далёкие от реалий развивающейся индустрии.
Именно поэтому была выбрана громоздкая 7 уровневая структура, позволившая наплодить множество ненужных спецификаций и тем самым отбить расходы на особняки трудившимся инженерам.
Самое забавное, что все фирмы, занимающиеся выпуском оборудования, которые попытались реализовать эту модель на практике, даже несмотря на огромные финансовые вливания, потерпели фиаско.
А так называемая, народная TCP/IPнесмотря на свою топорность и простоту до сих пор используется повсеместно.
Нынче, в рамках основного сюжета, я предлагаю вам детально рассмотреть содержание заголовков пакетов передаваемых посредством этих двух, наиболее популярных сетевых протоколов. Погнали.
Но прежде, чем мы начнём, мне бы хотелось рассказать вам об актуальном курсе для сетевых инженеров на образовательном портале GeekBrains. Весь декабрь на него действует 50% скидка, а также предоставляется возможность учиться полгода абсолютно бесплатно.
Пройдя данный курс вы научитесь строить отказоустойчивые сети, настраивать маршрутизацию, предотвращать аварийные ситуации на серверах, а также автоматизировать всё рутинную деятельность.
Большое внимание в курсе уделено работе с виртуальными машинами на базе операционной системы Linux. Объясняются принципы работы с командной строкой, базовые нюансы настройки служб и алгоритмы развёртывая дополнительных сервисов.
Также в рамках прохождения данного курса вы познакомитесь с основами созданя скриптов на языке Python и даже самостоятельно напишите несколько уникальных скриптов для автоматизации работы внутренних служб.
Сотрудники образовательного портала GeekBrain постоянно трудятся над усовершенствованием онлайн-материалов и подгоняют их под актуальные требования рынка труда.
Преподаватели информационного факультета – это действующие специалисты из крупных международных компаний. Благодаря обучению под их руководством, после выпуска вы сможете претендовать на промышленную сертификацию у ведущих сетевых вендеров.
Всё обучение проходит в режиме онлайн. Преподаватели оценивают процесс руководствуясь зарекомендовавшей себя экспертной моделью Mail.ruGroup, которой на сегодняшний день пользуются все успешные бизнес-инкубаторы.
Более подробно о количестве учебных часов, скидках, рассрочках и прочих плюшках GeekBrains вы можете ознакомиться, перейдя на официальную страничку с описанием данного курса.
Повысьте свою профессиональную компетентность и начните продуктивно учиться уже сегодня, для того чтобы в будущем иметь шанс претендовать на должность сетевого ITинженера и не остаться на обочине жизни во времена внешних кризисов. Ссылку на курс ищи в описании.
Ну а мы возвращаемся к основной теме нашего сегодняшнего сюжета. Важно помнить, что любой протокол – это в первую очередь согласованный способ общения. Как люди в одной стране общаются на одном языке, так и компьютеры взаимодействуя с помощью единого протокола понимают друг друга.
Протокол IP или как его ещё принято называть Интернет-протокол, используется для определения IP-адреса источника и получателя пакета при прохождении через сеть Интернет.
Сам по себе, как вы уже поняли из ранее сказанного, он используется редко и в основном применяется в связке TCPшным собратом. Классический заголовок IP-пакета, передаваемый по сети содержит следующую информацию.
Версию IP адреса. Тут сразу становится понятно 4 или 6 версии данный пакет. Для пакетов IPv4 в этом поле всегда указано значение 0100. Следом идёт поле Internet Header Length или в переводе на русский «Размер заголовка».
Тут всё понятно и без объяснения. Дифференцированные сервисы определяют тип обслуживания пакета. К таким типам относятся минимизация задержки, максимизация пропускной способности, максимизация надежности и минимизация затрат.
Total Length или Общий размер определяет совокупную длину дейтаграммы IP. Максимальное значение поля составляет 65 535. Переходим во второй ряд. Поле идентификация логично идентифицирует каждый пакет.
Это может иметь важное значение при повторной сборке фрагментированных пакетов. Флаги определяют является ли пакет фрагментированным или же имеет значение D.
Опытные пентестеры частенько манипулируют со значением данного поля с целью обхода параметров межсетевого экрана. «Смещение фрагмента» определяет место, в котором фрагментированные пакеты будут повторно собраны.
Третий ряд открывает поле Time-to-Live. С его помощью можно определить сколько прыжков необходимо проделать до истечения срока действия текущего пакета.
Т.е. отправитель изначально устанавливает значение времени жизни пакета, которое уменьшается на единицу каждый раз при обработке пакета маршрутизатором.
В случае, если значение в поле TTL уменьшается до нуля, маршрутизатор отбросит пакет и отправит на IP-адрес источника сообщение о превышении времени протокола ICMP.
Значение TTLкосвенно зависит от операционной системы. Именно поэтому с его помощью можно легко определить версию ОСи отправителя. Следующее поле определяет протокол, который используется в связке с IP.
Как правило это ICMP, TCPили UDP. Замыкает третий ряд «Контрольная сумма». Она нужна для проверки ошибок. С помощью данного поля вычисляется сумма, отвечающая за определение целостности данных в заголовке IP.
Пятый и шестой ряд представляют собой два наиболее часто используемых поля. Адрес источника и адрес назначения. Первый всегда имеет 32 битное двоичное значение с индивидуальным адресом отправителя.
А второй может иметь значение одноадресной, многоадресной или широковещательной рассылки. Обычно в процессе передачи от узла источника к узлу назначения адреса Сурс и Дистенейшен не изменяются.
Ниже располагаются поля переменной длины «Параметры» и «Заполнитель», однако т.к. они прописываются редко и их использование в принципе не является обязательным, останавливаться подробно на них мы не будем.
Лучше перейдём к обзору содержимого заголовка второго важного для нас протокола по имени TCP. Первый ряд начинается с указания порта источника и порта назначения.
Эти значения используются для определения с какого порта пришло сообщение и в каком направлении движется. Порядковый номер генерируется TCPстеком исходного компьютера и используется для повторной сборки данных в момент поступления.
Номер подтверждения указывает на получение данных и ожидание следующего байта от источника. Благодаря ему, отправитель узнаёт, что пакет прибыл в пункт назначения.
Если отправитель не получает номер подтверждения обратно в отведённый промежуток времени, он инициирует повторную отправку пакета, чтобы убедиться, что получатель точно его получит.
Именно из-за данной особенности протокол TCP считается надёжнее своего UDPшного брата. Последний этой операции не делает и оттого доставлен пакет или нет остаётся только гадать.
Длина заголовка или как его ещё называют в некоторых учебниках «Поле смещения данных» обозначает длину заголовка TCPсегмента. Дальше идут 6 битные сегменты.
Поле, зарезервированное для последующего использования. Биты управления, включающие двоичные коды, или флаги, которые указывают назначение и функцию сегмента TCP.
16 битный размер окна, отражающий количество сегментов, которые можно принять одновременно. Именно с его помощью TCPосуществляет управление потоком.
Матёрые хакеры, видя значение этого поля могут в два счёта идентифицировать операционную систему, с которой были отправлены данные.
Ниже, уже знакомая по IP-протоколу, контрольная сумма, радеющая за проверку целостности. И рядом граф срочности, сообщающий, являются ли данные действительно важными или могут потусоваться в очереди минутку другую.
Далее опциональные данные. Их можно использовать по мере необходимости. Как правило там содержится информация, отвечающая за то, чтоб заголовок TCP получился кратным 32 битам.
В принципе, это всё, что вам необходимо на начальном этапе знать о строении заголовков самых популярных на сегодняшний день протоколов TCP/IP. Это фундаментальные знания для сетевых инженеров.
Причём, как по мне, на практике они оказываются даже важнее, чем знание устройства той же эталонной OSI. Ибо по мнение современных специалистов, последняя вероятно тупо подгонялась под уже имеющийся и активно развивающийся стек TCP.
Но сразу оговорюсь, что это всего лишь догадки избалованных современников. А как уж там было на самом деле, уже, к сожалению, не узнать. В любом случае напишите, что лично вы думаете по этому поводу.
И не забудьте поставить Денчику царский лайк. Вам, как говорится, не сложно, а мне приятно. Очень надеюсь, что данный урок оказался кому-то полезен. Если впервые оказались на этом канале, то не стесняйтесь.
Клацайте колокол, и в вашей ленте регулярно будут появляться годнейшие ролики на тему этичных взломов, пентестингу и системному администрированию.
В заключении по традиции хочу пожелать всем олдам удачи, успеха и самое главное, желания разбираться в фундаментальных вещах, а не ждать результата здесь и сейчас.
Это прям лучшее заклинание. Берегите себя и свои сети, изучайте принципы их работы и тогда, ваша квалификация вырастет прямо пропорционально приложенным к этому делу усилиям.
А там глядишь и работка за 1500-2000$ подвернётся. Купите себе яхту и отправитесь в Силиконовую работать над новым стартапом. Ну а пока, что завязывайте с ютубчиком.
Топайте делать домашку по информатике и ни в коем случае не делитесь с мамой своими планами на ближайшее будущее. Она ведь наверняка хочет сделать из вас затюханого юриста, а не супер-специалиста в сетях.
Так что не спорьте с ней минимум до наступления совершеннолетнего возраста. А там уже молча сорвётесь в какой-нибудь Ciscoили Хуйвей и станете хозяином жизни.
Попомните моё слово. Ладненько. Большое спасибо за ваш просмотр. С вами был White. До новых встреч, мои дорогие камрады. Всем пока.