Домой / Работа в Интернете / Базовым стеком протоколов в сети интернет является. Основной стек протоколов интернет. Стек (сетевые коммутаторы). Настройка сетевых устройств. Необходимые структуры данных

Базовым стеком протоколов в сети интернет является. Основной стек протоколов интернет. Стек (сетевые коммутаторы). Настройка сетевых устройств. Необходимые структуры данных

Сетевой стек протокола и TCP хакинг

Alexander Antipov

Сетевой стек протоколов, формирующий конвейеризацию и передачу данных между хостами, разработан для наилучшего взаимодействия между различными сетевыми уровнями. В этой статье мы попытаемся описать перемещение данных через расположенные в стеке уровни и попробуем внедрить модуль ядра Linux, помогающий нам захватывать и отображать данные, проходящие через уровень TCP. Ниже представлена программа, показывающая как установить новый элемент в файловой системе proc. И что наиболее важно, эта программа взламывает TCP протокол, отслеживает все данные, проходящие через tcp уровень, и отображает их в /proc/TCPdata.


Шямитх, перевод Алексей Антипов

Сетевой стек протоколов, формирующий конвейеризацию и передачу данных между хостами, разработан для наилучшего взаимодействия между различными сетевыми уровнями. В этой статье мы попытаемся описать перемещение данных через расположенные в стеке уровни и попробуем внедрить модуль ядра Linux, помогающий нам захватывать и отображать данные, проходящие через уровень TCP. Так как обсуждение всех видов сетевых соединений выходит за рамки данной статьи, то мы остановимся на TCP/IP соединениях.

Сетевой стек протоколов

Сетевые устройства формируют базовый уровень стека протоколов. Для связи с другими устройствами и приема-передачи трафика они используют протокол канала передачи данных (обычно Ethernet). Интерфейс, организуемый драйверами сетевых устройств, копирует пакеты с физической среды, выполняя некоторые проверки ошибок, после чего помещает пакеты в сетевой уровень. Интерфейсы вывода принимают пакеты из сетевого уровня, выполняют некоторые проверки ошибок и пересылают их в физическую среду. Мы будем обсуждать IP (протокол Интернет) являющийся стандартным протоколом сетевого уровня. Главными функциями IP являются маршрутизация, проверка входящих пакетов, определяющая направлены ли эти пакеты на данный хост или они нуждаются в дальнейшей пересылке. При этом, в случае необходимости, пакеты дефрагментируются и доставляются на транспортные протоколы. Такие протоколы имеют динамическую базу данных маршрутов для исходящих пакетов, адресуют и фрагментируют их перед посылкой на уровень связи.

TCP и UDP являются наиболее часто используемыми протоколами транспортного уровня. UDP создает структуру для адресации пакетов в пределах хоста, в то время как TCP поддерживает более комплексные операции подключения типа восстановления потерянных пакетов и управления трафиком.

Продвигаясь по транспортному уровню, мы можем найти INET уровень, формирующий промежуточный уровень между транспортным уровнем и сокетами приложений. С помощью INET уровня поддерживаются принадлежащие приложениям сокеты. В этом уровне осуществлены все специфические операции сокетов.

BSD - абстрактная структура данных, содержащая INET сокеты. Запрос приложения на подключение, чтение или запись через сокет, преобразовывается в INET операции с помощью BSD.

Общая структура пакетов. Данные заключаются в общую структуру данных, называемую sk_buff. Все уровни используют эту структуру данных. Сразу после копирования данных из пространства пользователя в пространство ядра, они помещаются в sk_buff и перемещаются на различные уровни. В свою очередь уровень добавляют к этой структуре свои заголовки. Sk_buff содержит ссылки на всю информацию о пакете, его сокете, устройстве, маршруте, расположении данных и т.д.

Сетевые функции Linux

Для нормального сетевого программиста, интерфейсная часть сетевых служб доступна с помощью следующих подпрограмм библиотеки С.

socket(), bind(), listen(), connect(), accept(), send(), sendto(), recv(), recvfrom(), getsockopt(), and setsockopt().

Функция socket() используется для создания нового сокета. Все операции с различными протоколами происходят с помощью сокетов. Поскольку функция socket() возвращает значение дескриптора файла, то к нему могут обращаться стандартные операции работы с файлами типа read(), write().

Фунция bind() используется для связи созданного сокета с портом. Порт, наряду с IP адресом сетевого интерфейса, используется для уникальной идентификации сокета.

Функция listen() используется для программирования сервера. После создания сокета и связи его с портом функция listen() устанавливает сокет в состояние прослушивания. Это означает, что сокет ожидает подключения со стороны других хостов.

При вызове на сервере функции accept() происходит непрерывный опрос сокета происходящий до получения запроса на подключение от другого хоста. После установления соединения серверная программа пробуждается и дает процессу возможность обрабатывать запрос от чужого хоста. Со стороны клиента используется функция connect(), показывающая серверу, что клиент желает открыть подключение на сокете и послать запрос.

Необходимые структуры данных

Эта структура является основой для выполнения интерфейса BSD сокетов. Установка и инициализация этой структуры происходит при помощи системного вызова socket().

sk_buff:

Эта структура управляет индивидуальными пакетами соединений приходящими и отсылаемыми с хоста. При этом происходит буферизация ввода-вывода.

Эта структура управляет различными частями сокетов, зависящими от конкретной сети. Она необходима для TCP, UDP и RAW сокетов.

Эта структура содержит ряд операций, одинаковых для всех протоколов.

Sockaddr (sockaddr_in):

Такая структура необходима для поддержки различных форматов адресов.

Модули ядра Linux

Ядра Linux ядра состоят из модулей. Некоторые части ядра находятся в памяти постоянно (типа планировщика), а некоторые загружаются при необходимости. Например, файловая система VFAT для чтения дисков, загружается только при необходимости. Такая особенность linux ядра позволяет пространству ядра занимать немного места.

Таким образом, существенным является проектирование вашего протокола, драйверов и любых видов программного обеспечения ядра как модулей ядра и вставлять их в ядро из пространства пользователя. После вставки, модуль становиться неперемещаемым до его удаления из пространства ядра. Единственно вы должны быть привилегированным пользователем, чтобы вставлять или удалять модули. Это является общим форматом записи модуля ядра.

#define MODULE #include /* ... other required header files ... */ /* * ... module declarations and functions ... */ int init_module() { /* code kernel will call when installing module */ } void cleanup_module() { /* code kernel will call when removing module */}

Проект хакерского модуля для TCP протокола.

Наш модуль ядра является очень простым, он виртуально размещен между интерфейсом операций сокетов для пересылки TCP пакетов и TCP уровнем. Теперь все пакеты данных, проходящие через сокет, зарегистрированный с TCP протоколом, будут перехвачены нашим модулем ядра. Эти данные будут переданы в /proc/TCPdata.

Используемые структуры данных

tcp_prot -> Содержит указатели на все осуществленные TCP операции

struct msghdr -> Содержит данные, посылаемые приложением, а также другими полями для идентификации адреса сокета

Struct msg_iov -> находится в msghdr, в нем содержатся указатели на данные

Перед началом кодирования давайте поймем значение файловой системы /proc. Файловая система proc называется так, из-за того что она находиться в каталоге /proc на большинстве Linux машин. Система является мощным инструментом, часто используемым приложениями. Это часть механизма при помощи которого ядро связывается с пространством пользователя и наоборот. Хотя она разработана как файловая система со структурой каталогов и inodes, в тоже время это фактически компонент зарегистрированных функций, обеспечивающих информацией важные переменные.

При создании файла в /proc, он сразу регистрируется с набором функций, сообщающих ядру, что необходимо делать при открытии этого файла или записи в него. Большинство файлов поддерживают только чтение, и лишь некоторые поддерживают запись.

Теперь мы начнем кодирование

/* tcpdata.c. Ниже представлена программа, показывающая как установить новый элемент в файловой системе proc. И что наиболее важно, эта программа взламывает TCP протокол, отслеживает все данные, проходящие через tcp уровень, и отображает их в /proc/TCPdata. */ #define MODULE #define __KERNEL__ /*we are doing kernel work*/ #include #include #include /*for registering proc entry*/ #include #include #include #include #include #include #include static struct proc_dir_entry *test_entry; struct msghdr *msg_moniter; struct iovec *iovec_moniter; static char *tcp="Tcp monitered data"; int (*orginalSend)(struct sock *, struct msghdr *,int); /* show_tcp_stats This function is what the /proc FS will call when anything tries to read /proc/TCPstat you could see last 200 bytes move out of the sockets through tcp connections */ static int show_tcp_stats(char *buf,char **start,off_t offset,int len,int unused) { len += sprintf(buf+len,"%s\n",tcp); return len; } /* Это функция обработчика, захватывающая tcp sendmsg запросы */ int moniter_tcp(struct sock *sk, struct msghdr *msg,int len) { int size; char *temp; printk("I am dangerously monitoring your tcp data \n"); msg_moniter=(struct msghdr *)kmalloc(sizeof(struct msghdr),GFP_KERNEL); memcpy(msg_moniter,msg,sizeof(struct msghdr)); orginalSend(sk,msg,len); iovec_moniter=msg_moniter->msg_iov; size=sizeof(tcp); printk("sizeof of TCPdat is %d \n",size); (sizeiov_base):strcpy(tcp,"Tcp monitered data"); kfree(msg_moniter); return len; } /* init_module Данная функция устанавливает модуль; она просто регистрирует новый каталог в /proc и создает указатель. */ int init_module() { test_entry=create_proc_entry("TCPdata",S_IRUGO,NULL); test_entry->read_proc=show_tcp_stats; orginalSend=tcp_prot.sendmsg; /* printk("the address of send send mes is %x \n",tcp_prot.sendmsg); printk("the address of hack mes is %x \n",orginalSend); */ tcp_prot.sendmsg=moniter_tcp; /* printk("the address of send send mes after hacking %x \n",tcp_prot.sendmsg); printk("the address of send send mes after hacking %x \n",moniter_tcp); */ return 0; } /* init_module */ /* cleanup_module Данная функция удаляет модуль; Она удаляет регистрацию записи директории из /proc FS */ void cleanup_module() { /* put the pointer back to tcp"s orginal message sender */ tcp_prot.sendmsg=orginalSend; /* unregister the function from the proc FS */ remove_proc_entry("TCPdata",NULL); } /* cleanup_module */ MODULE_AUTHOR("shyamjithe.c.s "); /*macros*/ MODULE_DESCRIPTION("moniter tcp data"); MODULE_LICENSE("GPL");

Данная программа была протестирована на ядре 2.4, так что вы можете откомпилировать её используя:

Gcc -O6 -Wall -c tcpdata.c -I /usr/src/linux-2.4.20-8/include/ this will produce tcpdata.o now insmod tcpdata.o open some tcp applications cat /proc/TCPdata to remove the module use rmmod tcpdata Теперь для того, чтобы понять этот код, я дам некоторые пояснения. Вся программа - это только хитрый путь для использования функциональных указателей. Но необходимо быть внимательным при использовании ваших собственных обработчиков, потому что неправильное размещение функционального указателя может привести к зависанию системы. Как было сказано, это является минимальным путем для взлома TCP. Вы можете сформировать новый уровень над уровнем TCP подобно этому, который будет вмешиваться во все типы заданий, сделанных TCP. Тоже может быть проделано и с UDP.

Заключение

Наиболее важным выводом, получаемым их описанной выше программы, является то, что не всегда необходимо изменять исходный код ядра, когда мы проделываем любую связанную с протоколом модификацию. Это объектно-ориентированная реализация Linux ядра, позволяющая нам манипулировать объектами данных внутри ядра.

Стеки протоколов

Стек протоколов - это иерархически организованный набор сетевых протоколов различных уровней, достаточный для организации и обеспечения взаимодействия узлов в сети. В настоящее время в сетях используется большое количество стеков коммуникационных протоколов. Наиболее популярными являются стеки: TCP/IP, IPX/SPX, NetBIOS/SMB, Novell NetWare, DECnet, XNS, SNA и OSI. Все эти стеки, кроме SNA, на нижних уровнях - физическом и канальном - используют одни и те же хорошо стандартизованные протоколы Ethemet, Token Ring, FDDI и некоторые другие, которые позволяют использовать во всех сетях одну и ту же аппаратуру. Зато на верхних уровнях все стеки работают по своим собственным протоколам. Эти протоколы часто не соответствуют рекомендуемому моделью OSI разбиению на уровни. В частности, функции сеансового и представительного уровня, как правило, объединены с прикладным уровнем. Такое несоответствие связано с тем, что модель OSI появилась как результат обобщения уже существующих и реально используемых стеков, а не наоборот.

Все протоколы, входящие в стек, разработаны одним производителем, то есть они способны работать максимально быстро и эффективно.

Важным моментом в функционировании сетевого оборудования, в частности сетевого адаптера, является привязка протоколов. Она позволяет использовать разные стеки протоколов при обслуживании одного сетевого адаптера. Например, можно одновременно использовать стеки TCP/IP и IPX/SPX. Если вдруг при попытке установления связи с адресатом с помощью первого стека произошла ошибка, то автоматически произойдёт переключение на использование протокола из следующего стека. Важным моментом в данном случае является очередность привязки, поскольку она однозначно влияет на использование того или иного протокола из разных стеков.

Вне зависимости от того, какое количество сетевых адаптеров установлено в компьютере, привязка может осуществляться как «один к нескольким», так и «несколько к одному», то есть один стек протоколов можно привязать сразу к нескольким адаптерам или несколько стеков к одному адаптеру.

NetWare - сетевая операционная система и набор сетевых протоколов, которые используются в этой системе для взаимодействия с компьютерами-клиентами, подключёнными к сети. В основе сетевых протоколов системы лежит стек протоколов XNS. В настоящее время NetWare поддерживает протоколы TCP/IP и IPX/SPX. Novell NetWare была популярна в 80-е и 90-е года по причине большей эффективности в сравнении с операционными системами общего назначения. Ныне это устаревшая технология.

Стек протоколов XNS (Xerox Network Services Internet Transport Protocol) разработан компанией Xerox для передачи данных по сетям Ethernet. Содержит 5 уровней.

Уровень 1 - среда передачи - реализует функции физического и канального уровня в OSI-модели:

* управляет обменом данными между устройством и сетью;

* маршрутизирует данные между устройствами одной сети.

Уровень 2 - межсетевой - соответствует сетевому уровню в OSI- модели:

* управляет обменом данными между устройствами, находящимися в разных сетях (обеспечивает дейтаграммный сервис в терминах IEEE- модели) ;

* описывает способ прохождения данных через сеть.

Уровень 3 - транспортный - соответствует транспортному уровню в OSI-модели:

* обеспечивает связь "end-to-end" между источником и приемником данных.

Уровень 4 - контрольный - соответствует сессионному и представительному уровню в OSI-модели:

* управляет представлением данных;

* управляет контролем над ресурсами устройств.

Уровень 5 - прикладной - соответствует высшим уровням в OSI- модели:

* обеспечивает функции обработки данных для прикладных задач.

Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol) на сегодня является наиболее распространенным и функциональным. Он работает в локальных сетях любых масштабов. Данный стек является основным стеком в глобальной сети Интернет. Поддержка стека была реализована в компьютерах c операционной системой UNIX. В результате популярность протокола TCP/IP возросла. В стек протоколов TCP/IP входит достаточно много протоколов, работающих на различных уровнях, но свое название он получил благодаря двум протоколам - TCP и IP.

TCP (Transmission Control Protocol) - транспортный протокол, предназначенный для управлением передачей данных в сетях, использующих стек протоколов TCP/ IP. IP (Internet Protocol) - протокол сетевого уровня, предназначенный для доставки данных в составной сети с использованием одного из транспортных протоколов, например TCP или UDP.

Нижний уровень стека TCP/IP использует стандартные протоколы передачи данных, что делает возможным его применение в сетях с использованием любых сетевых технологий и на компьютерах с любой операционной системой.

Изначально протокол TCP/IP разрабатывался для применения в глобальных сетях, именно поэтому он является максимально гибким. В частности, благодаря способности фрагментации пакетов данные, несмотря на качество канала связи, в любом случае доходят до адресата. Кроме того, благодаря наличию IP-протокола становится возможной передача данных между разнородными сегментами сети.

Недостатком TCP/IP-протокола является сложность администрирования сети. Так, для нормального функционирования сети требуется наличие дополнительных серверов, например DNS, DHCP и т. д., поддержание работы которых и занимает большую часть времени системного администратора. Лимончелли Т., Хоган К., Чейлап С. - Сестемное и сетевое администрирование. 2-е изд. 2009год. 944с

Стек протоколов IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) является разработкой и собственностью компании Novell. Он был разработан для нужд операционной системы Novell NetWare, которая еще до недавнего времени занимала одну из лидирующих позиций среди серверных операционных систем.

Протоколы IPX и SPX работают на сетевом и транспортном уровнях модели ISO/ OSI соответственно, поэтому отлично дополняют друг друга.

Протокол IPX может передавать данные с помощью датаграмм, используя для этого информацию о маршрутизации в сети. Однако для того, чтобы передать данные по найденному маршруту, необходимо сначала установить соединение между отправителем и получателем. Этим и занимается протокол SPX или любой другой транспортный протокол, работающий в паре с IPX.

К сожалению, стек протоколов IPX/SPX изначально ориентирован на обслуживание сетей небольшого размера, поэтому в больших сетях его использование малоэффективно: излишнее использование широковещательного вещания на низкоскоростных линиях связи недопустимо.

На физическом и канальном уровнях стек OSI поддерживает протоколы Ethernet, Token Ring, FDDI, а также протоколы LLC, X.25 и ISDN, то есть использует все разработанные вне стека популярные протоколы нижних уровней, как и большинство других стеков. Сетевой уровень включает сравнительно редко используемые протоколы Connectionoriented Network Protocol (CONP) и Connectionless Network Protocol (CLNP). Протоколы маршрутизации стека OSI это ES-IS (End System -- Intermediate System) между конечной и промежуточной системами и IS-IS (Intermediate System -- Intermediate System) между промежуточными системами. Транспортный уровень стека OSI скрывает различия между сетевыми сервисами с установлением соединения и без установления соединения, так что пользователи получают требуемое качество обслуживания независимо от нижележащего сетевого уровня. Чтобы обеспечить это, транспортный уровень требует, чтобы пользователь задал нужное качество обслуживания. Службы прикладного уровня обеспечивают передачу файлов, эмуляцию терминала, службу каталогов и почту. Из них наиболее популярными являются служба каталогов (стандарт Х.500), электронная почта (Х.400), протокол виртуального терминала (VTP), протокол передачи, доступа и управления файлами (FTAM), протокол пересылки и управления работами (JTM).

Достаточно популярный стек протоколов, разработкой которого занимались компании IBM и Microsoft, соответственно, ориентированный на использование в продуктах этих компаний. Как и у TCP/IP, на физическом и канальном уровне стека NetBIOS/SMB работают стандартные протоколы, такие как Ethernet, Token Ring и другие, что делает возможным его использование в паре с любым активным сетевым оборудованием. На верхних же уровнях работают протоколы NetBIOS (Network Basic Input/Output System) и SMB (Server Message Block).

Протокол NetBIOS был разработан в середине 80-х годов прошлого века, но вскоре был заменен на более функциональный протокол NetBEUI (NetBIOS Extended User Interface), позволяющий организовать очень эффективный обмен информацией в сетях, состоящих не более чем из 200 компьютеров.

Для обмена данными между компьютерами используются логические имена, присваиваемые компьютерам динамически при их подключении к сети. При этом таблица имен распространяется на каждый компьютер сети. Поддерживается также работа с групповыми именами, что позволяет передавать данные сразу нескольким адресатам.

Главные плюсы протокола NetBEUI - скорость работы и очень малые требования к ресурсам. Если требуется организовать быстрый обмен данными в небольшой сети, состоящей из одного сегмента, лучшего протокола для этого не найти. Кроме того, для доставки сообщений установленное соединение не является обязательным требованием: в случае отсутствия соединения протокол использует датаграммный метод, когда сообщение снабжается адресом получателя и отправителя и «пускается в путь», переходя от одного компьютера к другому.

Однако NetBEUI обладает и существенным недостатком: он полностью лишен понятия о маршрутизации пакетов, поэтому его использование в сложных составных сетях не имеет смысла. Пятибратов А.П.,Гудыно Л.П.,Кириченко А.А.Вычислительные машины, сети и телекоммуникационные системы Москва 2009год. 292с

Что касается протокола SMB (Server Message Block), то с его помощью организуется работа сети на трех самых высоких уровнях - сеансовом, уровне представления и прикладном уровне. Именно при его использовании становится возможным доступ к файлам, принтерам и другим ресурсам сети. Данный протокол несколько раз был усовершенствован (вышло три его версии), что позволило применять его даже в таких современных операционных системах, как Microsoft Vista и Windows 7. Протокол SMB универсален и может работать в паре практически с любым транспортным протоколом, например TCP/IP и SPX.

Стек протоколов DECnet (Digital Equipment Corporation net) содержит 7 уровней. Несмотря на разницу в терминологии, уровни DECnet очень похожи на уровни OSI-модели. DECnet реализует концепцию сетевой архитектуры DNA (Digital Network Architecture), разработанную фирмой DEC, согласно которой разнородные вычислительные системы (ЭВМ разных классов), функционирующие под управлением различных операционных систем, могут быть объединены в территориально-распределенные информационно-вычислительные сети.

Протокол SNA (System Network Architecture) компании IBM предназначен для удаленной связи с большими компьютерами и содержит 7 уровней. SNA основана на концепции главной (хост) -машины и обеспечивает доступ удаленных терминалов к мейнфреймам IBM. Основной отличительной чертой SNA является наличие возможности доступа каждого терминала к любой прикладной программе главной ЭВМ. Системная сетевая архитектура реализована на базе виртуального телекоммуникационного метода доступа (Virtual Telecommunication Access Method - VTAM) в главной ЭВМ. VTAM управляет всеми линиями связи и терминалами, причем каждый терминал имеет доступ ко всем прикладным программам.

При помощи сеансового уровня (Session Layer) организуются диалог между сторонами, фиксируется, какая из сторон является инициатором, какая из сторон активна и каким образом завершается диалог.

Представительный уровень (Presentation Layer) занимается формой предоставления информации нижележащим уровням, например, перекодировкой или шифрованием информации.

Прикладной уровень (Application Layer) это набор протоколов, которыми обмениваются удаленные узлы, реализующие одну и ту же задачу (программу).

Следует отметить, что некоторые сети появились гораздо раньше, чем была разработана модель OSI, поэтому для многих систем соответствие уровней модели OSI весьма условно.

1.3. Стек протоколов Интернет

Интернет предназначена для транспортировки любого вида информации от источника к получателю. В транспортировке информации участвуют различные элементы сети (рис. 1.1) – оконечные устройства, коммутационные устройства и серверы. Группы узлов при помощи коммутационных устройств объединяются в локальную сеть, локальные сети соединяются между собой шлюзами (маршрутизаторами). Коммутационные устройства используют различные технологии: Ethernet, Token Ring, FDDI и другие.

Каждое оконечное устройство (хост) может одновременно обслуживать несколько процессов по обработке информации (речь, данные, текст …), которые существуют в виде сетевых приложений (специализированных программ), расположенных на высшем уровне; от приложения информация поступает в средства обработки информации в нижележащие уровни.

Транспортировка приложения в каждом узле решается последовательно различными уровнями. Каждый уровень для решения свой части задачи использует свои протоколы и обеспечивает дуплексное прохождение информации. Последовательность прохождения задач образует стек протоколов. В процессе транспортировки информации каждый узел задействует необходимый ему стек протоколов. На рис. 1.3 показан полный стек базовых протоколов сетевого соединения в Интернет.

Узлы, с точки зрения сети, представляют собой источники и получатели информации. Четыре нижних уровня в совокупности независимы от вида передаваемой информации. Каждое сетевое приложение, связывающееся с четвертым уровнем, идентифицируется своим уникальным номером порта . Значения портов занимают диапазон от 0 до 65535. В этом диапазоне номера портов 0-1023 выделены под общесетевые приложения (well-known ports), номера портов 1024-49151 используются разработчиками специализированного программного обеспечения, номера портов 49152-65535 – динамически закрепляются за сетевыми приложениями пользователей на время сеанса связи. Численные значения номеров портов стека приведено в .

Транспортный (четвертый) уровень поддерживает два режима установления связи

– с установлением соединения и без установления соединения. Каждый из режимов идентифицируется своим номером протокола (Protocol) . В стандартах Интернет принято кодирование в шестнадцатеричном коде. Первый режим используется модулем TCP, имеющий код протокола 6 (в шестнадцатеричном коде – 0x06) и используется для гарантированной транспортировки информации. Для этого каждый передаваемый пакет снабжается порядковым номером и должен быть подтвержден

______________________________________________________________________________

приемной стороной о его правильном приеме. Второй режим используется модулем UDP без гарантии доставки информации получателю (гарантия доставки обеспечивается приложением). Протокол UDP имеет код 17 (в шестнадцатеричном коде – 0x11).

Прикладной

Представительный

Сеансовый

DHCP (Port = 67/68)

Транспортный

Protocol = 0x0059

Protocol = 0x0002

Protocol = 0x0001

Protocol Type = 0x0806

Protocol Type = 0x0800

Канальный

Канальный

Канальный

Физический

Канальный

Кабель,Ethernetвитая пара, оптоволокно

Физический Кабель, витая пара, оптоволокно

Физический

Кабель, витая пара, оптоволокно

Физический

Кабель, радио, оптоволокно

Рис. 1.3. Стек базовых протоколов Интернет

______________________________________________________________________________

Сетевой (третий) уровень обеспечивает перемещение информации в виде пакетов между сетями (интерфейсами канального уровня), используя сетевой адрес. Семейство протоколов третьего уровня нижележащими уровнями идентифицируется типом протокола (ARP – типом 0x0806 или IP – типом 0x0800). Связка “протокол – сетевой адрес – номер порта ” называется сокетом (socket). Пара сокетов – на передаче и приеме – однозначно определяет установленное соединение. Адрес назначения каждого пакета, поступившего в модуль IP с канального уровня, анализируется, чтобы понять, куда пакет следует дальше направить: в собственное приложение или переместить на другой интерфейс для дальнейшей транспортировке по сети.

Второй (канальный) уровень осуществляет обработку пакетов в локальной сети, используя различные технологии: Ethernet, Token Ring, FDDI и другие. Первый уровень обеспечивает преобразование бинарных кодов в линейные коды, которые наиболее хорошо подходят к используемой транспортной среде (металлический кабель, оптоволоконная линия связи, радиоканал).

ВОПРОСЫ К РАЗДЕЛУ 1.3

1. Чем определяются средства сетевого уровня для обработки пакетов, поступающих с канального уровня?

Ответ. Типом протокола: 0x0806 – для ARP и 0x0800 – для IP.

2. Чем определяются средства транспортного уровня для обработки пакетов, поступающих с сетевого уровня?

Ответ. Номером протокола: 0x0006 – для TCP и 0x0011 – для UDP.

3. Чем определяется тип сетевого приложения для обработки дейтаграмм?

Ответ. Номером порта.

4. Приведите примеры номеров портов общесетевых приложений.

Ответ: Порт 80 – HTTP, порт 23 – TELNET, порт 53 – DNS.

1.4. Протоколы доступа в Интернет

Для доступа в Интернет используется семейство протоколов под общим названием PPP (Point-to-Point Protocol) , в число которых входят :

1. Протокол управления каналом (Link Control Protocol – LCP) для согласования параметров обмена пакетами на канальном уровне на участке хост – сервер сетевого доступа (в частности, для согласования размера пакета и типа протокола аутентификации).

2. Протокол аутентификации (Authentication Protocol) для установления легитимности пользователя (в частности, с использованием протокола Challenge Handshake Authentication Protocol – CHAP).

3. Протокол сетевого управления (IP Control Protocol – IPCP) для конфигурации параметров сетевого обмена (в частности, присвоения IP-адреса).

После этого начинается обмен информацией по протоколу IP.

Каждый из перечисленных протоколов может использовать любую транспортную среду, поэтому существует много способов инкапсуляции PPP на физическом уровне. Для инкапсуляции PPP в каналы связи “точка-точка” используется процедура схожая с

HDLC .

Обмен кадрами с использованием процедуры схожей с HDLC (High-level Data Link Control Procedure) предполагает дуплексный обмен кадрами. Каждый переданный кадр должен быть подтвержден, при отсутствии подтверждения в течение тайм-аута передатчик повторяет передачу. Структура кадра приведена на рис. 1.4. Порядок передачи полей кадра – слева направо. Назначение полей кадра следующее.

Ю.Ф.Кожанов, Колбанев М.О ИНТЕРФЕЙСЫ И ПРОТОКОЛЫ СЕТЕЙ СЛЕДУЮЩЕГО ПОКОЛЕНИЯ

______________________________________________________________________________

Рис. 1.4. Структура полей HDLC-кадра

Каждый передаваемый кадр должен начинаться и заканчиваться комбинацией "Флаг" (Flag), имеющую битовую структуру вида 01111110 (0х7е). Одна и та же комбинация "Флаг" может быть использована как закрывающая для одного кадра и открывающая для следующего кадра. Комбинации "Флаг" должны выявляться приемной стороной с целью определения границ кадра. Для обеспечения кодонезависимого переноса информации необходимо исключить из последующих полей кадра все комбинации, совпадающие со служебными символами (например, комбинацией "Флаг").

В асинхронном режиме формирование всех полей кадра производится побайтно, каждый байт предваряется битом “старт” и заканчивается битом “стоп”.

В синхронном режиме используется либо байт-вставка, либо бит-вставка. В первом случае в полях кадра производится замена байтовых последовательностей 0x7e (“Флаг”) на 2-байтовые 0x7d и 0x5e, 0x7d на 0x7d и 0x5d, 0x03 на 0x7d и 0x23. Во втором случае после формирования всех полей кадра производится побитовый просмотр содержимого каждого кадра между комбинациями "Флаг" и вставляется бит "ноль" после каждых пяти смежных битов "единица". При декодировании кадра на приеме производится побитовый просмотр содержимого кадра между комбинациями "Флаг" и изъятии бита "ноль" после каждых пяти смежных битов "единица".

Адресное поле (Address) имеет постоянное значение 11111111 (0хff), а поле управления (Control) – значение 00000011 (0x03).

Поле протокола принимает значение 0хс021 для протокола LCP, 0хc223 – для протокола CHAP, 0х8021 – для IPCP и 0х0021 – для протокола IP.

Заполнение информационного поля зависит от типа протокола, но его длина не должна быть менее 4 байт.

Проверочная последовательность (Frame Check Sequence, FCS) на передаче формируется так, чтобы а)при умножении информации между флагами на Х16 и б)последующем делении по модулю 2 на образующий полином Х16 + Х12 + Х5 + 1 результат был бы равен постоянному числу 0хf0b8.

Процедура доступа абонента ТФОП в Интернет состоит из нескольких этапов. На первом этапе используется протокол LCP (Protocol = 0xc021), который

использует следующий формат (рис. 1.5).

Рис. 1.5. Формат кадра протокола LCP

Поле протокола принимает значение 0хс021. Каждое сообщение характеризуется своим кодом (Code), порядковым номером (ID), длиной (Length). В длину сообщения включаются все поля от Code до FCS. В одном сообщении может содержаться несколько параметров, каждый из которых характеризуется типом параметра (Type),

длиной (Length) и данными (Date).

(Configure-Nak), 04 – отказ от конфигурации (Configure-Reject), 05 – запрос на разъединение (Terminate-Request), 06 – подтверждение разъединения (Terminate-Ack).

Полная диаграмма взаимодействия оконечного устройства (Host), сервера сетевого доступа (NAS) и сервера аутентификации, авторизации и учета (ААА) при организации доступа абонента ТФОП в Интернет приведена на рис. 1.6.

______________________________________________________________________________

Из рисунка 1.6 видно, что вначале хост по протоколу LCP (Protocol = 0xc021) запросил соединение с параметрами MTU=300, PFC=7, но в результате их согласования с сервером доступа NAS (Code=02) установлены параметры MTU=200 (MTU – максимальный размер пакета в байтах), протокол аутентификации – CHAP (Auth.prot=c223). Обмен сжатыми заголовками (PFC=7) сервером доступа NAS был отвергнут (Code=04).

Type = 3, IP-address = a.b.c.d, Mask,

Protocol = 0xc021, code=04,

Protocol = 0xc021, code=01,

Type = 1, MTU=300

Protocol = 0xc021, code=03,

Type = 1, MTU=200

Protocol = 0xc021, code=01,

Type = 1, MTU=200

Protocol = 0xc021, code=02,

Type = 1, MTU=200

Protocol = 0xc021, code=01,

Protocol = 0xc021, code=02,

Type = 3, Auth.prot=0xc223, Algorithm=5

Protocol = 0xc223, code=01,

Protocol = 0xc223, code=02,

Prot=UDP, code=01,

Name=ABC, Value = W

Auth = 0, Attr = Name, Chall=V

Prot=UDP, code=02,

IP-address=a.b.c.d , Mask,

Prot=UDP, code=05, Data

Protocol = 0x0021, …

Protocol =0x0021, …

Protocol = 0xc021, code=05,

1994, DS] . Суть процедуры аутентификации состоит в том, что NAS посылает хосту некоторое случайное число V, а хост возвращает другое число W, вычисленное по заранее известной функции с использованием имени (Name) и пароля (Password), которые вводятся пользователем в компьютер из купленной Интернет карты у провайдера. Иначе говоря, W=f(V, Name, Password). Предполагается, что злоумышленник (хакер) в состоянии перехватить пересылаемые по сети значения V, Name и W, и ему известен алгоритм вычисления функции f. Существо формирования W состоит в том, что исходное элементы (биты) случайного числа V различным образом “перемешиваются” с неизвестным злоумышленнику элементами пароля Password. Затем полученный зашифрованный текст подвергается сжатию, например, суммированию байтов по модулю два. Такое преобразование называется дайджест-функцией (digest function) или хэш-функцией, а результат – дайджестом. Точная процедура формирования дайджеста определена алгоритмом MD5 и описана в . NAS по протоколу RADIUS запрашивает у сервера ААА истинное значение W, пересылая ему значения Name и Challenge=V. Сервер AAA на основании полученных от NAS значений V и Name и имеющегося у него в базе данных пароля Password по тому же алгоритму вычисляет W и отсылает его NAS. NAS сравнивает два значения W, полученных от хоста и от сервера AAA: если они совпадают, то хосту посылается сообщение об успешной аутентификации – Success (Code=03).

На третьем этапе происходит конфигурация сетевых параметров по протоколу IPCP (он же PPP IPC, Protocol=0x8021). Хост запрашивает у NAS сетевые IP-адреса и NAS выделяет из пула (диапазона) IP-адрес для хоста (IP-address=a.b.c.d), а

также сообщает IP-адрес DNS-сервера (IP-address=e.f.g.h). NAS по протоколу RADIUS

высылает серверу ААА извещение (Code=04) о начале тарификации и получает подтверждение (Code=05).

На 4-м этапе пользователь начинает сеанс связи с Интернет по протоколу IP (Protocol = 0x0021).

После завершения сеанса (этап 5) пользователь по протоколу LCP высылает NAS сообщение о разрушении соединения (Code=05), NAS подтверждает это сообщение (Code=06), отсылает серверу ААА извещение об окончании тарификации и получает от него подтверждение. Все устройства возвращаются в исходное состояние.

ВОПРОСЫ К РАЗДЕЛУ 1.4

1. Назовите состав и назначение семейства протоколов РРР.

Ответ. LCP – для согласования параметров обмена пакетами, CHAP – для установления легитимности пользователя, IPCP – для присвоения IP-адреса.

2. Обеспечивает ли протокол РРР обнаружение ошибок и упорядоченную доставку пакетов?

Ответ. Обнаружение ошибок – да, упорядоченную доставку – нет, это обеспечивает протокол TCP.

3. Где хранятся данные для аутентификации пользователя?

Ответ. В Интернет-карте и на сервере ААА.

4. Можно ли до установления соединения с сервером NAS заранее определить IPадрес пользователя?

Ответ: Нет. После успешной аутентификации NAS выдает свободный IP-адрес из диапазона отведенных адресов.

5. Какие способы используется для учета стоимости соединений в Интернет? Ответ: Обычно взимается абонентская плата или плата за объем принятой

Стёком протоколов, или в просторечье TCP/IP называют сетевую архитектуру современных устройств, разработаных для пользования сетью. Stack - это стенка, в которой каждый составляющий кирпичик лежит поверх другого, зависит от него. Называть стек протоколов "стёком TCP/IP" начали благодаря двум основным протоколам, которые были реализованы - непосредственно IP, и TCP на его основе. Однако, они лишь основные и наиболее распостраненные. Если не сотни, то десятки других используются по сей день в разных целях.

Привычный нам веб (world wide web) основан на протоколе HTTP (hyper-text transfer protocol), который в своб очередь работает на основе TCP. Это классический пример использования стека протоколов. Есть еще протоколы электронной почты IMAP/POP и SMTP, протоколы удаленной оболочки SSH, удаленного рабочего стола RDP, баз данных MySQL, SSL/TLS, и тысячи других приложений со своими протоколами (..)

Чем же отличаются все эти протоколы? Все довольно просто. Помимо различных задач, поставленных при разработке (например, скорость, безопасность, устойчивость и прочие критерии), протоколы созданы с целью разграничения. Например, существуют протоколы прикладного уровня, разные у разных приложений: IRC, Skype, ICQ, Telegram и Jabber - несовместимы друг с другом. Они разработаны для выполнения конкретной задачи, и в данном случае возможность звонить по WhatsApp в ICQ просто не определена технически, так как приложения используют различный протокол. Но их протоколы основываются на одном и том же протоколе IP.

Протоколом можно называть запланированную, штатную последовательность действий в процессе, в котором существует несколько субъектов, в сети они называются пирами (напарниками), реже - клиент и сервер, подчеркивая особенности конкретного протокола. Простейший пример протокола для непонимающего до сих пор - рукопожатие при встрече. Оба знают как и когда, но вопрос зачем - это уже вопрос разработчиков, а не пользователей протокола. Кстати, рукопожатие (handshake) есть почти по всех протоколах, например, для обеспечения разграничения протоколов и защиты от "полетов не на том самолете".

Вот что такое TCP/IP на примере самых популярных протоколов. Здесь показана иерархия зависимости. Надо сказать что приложения лишь пользуются указанными протоколами, которые могут быть а могут и не быть реализованы внутри ОС.

Если уж совсем-совсем простым языком, это почтовая служба.

У каждого участника IP-совместимой сети есть свой собственный адрес, который выглядит примерно так: 162.123.058.209. Всего таких адресов для протокола IPv4 - 4,22 миллиарда.

Предположим, что один компьютер хочет связаться с другим и отправить ему посылку - "пакет". Он обратится к "почтовой службе" TCP/IP и отдаст ей свою посылку, указав адрес, по которому ее необходимо доставить. В отличие от адресов в реальном мире, одни и те же IP-адреса часто присваиваются разным компьютерам по очереди, а значит, "почтальон" не знает, где физически находится нужный компьютер, поэтому он отправляет посылку в ближайшее "почтовое отделение" - на сетевую плату компьютера. Возможно, там есть информация о том, где находится нужный компьютер, а возможно, такой информации там нет. Если ее нет, на все ближайшие "почтовые отделения" (коммутаторы) расылается запрос адреса. Этот шаг повторяется всеми "почтовыми отделениями", пока они не обнаружат нужный адрес, при этом они запоминают, сколько "почтовых отделений" до них прошел этот запрос и если он пройдет определенное (достаточно болшое) их количество, то его вернут назад с пометкой "адрес не найден". Первое "почтовое отделение" вскоре получит кучу ответов от других "отделений" с вариантами путей до адресата. Если ни одного достаточно короткого пути не найдется (обычно 64 пересылки, но не более 255), посылка вернется отправителю. Если найдется один или несколько путей, посылка будет передана по самому короткому из них, при этом "почтовые отделения" на некоторое время запомнят этот путь, позволяя быстро передавать последующие посылки, не спрашивая ни у кого адрес. После доставки, "почтальон" в обязательном порядке заставит получателя подписать "квитанцию" о том, что он получил посылку и отдаст эту "квитанцию" отправителю, как свидетельство о том, что посылка доставлена в целости - проверка доставки в TCP обязательна. Если отправитель не получит такую квитанцию через определенный промежуток времени или в квитанции будет написано, что посылка повредилась или потерялась при отправке, тогда он попытается снова отправить посылку.

TCP/IP - это набор протоколов.

Протокол - это правило. Например, когда с вами здороваются - вы здороваетесь в ответ (а не прощаетесь или нежелает счастья). Программисты скажут что мы используем протокол приветствия, например.

Что за TCP/IP (сейчас будет совсем просто, пусть коллег не бомбит):

Информация до вашего компа идет по проводам (радио или что еще - не суть важно). Если по проводам пустили ток - значит 1. Выключили - значит 0. Получается 10101010110000 и так далее. 8 ноликов и единиц (битов) это байт. Например 00001111. Это можно представить как число в двоичном виде. В десятичном виде байт - это число от 0 до 255. Эти числа сопоставляет с буквами. Например 0 это А, 1 это Б. (Это называется кодировка).

Ну так вот. Чтобы два компьютера могли эффективно передавать информацию по проводам - они должны подавать ток по каким то правилам - протоколам. Например, они должны условиться как часто можно менять ток, чтобы можно было отличить 0 от второго 0.

Это первый протокол.

Компьютерам как то понимать, что один из них перестал отдавать информацию (типа "я все сказал"). Для этого в начале последовательности данных 010100101 компьютеры могут слать несколько бит, длинну сообщения, которое они хотят передать. Например, первые 8 бит могут означать длину сообщения. То есть сначала в первых 8 битах передают закодированное число 100 и потом 100 байт. После этого принимающий компьютер будет ожидать следующие 8 бит и следующее сообщение.

Вот у нас еще один протокол, с его помощью можно передавать сообщения (компьютерные).

Компьютеров много, чтобы они могли понять кому надо отправить сообщение используют уникальные адреса компьютеров и протокол, позволяющий понять кому это сообщение адресовано. Например первые 8 бит будут означать адрес получателя, следующие 8 - длину сообщения. И потом сообщение. Мы только что засунули один протокол в другой. IP протокол отвечает за адресацию.

Связь не всегда надежная. Для надежной доставки сообщений (компьютерных) используют TCP. При выполнении протокола TCP компьютеры будут переспрашивает друг друга - правильное ли они сообщение получили. Есть еще UDP - это когда компы не переспрашивают то ли они получили. Зачем надо? Вот вы слушаете интернет радио. Если пару байт придет с ошибками - вы услышите например "пш" и дальше снова музыку. Не смертельно, да и не особо важно - для этого используют UDP. А вот если пару байт испортятся при загрузку сайта - вы получите хрень на мониторе и ничего не поймёте. Для сайтом используют TCP.

TCP/IP еще (UDP/IP) - это протоколы, вложенные друг в друга, на которых работает интернет. В конце концов эти протоколы позволяют передать компьютерное сообщение целым и точно по адресу.

Еще есть http протокол. Первая строчка - адрес сайта, последующие строчки - текст который вы шлете на сайт. Все строчки http - это текст. Который засовывают в TCP сообщение, которое адресуют с помощью IP и так далее.

Ответить

Стек протоколов - это иерархически организованный набор сетевых протоколов , достаточный для организации взаимодействия узлов в сети. Протоколы работают в сети одновременно, значит работа протоколов должна быть организована так, чтобы не возникало конфликтов или незавершённых операций. Поэтому стек протоколов разбивается на иерархически построенные уровни, каждый из которых выполняет конкретную задачу - подготовку, приём, передачу данных и последующие действия с ними.

Количество уровней в стеке меняется в соответствии с конкретным стеком протоколов. Протоколы нижних уровней часто реализуются комбинацией программных и аппаратных средств, а протоколы верхних уровней, как правило, программными средствами.

Существует достаточное количество стеков протоколов, широко применяемых в сетях. Наиболее популярные стеки протоколов: OSI международной организации по стандартизации , TCP/IP , используемый в сети Internet и во многих сетях на основе операционной системы UNIX , IPX/SPX фирмы Novell, NetBIOS/SMB, разработанный фирмами Microsoft и IBM , DECnet корпорации Digital Equipment , SNA фирмы IBM и некоторые другие.

Энциклопедичный YouTube

    1 / 3

    Основы сетей передачи данных. Модель OSI и стек протоколов TCP IP. Основы Ethernet.

    Стек протоколов

    Информатика. Сетевые технологии: Стек протоколов OSI. Центр онлайн-обучения «Фоксфорд»

    Субтитры

Стандартные стеки коммуникационных протоколов

OSI

Важно различать модель OSI и стек протоколов OSI. В то время как модель OSI является концептуальной схемой взаимодействия открытых систем, стек OSI представляет собой набор спецификаций конкретных протоколов.

В отличие от других стеков протоколов, стек OSI полностью соответствует модели OSI, включая спецификации протоколов для всех семи уровней взаимодействия, определённых в этой модели:

  • На физическом и канальном уровнях стек OSI поддерживает протоколы Ethernet , Token ring , FDDI , а также протоколы LLC , X.25 и ISDN , то есть использует все разработанные вне стека популярные протоколы нижних уровней, как и большинство других стеков.
  • Сетевой уровень включает сравнительно редко используемые протоколы Connection-oriented Network Protocol (CONP) и Connectionless Network Protocol (CLNP). Как следует из названий, первый из них ориентирован на соединение (connection-oriented), второй - нет (connectionless). Более популярны протоколы маршрутизации стека OSI: ES-IS (End System - Intermediate System) между конечной и промежуточной системами и IS-IS (Intermediate System - Intermediate System) между промежуточными системами.
  • Транспортный уровень стека OSI в соответствии с функциями, определёнными для него в модели OSI, скрывает различия между сетевыми сервисами с установлением соединения и без установления соединения, так что пользователи получают требуемое качество обслуживания независимо от нижележащего сетевого уровня. Чтобы обеспечить это, транспортный уровень требует, чтобы пользователь задал нужное количество обслуживания.
  • Службы прикладного уровня обеспечивают передачу файлов, эмуляцию терминала , службу каталогов и почту . Из них наиболее популярными являются служба каталогов (стандарт X.500), электронная почта (стандарт X.400), протокол виртуального терминала (VTP), протокол передачи, доступа и управления файлами (FTAM), протокол пересылки и управления работами (JTM).

TCP/IP

Стек протоколов TCP/IP - набор сетевых протоколов, на которых базируется Интернет . Обычно в стеке TCP/IP верхние 3 уровня (прикладной , представления и сеансовый) модели OSI объединяют в один - прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.

Уровни стека TCP/IP:

  1. Канальный уровень описывает каким образом передаются пакеты данных через физический уровень, включая кодирование (то есть специальные последовательности битов, определяющих начало и конец пакета данных).
  2. Сетевой уровень изначально разработан для передачи данных из одной (под)сети в другую. Примерами такого протокола является X.25 и IPC в сети ARPANET . С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны.
  3. Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных.
  4. На прикладном уровне работает большинство сетевых приложений. Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP для WWW , FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адресa) и многие другие.

Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают. Упрощённо интерпретацию стека TCP/IP можно представить так:

OSI TCP/IP
7. Прикладной HTTP, FTP, Telnet , SMTP, DNS (RIP , работающий поверх UDP , и BGP , работающий поверх TCP , являются частью сетевого уровня), LDAP Прикладной
6. Представления
5. Сеансовый
4. Транспортный TCP, UDP, RTP , NCP) и протокол объявления о сервисах Service Advertising Protocol (SAP).

NetBIOS/SMB

На физическом и канальном уровнях этого стека также задействованы уже получившие распространение протоколы, такие как Ethernet, Token Ring, FDDI, а на верхних уровнях - специфические протоколы NetBEUI (протокол расширенного пользовательского интерфейса NetBEUI - NetBIOS Extended User Interface) и SMB . NetBEUI разрабатывался как эффективный протокол, потребляющий немного ресурсов и предназначенный для сетей, насчитывающих не более 200 рабочих станций. Этот протокол содержит много полезных сетевых функций, которые можно отнести к транспортному и сеансовому уровням модели OSI, однако с его помощью невозможна маршрутизация пакетов. Это ограничивает применение протокола NetBEUI локальными сетями, не разделёнными на подсети, и делает невозможным его использование в составных сетях.

Протокол Server Message Block (SMB) поддерживает функции сеансового уровня, уровня представления и прикладного уровня. На основе SMB реализуется файловая служба. а также службы печати и передачи сообщений между приложениями.