Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СиСПК (ВАСИН)-лекции.doc
Скачиваний:
912
Добавлен:
10.06.2015
Размер:
21.43 Mб
Скачать

2.2. Транспортный уровень моделей osi, tcp/ip

Транспортный уровень моделей OSI и TCP/IP одинаков как по функциям, так и по названию (см. рис.1.6). TCP/IP – это комбинация двух протоколов. Протокол IP функционирует на сетевом Уровне 3 OSI модели, он является протоколом без предварительного соединения типа connectionless, который обеспечивает наилучшую доставку через сеть (best-effort delivery), но без гарантий, т.е. доставка не надежная. Протокол TCP работает на транспортном Уровне 4 OSI модели и является протоколом типа connection-oriented, т.е. ориентированным на предварительное соединение, которое обеспечивает контроль потока и надежность доставки. Когда эти протоколы объединены, они обеспечивают более широкий объем услуг. Объединение протоколов IP и TCP является базовым для всего набора протоколов TCP/IP. Всемирная сеть Интернет строится на основе набора протоколов TCP/IP.

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

Транспортный уровень устанавливает логическое соединение между двумя конечными точками сети. Протоколы транспортного уровня сегментируют данные, посланные приложениями верхнего уровня на передающей стороне, и повторно собирают данные на приемной стороне. Этот поток данных транспортного уровня обеспечивается от начала до конца (end-to-end) транспортными услугами.

Таким образом, главными функциями транспортного уровня являются:

  1. Сегментация данных и повторная сборка целого сообщения из полученных сегментов. Большинство сетей имеет ограничение на объем передаваемых сообщений. Поэтому Транспортный уровень делит большое сообщение прикладного уровня на сегменты данных, размер которых соответствует требованиям PDU более низких уровней сетевой модели. Кроме того, если в процессе контроля обнаружится, что принятое сообщение содержит ошибку, то возникает необходимость повторной передачи всего большого сообщения. При обнаружении ошибки в одном из принятых сегментов только данный сегмент и будет передан повторно. Сегменты могут быть направлены к одному или различным узлам назначения. Многие приложения могут разделять одно транспортное соединение. Многочисленные одновременные обмены данными верхнего уровня могут быть мультиплексированы поверх единственного соединения.

  2. Обеспечение многочисленных одновременно протекающих обменов данными верхнего уровня. Эти данные могут быть мультиплексированы поверх единственного соединения (Conversation Multiplexing). На каждом конечном узле сети может быть запущено много разных приложений. Чтобы передавать потоки данных соответствующим приложениям, протокол транспортного уровня должен идентифицировать каждое приложение. В протоколе TCP в качестве идентификатора используют номер порта. Номер порта в заголовке сегмента транспортного уровня указывает, какое приложение создало передаваемые данные и должно обрабатывать полученные данные на приемной стороне. При множественных одновременно протекающих обменах данными каждому из приложений или услуг назначается свой адрес (номер порта) так, чтобы транспортный уровень мог определить, с каким конкретно приложением или службой передаваемые данные должны взаимодействовать.

Наиболее известными протоколами транспортного уровня являются протокол контроля передачи (Transmission Control ProtocolTCP) и протокол дейтаграмм пользователя (User Datagram ProtocolUDP). Протокол контроля передачи (TCP) является ориентированным на предварительное соединение типа connection-oriented. Он обеспечивает контроль потока и надежность, взаимодействует с протоколами прикладного уровня: HTTP, SMTP, FTP и другими. UDP является протоколом дейтаграммного типа connectionless, взаимодействует с такими протоколами прикладного уровня, как система доменных имен – DNS, передачи потока видеоданных – Video Steaming, голос поверх IP – Voice over IP и рядом других. Следует отметить, что система DNS взаимодействует как с TCP, так и с UDP.

Протокол транспортного уровня TCP имеет две первичных обязанности:

  1. Обеспечение контроля потока.

  2. Обеспечение надежности.

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

Контроль потока необходим, чтобы гарантировать, что источник, передавая данные с некоторой скоростью, не переполняет буферные устройства узла назначения. Если узел назначения не может обрабатывать данные в темпе их поступления, то может произойти потеря данных. Чтобы обеспечивать контроль потока, TCP позволяет узлам источника и назначения связываться и устанавливать скорость передачи данных, которая приемлема обоим. Управление скоростью передачи данных обеспечивается изменением размера скользящего окна (Window), которое указывает, сколько байт данных может быть передано за один прием. После получения порции данных узел назначения посылает источнику подтверждение (acknowledgment). При переполнении буферных устройств узел назначения посылает источнику требование уменьшения размера окна.

Надежность обеспечивается целым рядом мер:

- прослеживание (tracking) переданных данных,

- подтверждение (acknowledging) полученных данных,

- повторная передача любых не подтвержденных (unacknowledged) данных.

Контроль надежности реализуетcя путем задания ряда параметров в заголовке сегмента TCP (рис.2.6), который содержит 20 байт.

Поля TCP сегмента определяют следующее:

- Source Port – номер порта, который посылает данные,

- Destination Port – номер порта, который принимает данные,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

Source Port

Destination Port

Sequence number

Acknowledgement Number

H L

Reserved

Code Bits

Window

Checksum

Urgent

Options

Data

Рис.2.6. Формат сегмента TCP

- Sequence Number – номер последовательности, используемый, чтобы гарантировать объединение (reassemble) частей (порций) данных в корректном порядке в устройстве назначения,

- Acknowledgment Number – 32 бита последовательного номера подтверждения принятых данных, следующая ожидаемая порция TCP,

- HL – число 32-разрядных слов в заголовке,

- Reserved – разряды поля, установленные в ноль,

- Code bits – 6 разрядов, выполняющих функции контроля, таких как установка и завершение сеанса,

- Window – число октетов в окне,

- Checksum – вычисленная контрольная сумма заголовка и поля данных,

- Urgent pointer – индицирует конец срочных данных,

- Option – Каждая текущая опция определяет максимальный размер TCP сегмента.

  • Data – Данные протокола верхнего уровня.

Поскольку UDP является протоколом дейтаграммного типа, то в заголовке его сегмента (рис.2.7) отсутствуют такие параметры, как Acknowledgement Number, Window.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

Source Port

Destination Port

Length

Checksum

Data

Рис.2.7. Формат сегмента UDP

Поля UDP сегмента определяют следующее:

  • Source port – номер порта, который посылает данные,

  • Destination port – номер порта, который принимает данные,

  • Length – число байт в заголовке и данных,

  • Checksum –контрольная сумма заголовка и поля данных,

  • Data – данные протокола верхнего уровня.

Поскольку протокол UDP не обладает механизмами надежности, то она обеспечивается протоколами прикладного уровня. Однако небольшой размер заголовка UDP и отсутствие дополнительной обработки номера последовательности, окна и подтверждения получения данных повышают скорость передачи данных по сравнению с ТСР.

Комбинация номера порта и IP-адреса образует комплексный адрес, так называемый сокет (socket), который определяет не только уникальное устройство, но и программное обеспечение, используемое для создания и обработки сообщения.

Номера портов делятся на несколько типов:

  • известные номера (Well Known Ports), диапазон адресов которых находится в пределах от 0 до 1023;

  • зарегистрированные порты с номерами от 1024 до 49151;

  • динамические частные порты с номерами от 49151 до 65535, которые обычно динамически присваиваются пользователям.

Номера известных портов заданы организацией Internet Assigned Numbers Authority (IANA). Номера известных портов назначаются службам сервиса. Номера некоторых известных портов протокола TCP приведены в табл.2.1

Таблица 2.1

Номера известных портов

Протоколы

FTP

Telnet

SMTP

HTTP

HTTPS

POP3

Порты

20, 21

23

25

80

443

110

В приложении протокола передачи файлов FTP используются два стандартных номера порта 20 и 21. Порт 20 используется для передачи данных, а порт 21 – для управления.

Среди известных номеров протокола UDP наиболее распространенные: протокол TFTP – 69, RIP – 520.

Протоколы DNS с номером порта 53 и SNMP – 161 используются как протоколом TCP, так и UDP.

Зарегистрированные порты назначаются как пользователям, так и приложениям. Когда зарегистрированные порты не используются для ресурсов сервера, они могут быть использованы динамически клиентом как номер порта источника. Из зарегистрированных портов можно отметить альтернативные порты HTTP – 8008 и 8080.

Заголовок TCP сегмента (рис.2.6) содержит последовательный номер (Sequence Number), используемый, чтобы гарантировать объединение частей (порций) данных в том порядке, в котором они были переданы. Протокол UDP не имеет такого механизма, поэтому возможны ошибки при объединении частей (порций) данных при передаче по сложной сети. Однако скорость передачи данных с использованием протокола UDP выше, чем TCP.

Если необходимо узнать, какие TCP соединения активны на сетевом узле, то можно использовать команду netstat. В распечатке команды (рис.2.8) указан протокол (TCP), локальный адрес с номером порта, внешний адрес (или имя) с номером порта и состояние связи.

Рис.2.8. Результат выполнения команды netstat

Номер порта локального адреса является динамически назначаемым зарегистрированным портом источника с номером больше 1023. Для адреса www.cisco.com внешний порт задан символически: http. Состояние связи может быть с установленным соединением (ESTABLISHED) или с ожиданием окончания соединения (TIME_WAIT), когда был послан запрос окончания соединения (FIN).