Опубликован: 11.08.2008 | Уровень: специалист | Доступ: платный
Лекция 10:

Транспортный уровень. Протокол управления передачей (Transmission Control Protocol — TCP)

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Аннотация: В этой лекции изучается надежный, ориентированный на соединение транспортный протокол сетевого уровня TCP со свойствами, ориентированными на управление соединением и обеспечение надежности для обслуживания

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

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

TCP позволяет создать процесс, передающий информацию, доставлять данные как поток байт, создать процесс приема и получать данные как поток байтов. TCP создает среду, где кажется, что два процесса соединены воображаемой "трубой", которая переносит их данные по сети Интернет. Воображаемая среда изображена на Рис. 10.1 Передающий процесс вырабатывает поток байтов, а приемный процесс "поглощает" его.

Передача через TCP потока байтов

Рис. 10.1. Передача через TCP потока байтов

В связи с тем что процессы передачи и приема могут производить и потреблять данные на разных скоростях, TCP нуждается в буферной памяти для накопления. Имеются два буфера, передачи и приема, для каждого направления. (Заметим, что эти буферы также применяются в TCP-механизме управления потоком и контролем над ошибками.) Один из путей реализации буфера — использовать буферные регистры с обратной связью однобайтовыми сегментами, как это показано на Рис. 10.1. Для простоты мы указали два буфера с небольшим объемом байт. Обычно буферы содержат сотни или тысячи байт памяти, в зависимости от реализации.

Рис. 10.2 показывает движение данных в одном направлении. На передающей стороне буфер имеет три типа участков. Белая секция — пустой участок, который может заполняться с помощью процесса передачи (производитель). Серая область содержит байты, которые переданы, но на них еще не получено подтверждение. TCP сохраняет эти байты в буфере, пока не примет подтверждение. Закрашенный темносерым цветом участок содержит байты для передачи TCP. Однако, как мы увидим позднее в этой лекции, TCP может послать только часть этой закрашенной секции; это может произойти из-за замедления процесса приема или из-за перегрузки сети. Также заметим, что после того как байты серого участка подтверждены, участок восстанавливается и становится доступным для использования процессом передачи.

Передающий и принимающий буферы

Рис. 10.2. Передающий и принимающий буферы

Вот почему мы показываем буфер с обратной связью.

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

Сегменты

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

TCP сегменты

Рис. 10.3. TCP сегменты

Заметим, что сегменты могут отличаться размером. Реально сегменты переносят сотни, если не тысячи байт.

TCP предлагает полное дуплексное обслуживание, где данные могут двигаться в обоих направлениях одновременно. Каждый TCP поэтому имеет буфер приема и передачи и посылает сегменты в оба направления.

TCP, в отличие от UDP, — протокол, ориентированный на соединение. Когда процесс на стороне A посылает и принимает данные от другого процесса на стороне B, необходимо провести следующие действия:

  1. TCP на стороне A информирует TCP на стороне B и получает подтверждение от стороны B.
  2. TCP стороны A и TCP стороны B обмениваются данными в обоих направлениях.
  3. После того как у обоих процессов не остается больше данных для передачи и буферы пустые, оба TCP уничтожают буферы.

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

TCP — достоверный транспортный протокол. Он использует механизм подтверждения для проверки сохранности и нормальности прибывающих данных.

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова
Илья Сидоркин
Илья Сидоркин
Россия, Москва, МГТУ им. А.Н. Косыгина, 2008