русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Протоколы транспортного уровня TCP и UDP.


Дата добавления: 2013-12-23; просмотров: 1587; Нарушение авторских прав


Классы E и F

Классы D

Класс C

Класс B

Класс A

Стек протоколов TCP/IP

Стек протоколов NetBIOS / SMB

Применяется фирмой Microsoft в своих сетевых ОС. В частности "сетевое окружение" работает при помощи этого протокола. NetBIOS включает в себя протоколы сетевого и транспортного уровня. Обеспечивает поддержку имен: каждая из рабочих станций в ЛВС может иметь одно или несколько имен (эти имена хранятся NetBIOS в таблице, в формате адрес сетевого адаптера – имя NetBIOS). Обеспечивает как обмен датаграммами, без установления канала связи и гарантии доставки сообщений, так и передачу пакетов с установление логического канала связи между компьютерами с коррекцией ошибок и повторной передачей пакетов, при необходимости.

 

Протокол TCP/IP (Transmission Control Protocol/Internet Protocol – протокол контроля передачи данных / протокол передачи данных между сетями, Internet) разрабатывался Министерством Обороны США для глобальной сети ARPANET, и впоследствии стал основным протоколом, применяющимся в Internet. В состав стека протоколов TCP/IP входят протоколы: IP и ICMP – сетевой уровень, TCP и UDP – транспортный уровень. Ниже стек протоколов TCP/IP будет рассмотрено подробнее.

 

Протокол IP (ICMP)

Протокол IP отвечает за адресацию в сети и доставку пакетов между компьютерами сети, без установления соединения и гарантий доставки пакета. При использовании протокола IP, каждый компьютер в рамках сети должен иметь уникальный IP – адрес, представляющий собой 32-битное число. Для удобства чтения, IP адрес разбивают на четыре 8 битовых числа, называемых октетами, например 149.76.12.4. В локальной сети, которая не подключена к Internet или другим сетям, Вы можете назначать IP-адреса произвольно (главное, чтобы они не совпадали). Однако в Internet, IP-адреса выделяются централизовано, организацией InterNIC. InterNIC выдает адреса не на каждый отдельный компьютер, а в целом на локальную сеть.



В IP-адресе выделяют две части: сетевую часть (адрес локальной сети) и адрес компьютера в сети. Сетевая часть адреса может иметь переменную длину, которая зависит от класса IP-адреса и маски подсети.

Выделяют следующие классы IP-адресов:

Включает сети с адресами от 1.0.0.0 до 127.0.0.0. Сетевой номер содержится в первом октете (1-127), что предусматривает 126 сетей по 1.6 миллионов компьютеров в каждой. Стандартная маска подсети для адреса класса имеет вид 255.0.0.0.

Включает сети с адресами от 128.0.0.0 до 191.255.0.0. Сетевой номер находится в первых двух октетах (128.0 – 191.255), что предусматривает 16320 сетей с 65024 компьютерами в каждой. Стандартная маска подсети для адреса класса имеет вид 255.255.0.0.

Включает сети с адресами от 192.0.0.0 до 223.255.255.0. Сетевой номер содержится в первых трех октетах (192.0.0 - 223.255.255). Это предполагает почти 2 миллиона сетей по 254 компьютеров в каждой. Стандартная маска подсети для адреса класса имеет вид 255.255.255.0.

Включает адреса от 224.0.0.0 до 239.255.255.0. Эти адреса являются групповыми (multicast). Если несколь-ким компьютерам в сети назначен один и тот же групповой адрес, то пакет, адресованный на этот адрес, получат все компьютеры. Такие адреса в локальных сетях используются редко и зарезервированы для того времени, когда технические возможности сети Internet позволят организовывать теле- и радиовещание на группы компьютеров.

Адреса попадающие в диапазон от 240.0.0.0 до 254.0.0.0 являются или экспериментальным, или сохранены для будущего использования и не определяют какую-либо сеть.

В примерах выше упоминалась "стандартная" маска подсети. Такая маска полностью соответствует классу адреса и может определяться автоматически, на основании анализа диапазона, в котором находится адрес. Казалось бы нет никакого смысла определять маску подсети вручную и вообще вводить такое понятие. Однако существуют ситуации, когда маска подсети будет отличаться от "стандартной". Допустим, у вас имеется сеть класса B (65024 компьютера) с IP-адресом 172.16.0.0 и вы хотите разбить ее на несколько подсетей, для разных филиалов предприятия. Стандартная маска подсети для адреса класса B равна 255.255.0.0 и адрес 172.16.1.0 интерпретируется, как компьютер с адресом 1.0 в сети с адресом 172.16. Однако если задать маску подсети равную 255.255.255.0, то этот IP-адрес прочитается как подсеть 172.16.1, содержащая 254 компьютера с адресами от 1 до 254. Таким образом, перед тем как решить является ли IP-адрес адресом конкретного компьютера или адресом сети, необходимо взглянуть на маску подсети, которая может отличаться от стандартной. Более того, маска подсети может не обязательно заканчиваться на границе байта. Маска всегда рассматривается в двоичном выражении, где единицы в октетах соответствуют полю адреса сети, а нули – полю адреса компьютера (см. табл.).

 

  Десятичное представление Двоичное представление
IP-адрес 172 . 16 . 96 . 0 10101100 . 00010000 . 01100000 . 00000000
Маска подсети 255 . 255. 192 . 0 11111111 . 11111111 . 11000000 . 00000000
Интерпретация адреса: - адрес подсети - адрес компьютера   172 . 16 . 1 32 . 0   10101100 . 00010000 . 01 100000 . 00000000  

 

Помимо адресов из классов A,B,C,D, E, F, cуществует также несколько зарезервированных адресов. IP-адрес в котором все биты октеты адреса компьютера равны 0 относится ко всей сети, а где все биты октеты адреса компьютера равны 1 назван широковещательным (broadcast) адресом. Он относится к каждому компьютеру сети. Таким образом, 149.76.255.255 - не существующий адрес компьютера, который относится ко всем компьютерам из сети 149.76.0.0.

Имеются еще два зарезервированных IP-адреса, 0.0.0.0 и 127.0.0.0. Первый назван путь пакетов по умолчанию (default route), второй - кольцевым (loopback) адресом или ссылкой на самого себя. В несуществующей сети 127.0.0.0, адрес 127.0.0.1 будет назначен специальному интерфейсу, который действует подобно закрытому кругообороту. Любой IP пакет переданный на этот адрес будет возвращен на этот же компьютер так, как если бы пакет пришел откуда-то из сети. Это позволяет тестировать сетевое программное обеспечение без использования "реальной" сети.

Также имеется ряд "серых" IP-адресов, которые зарезервированы для использования только в локальных сетях. Пакеты с "серыми" адресами не передаются маршрутизаторами Internet. К таким адресам относятся:

Сеть класса А 10.0.0.0

Сеть класса B от 172.16.0.0 до 172.31.0.0

Сеть класса С от 192.168.0.0 до 192.168.255.0

По соображениям безопасности, рекомендуется использовать в локальных сетях только "серые" адреса. В таком случае прямой доступ из Internet к компьютерам ЛВС, в обход прокси-сервера организации, будет невозможен. При доставке, пакет от компьютера злоумышленника к компьютеру жертвы пройдет не один маршрутизатор Internet (алгоритмы маршрутизации см. ниже). Если адрес компьютера жертвы "серый", то первый же маршрутизатор Internet заблокирует пакет и не станет передавать его дальше. Таким образом, злоумышленнику придется сначала соединиться с прокси-сервером организации (на котором установлены средства аутентификации (проверки личности) пользователя, межсетевой экран и т.п.), и только прокси-сервер сможет обеспечивать контролируемое и протоколируемое взаимодействие между компьютером ЛВС и Internet, благодаря технологии NAT. Network Adress Translation (NAT) – это подмена в отправляемых и принимаемых пакетах данных "серых" IP-адресов компьютеров локальной сети на "реальный" IP-адрес прокси-сервера в сети Internet (более подробно см. далее в лекциях). Использование "серых" адресов также гарантирует, что даже если сообщение от одного компьютера ЛВС, к другом компьютеру ЛВС случайно попадет в каналы связи с Internet, то оно не будет передано дальше и не будет получено другой машиной, со случайно совпадающим IP-адресом.

Кроме адресации компьютеров в сети, протокол IP также отвечает за маршрутизацию (выбор маршрута доставки) пакетов данных в сетях с произвольной топологией. Маршрутизация происходит на основании специальных таблиц маршрутизации либо программно (сетевой операционной системой), либо при помощи специальных сетевых устройств – маршрутизаторов (подробнее маршрутизаторы будут рас-смотрены далее в лекциях). Рассмотрим, как происходит доставка пакета по протоколу IP. В процессе рассмотрения будет частично затронут и протокол ARP (Address Resolution Protocol), позволяющий преобразовывать IP-адреса (сетевой уровень) в 6 байтные MAC-адреса сетевых карт Ethernet (канальный уровень):

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

2. Адресация в сетях идет по протоколу IP, поэтому компьютер-отправитель знает IP-адрес получателя. Но для доставки пакета на аппаратном уровне необходимо знать Ethernet-адрес сетевой карты получателя. Для этого по протоколу ARP посылается широковещательное сообщение всем компьютерам в данном сегменте сети. Все компьютеры получают его, но только компьютер с указанным IP-адресом "отзывается" и сообщает Ethernet-адрес своей сетевой карты. Компьютер отправитель кэширует ответ в своей памяти и в дальнейшем (пока кэш не будет очищен) будет направлять пакеты по этому Etehrnet-адресу. Таким образом, доставка в рамках одного сегмента сети происходит напрямую.

3. Однако компьютер-получатель может и не находится в одном сегменте с отправителем (что видно по маске подсети). В таком случае, сообщение будет послано на маршрутизатор (IP-адрес маршрутизатора (шлюза) устанавливается вручную при настройке сети), который, получив широковещательный ARP-запрос, сообщит компьютеру-адресату свой Ethernet-адрес и дальнейшая связь будет идти через маршрутизатор. Маршрутизатор анализирует свои таблицы маршрутизации, и на основании их принимает решение о маршруте доставки пакета. Таблицы маршрутизации частично составляются вручную администратором сети, а частично динамически обновляются, на основании данных соседних маршрутизаторов, по протоколам RIP, OSPF, NLSP, BGP и др. Таблица маршрутизации упрощенно выглядит следующим образом (в различных операционных системах и моделях маршрутизаторов возможны различные варианты):

 

Таблица Пример таблицы маршрутизации.

Адрес назначения (сеть или компьютер) Маска подсети Адрес следующего маршрутизатора (шлюза) Метрика (расстояние до адресата) Сетевой интерфейс
127.0.0.1 255.255.255.255 * lo  
210.1.1.0 255.255.255.0 * eth0  
130.30.0.0 255.255.0.0 * eth1  
190.55.0.0 255.255.0.0 * eth2  
170.10.0.0 255.255.0.0 130.30.10.5 eth1  
13.1.10.17 255.255.255.255 130.30.10.5 eth1  
200.15.1.0 255.255.255.0 130.30.10.7 eth1  
200.15.1.0 255.255.255.0 190.55.15.1 eth2  
0.0.0.0 0.0.0.0 231.1.1.5 ppp0  

 

Данный пример составлен для компьютера (выполняющего функции шлюза и маршрутизатора), который подключен к сети 210.1.1.0 через сетевую карту eth0, имеет связь с Internet через модем (интерфейс ppp0), а также подключен к сети 130.30.0.0 1 через сетевую карту eth1, и к сети 190.55.0.0 через сетевую карту eth2 (см. рис ).

 

Таблица Пояснения к таблице маршрутизации

№ стр. Пояснения
Описан loopback-адрес 127.0.0.1, т.е. ссылка на самого себя (фиктивный сетевой интерфейс lo).
2 - 4 Описываются сети, к которым непосредственно подключенные сетевые карты шлюза. Сеть 210.1.1.0 – к интерфейсу eth0, 130.30.0.0 – к интерфейсу eth1, 190.55.0.0 – к интерфейсу eth2. Доставка пакетов в эти сети происходит напрямую, поэтому в таблице адрес следующего маршрутизатора (шлюза) для них не указан.
Описан маршрут до сети 170.10.0.0. Все пакеты для компьютеров с адресами от 170.10.0.1 до 170.10.255.254 будут доставлены на маршрутизатор, описанный в таблице маршрутизатор с адресом 130.30.10.5 на интерфейсе Eth1.
Описан путь до единственного компьютера с адресом 13.1.10.17. Пакеты до него будут также доставляться на маршрутизатор 130.30.10.5 (интерфейс Eth1).
7-8 Описаны два маршрута до сети 200.15.1.0, один из которых проходит через маршрутизатор 130.30.10.7 (интерфейс eth1), а второй – через маршрутизатор 190.55.15.1 (интерфейс eth2). Маршрут, проходящий через маршрутизатор 190.55.15.1 длиннее (метрика 3) и проходит через 3 сети: сеть 190.55.0.0, сеть А и сеть B. Указанный в таблице маршрутизации маршрутизатор 190.55.15.1 является лишь промежуточным: получив пакет до сети 200.15.1.0, он, в соответствии с собственной таблицей маршрутизации, передаст пакет маршрутизатору сети А. Тот проана-лизирует свою таблицу маршрутизации и передаст пакет маршрутизатору сети B, который на основании своей таблицы маршрутизации доставит пакет до сети назначения 200.15.1.0. Такая цепочечная схема доставки характерна для крупных сетей и позволяет не хранить на первом маршрутизаторе 190.55.15.1 информацию о всем пути следования пакета: достаточно только знать адрес ближайшего маршрутизатора на пути к адресату. Т.е. информация распределена между большим числом маршрутизаторов в сети. В противном случае, пришлось бы на каждом маршрутизаторе хранить все пути до всех существующих сетей, что нерационально, а в сети Internet и невозможно.
Описан маршрут по умолчанию 0.0.0.0. Любые пакеты до сетей (компьютеров) для которых не существует записи в таблице маршрутизации будут направлены по этому маршруту, т.е. в данном случае направлены в Internet, на маршрутизатор 231.1.1.5, соединенный с данным маршрутизатором по модему (сетевой интерфейс ppp0).

 

Необходимо также обратить внимание на поле "метрика" таблицы маршрутизации. Обычно метрика увеличивается на 1 при прохождении каждого маршрутизатора и соответствует реальному расстоянию до сети назначения, однако для особо перегруженных маршрутов маршрутизатор может быть вручную настроен так, чтобы увеличивать метрику более чем на 1, искусственно делая маршрут более длинным. В результате пакеты, если это возможно, будут направляться по другому, более короткому маршруту, и только пакеты для которых этот маршрут является единственным (или короче всех остальных) будут направлены на этот маршрутизатор.

4. Если в процессе доставки пакета возникнет ошибка, то будет получено сообщение по протоколу ICMP, указывающего причину ошибки. По протоколу ICMP может быть передана управляющая информация, позволяющая изменить маршрут доставки на более оптимальный или вообще поменять его, если какой-то шлюз временно не работает. Протокол ICMP также позволяет посылать короткие служебные пакеты (ping), которые позволяют протестировать работоспособность сети. Если с компьютера А будет послан ping компьютеру B, то операционная система компьютера B также ответит коротким пакетом по протоколу ICMP. После получения этого пакета компьютер А во-первых знает, что компьютер B доступен, а во вторых знает за какое время пакет дошел до компьютера B и вернулся обратно. После отправки нескольких ping-ов собирается статистика: минимальное, максимальное и среднее время приема-передачи пакетов, процент утерянных пакетов.

 

Протоколы транспортного уровня в стеке TCP/IP представлены двумя протоколами: TCP и UDP. Протокол TCP позволяет устанавливать виртуальный канал передачи данных между компьютерами. Канал устанавливается следующим образом:

1. Компьютер А посылает компьютеру B пакет, с установленным флагом SYN (синхронизация) и случайным числом (а) => SYN (a).

2. Компьютер B отвечает пакетом, с установленными флагами ACK (подтверждение), с параметром (а+1), и установленным флагом SYN и своим случайным числом (b). <= ACK(a+1), SYN (b)

3. Компьютер A завершает "рукопожатие" пакетом, с флагами ACK(a+1), ACK (b+1).

=> ACK (a+1), ACK (b+1)

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

При рассмотрении протоколов транспортного уровня необходимо остановиться на понятии "порт" и "сокет". Порт в протоколах транспортного уровня – это не физически существующий порт ввода-вывода (как, например, последовательный порт COM1), а "виртуальный" порт, который программно изолирует данные передаваемые по одному порту, от данных передаваемых по другому порту. Порты нумеруются от 0 до 65535. Существуют общеизвестные порты (well known ports), каждый из которых традиционно связан с тем или иным видом сетевого приложения. Например, стандартным портом для Web-сервера является порт 80. Большинство общеизвестных портов имеют номера меньше 1024. Это связано с тем, что в ОС Unix порты с номерами меньше 1024 доступны только приложениям с привилегиями суперпользователя root (администратор), поэтому пользователь без этих привилегий не сможет запустить собственный Web-сервер, который подменит на 80 порту настоящий Web-сервер. Порты TCP и порты UDP не зависят друг от друга. Порт 80 TCP может быть занят одним сетевым приложением, а 80 порт UDP – другим приложением.

Сокет (socket) – это описатель сетевого соединения между двумя сетевыми приложениями, которое включает в себя:

- IP-адрес и номер порта локальной машины.

- IP-адрес и номер порта удаленной машины.

 

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

 



<== предыдущая лекция | следующая лекция ==>
Стек протоколов IPX/SPX | Протоколы прикладного уровня HTTP, FTP, SMTP, IMAP, POP3, TELNET.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.