Редактирование: UNИX, осень 2008, 08 лекция (от 19 ноября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
* '''Диктофонная запись:'''
 
-
* [http://esyr.org/lections/audio/uneex_2008_winter/uneex_08_11_19.0.ogg диктофон в нагрудном кармане лектора]
 
-
* [http://esyr.org/lections/audio/uneex_2008_winter/uneex_08_11_19.1.ogg диктофон на кафедре]
 
- 
-
<gallery perrow="5">
 
-
Изображение:Uneex 081119 desk 1.jpg
 
-
Изображение:Uneex 081119 desk 2.jpg
 
-
Изображение:Uneex 081119 desk 3.jpg
 
-
Изображение:Uneex 081119 desk 4.jpg
 
-
Изображение:Uneex 081119 desk 5.jpg
 
-
</gallery>
 
- 
-
= Лекция =
 
-
== Оффтоп ==
 
Лектор делится открытием, не имеющим напрямую отношения к теме лекции.
Лектор делится открытием, не имеющим напрямую отношения к теме лекции.
Вышел новый дистрибутив AltLinux Desktop 4.1.
Вышел новый дистрибутив AltLinux Desktop 4.1.
Строка 18: Строка 4:
Полоски с градиентом можно генерировать автоматически с помощью программы (штук 50) и выбрать лучший.
Полоски с градиентом можно генерировать автоматически с помощью программы (штук 50) и выбрать лучший.
С помощью какой программы можно генерировать фон разных размеров?
С помощью какой программы можно генерировать фон разных размеров?
- 
ImageMagick растровый.
ImageMagick растровый.
Можно сгенерировать картинку и ресайзить.
Можно сгенерировать картинку и ресайзить.
Строка 24: Строка 9:
Было бы неплохо сделать в векторном режиме, а затем генерировать нужного размера.
Было бы неплохо сделать в векторном режиме, а затем генерировать нужного размера.
Выбираешь количество, тип градиента.
Выбираешь количество, тип градиента.
- 
Было предположение о GLE.
Было предположение о GLE.
GLE — язык написания простейших программ, рисующих картинки.
GLE — язык написания простейших программ, рисующих картинки.
Строка 43: Строка 27:
Закрываем тему.
Закрываем тему.
-
== Вступление ==
 
Открываем тему транспортного уровня стека протоколов TCP/IP.
Открываем тему транспортного уровня стека протоколов TCP/IP.
За последнее тысячелетие сведения сильно устарели.
За последнее тысячелетие сведения сильно устарели.
Если использовать литературу прошлого тысячелетия, можно знать не все.
Если использовать литературу прошлого тысячелетия, можно знать не все.
-
== Теория ==
+
Теория.
Что такое транспортный уровень?
Что такое транспортный уровень?
Такой уровень, когда мы хотим забыть о проблемах доставки.
Такой уровень, когда мы хотим забыть о проблемах доставки.
Строка 63: Строка 46:
На следующем уровне (прикладном) мы будем общаться либо с ненадежными данными, либо мы обеспечиваем надежность на транспортном уровне.
На следующем уровне (прикладном) мы будем общаться либо с ненадежными данными, либо мы обеспечиваем надежность на транспортном уровне.
Гарантируем, что данные не испортились и пришли все.
Гарантируем, что данные не испортились и пришли все.
- 
Другая задача состоит в том, чтобы работать с потоками данных, а не только с данными любого вида, которые отправляются и получаются.
Другая задача состоит в том, чтобы работать с потоками данных, а не только с данными любого вида, которые отправляются и получаются.
Идея в том, что когда несколько сеансов передачи данных, с точки зрения IP это одни и те же пакеты, с одним отправителем и получателем.
Идея в том, что когда несколько сеансов передачи данных, с точки зрения IP это одни и те же пакеты, с одним отправителем и получателем.
Строка 81: Строка 63:
Важным фактором является то, что начиная с интерфейсного уровня сети — сети без гарантированного времени передачи данных.
Важным фактором является то, что начиная с интерфейсного уровня сети — сети без гарантированного времени передачи данных.
Один из способов реализации такой: мы для начала потребуем от нашего получателя, чтобы он нам ответил.
Один из способов реализации такой: мы для начала потребуем от нашего получателя, чтобы он нам ответил.
-
Мы посылаем пакет на деревню дедушке, а деревни нет (или деревня есть, а дедушки нет).
+
Мы посылаем пакет на деревню дедушке, а деревни нет, или деревня есть, а дедушки нет.
Когда посылаем пакет, нужно убедиться, что получатель существует.
Когда посылаем пакет, нужно убедиться, что получатель существует.
-
 
+
Установка соединения.
-
=== Установка соединения ===
+
Передача с установлением соединения и без него.
Передача с установлением соединения и без него.
Первое в реальном времени, второе — нет.
Первое в реальном времени, второе — нет.
Строка 93: Строка 74:
Если же ответил, скорее всего, попадет.
Если же ответил, скорее всего, попадет.
-
=== Подтверждение ===
 
В ответе можно передавать дополнительные вещи.
В ответе можно передавать дополнительные вещи.
Уже возникает некая двунаправленность.
Уже возникает некая двунаправленность.
Строка 106: Строка 86:
Внутри каждого пакета будет контрольная сумма, ее будут проверять.
Внутри каждого пакета будет контрольная сумма, ее будут проверять.
-
=== Упорядочивание ===
+
Упорядочивание.
Мы должны перенумеровать все пакеты данных.
Мы должны перенумеровать все пакеты данных.
Отправитель нумерует, а получатель должен уметь отслеживать порядок, например, он получил не второй, а третий пакет.
Отправитель нумерует, а получатель должен уметь отслеживать порядок, например, он получил не второй, а третий пакет.
Должен сообщить отправителю: «Чувак, гони второй пакет».
Должен сообщить отправителю: «Чувак, гони второй пакет».
-
=== Целостность ===
 
Для отслеживания целостности нужно говорить, не повредился ли пакет.
Для отслеживания целостности нужно говорить, не повредился ли пакет.
Для решения этих задач сущестуют некоторые методы.
Для решения этих задач сущестуют некоторые методы.
Строка 118: Строка 97:
Контрольная сумма (избыточная информация).
Контрольная сумма (избыточная информация).
-
=== Балансировка ===
 
Отслеживание состояния канала (балансировка канала).
Отслеживание состояния канала (балансировка канала).
Балансировка канала — алгоритм скользящего окна, медленный старт.
Балансировка канала — алгоритм скользящего окна, медленный старт.
Строка 134: Строка 112:
Балансировка нагрузки даже если мы хотим делать широковещание — в общем-то, вещь полезная.
Балансировка нагрузки даже если мы хотим делать широковещание — в общем-то, вещь полезная.
-
== TCP и UDP ==
+
В TCP все 5 пунктов (соединение, подтверждение, упорядочивание, контрольная сумма, балансировка) реализованы, в UDP — только контрольная сумма, да и то можно отключать.
-
=== Сравнение ===
+
-
В TCP все 5 пунктов реализованы:
+
-
* соединение
+
-
* подтверждение
+
-
* упорядочивание
+
-
* контрольная сумма
+
-
* балансировка
+
-
 
+
-
В UDP — только контрольная сумма, да и то можно отключать.
+
-
 
+
Что касается UDP, все достаточно понятно.
Что касается UDP, все достаточно понятно.
Единственное ограничение — чтобы пакет не рассыпался по дороге.
Единственное ограничение — чтобы пакет не рассыпался по дороге.
Получит или не получит адресат сообщение — неизвестно.
Получит или не получит адресат сообщение — неизвестно.
- 
-
=== Идентификация потоков ===
 
Прежде чем перейти к рассмотрению TCP, решим частную задачу.
Прежде чем перейти к рассмотрению TCP, решим частную задачу.
На уровне разделения потоков потоки должны иметь разные идентификаторы.
На уровне разделения потоков потоки должны иметь разные идентификаторы.
Строка 171: Строка 137:
В течение всего сеанса четверка идентифицирует поток данных.
В течение всего сеанса четверка идентифицирует поток данных.
-
=== Упорядочивание сообщений ===
 
Наша задача не только различать потоки, но и упорядочивать.
Наша задача не только различать потоки, но и упорядочивать.
На уровне TCP есть SeqN1 (Sequence Number), SeqN2.
На уровне TCP есть SeqN1 (Sequence Number), SeqN2.
Строка 196: Строка 161:
Двустороннесть позволяет подтверждать.
Двустороннесть позволяет подтверждать.
Возможны различные ошибки, требования повторной передачи.
Возможны различные ошибки, требования повторной передачи.
- 
-
=== Балансировка нагрузки. Окна TCP ===
 
В алгоритме не предусмотрено ничего для балансировки канала.
В алгоритме не предусмотрено ничего для балансировки канала.
А она была бы не плоха, потому что пакет долго ходит по Интернету, размер одновременно передаваемого куска был как можно больше.
А она была бы не плоха, потому что пакет долго ходит по Интернету, размер одновременно передаваемого куска был как можно больше.
Строка 265: Строка 228:
Это все либо не реализовано, либо бессмысленно в TCP.
Это все либо не реализовано, либо бессмысленно в TCP.
-
=== Что лучше? ===
 
Немного разговора о том, когда применять TCP, когда UDP.
Немного разговора о том, когда применять TCP, когда UDP.
TCP — синхронный протокол.
TCP — синхронный протокол.
Строка 296: Строка 258:
Обеспечить если не гарантированное, то ожидаемое время доставки пакета.
Обеспечить если не гарантированное, то ожидаемое время доставки пакета.
-
== Другие протоколы ==
 
Есть 4 протокола, найденные автором в Википедии.
Есть 4 протокола, найденные автором в Википедии.
Реализация всего этого имеется, использоваться начнется, когда у всех будет IPv6.
Реализация всего этого имеется, использоваться начнется, когда у всех будет IPv6.
Нормальный QoS можно сделать только там, в IPv4 нельзя, там только один байт.
Нормальный QoS можно сделать только там, в IPv4 нельзя, там только один байт.
-
=== RSVP (Resource Reservation Protocol) ===
+
RSVP (Resource Reservation Protocol).
Протокол управляющий, предназначенный, чтобы разгрести место для последующей передачи данных в высоким QoS.
Протокол управляющий, предназначенный, чтобы разгрести место для последующей передачи данных в высоким QoS.
Для передачи видео должно быть место в памяти для этих пакетов.
Для передачи видео должно быть место в памяти для этих пакетов.
Строка 310: Строка 271:
Если наше устройство поддерживает, можно надеяться, что проблемы возникнут только при сбоях аппаратуры, а ресурсы зарезервированы (или маршрутизатор скажет, что ресурсов не хватает).
Если наше устройство поддерживает, можно надеяться, что проблемы возникнут только при сбоях аппаратуры, а ресурсы зарезервированы (или маршрутизатор скажет, что ресурсов не хватает).
-
=== ECN ===
+
Протокол ECN.
Как TCP справляется с ситуацией, когда отправитель отправляет слишком много?
Как TCP справляется с ситуацией, когда отправитель отправляет слишком много?
Просто выбрасывает.
Просто выбрасывает.
Строка 318: Строка 279:
Принимая во внимание особенности протокола ECN, можно разработать еще пару протоколов, которые могут как-то взаимодействовать.
Принимая во внимание особенности протокола ECN, можно разработать еще пару протоколов, которые могут как-то взаимодействовать.
-
=== DCCP (Datagram Conversion Control Protocol) ===
+
Есть протокол DCCP (Datagram Conversion Control Protocol).
Происходит управление (контроль за переполнением потока датаграмм).
Происходит управление (контроль за переполнением потока датаграмм).
Что-то более хитрое, чем UDP.
Что-то более хитрое, чем UDP.
Строка 327: Строка 288:
Контроль за переполнением.
Контроль за переполнением.
-
=== SCTP ===
+
Более развесистый протокол — SCTP.
-
Более развесистый протокол.
+
Не гибрид TCP и UDP.
Не гибрид TCP и UDP.
Работает с потоком байт.
Работает с потоком байт.
Строка 340: Строка 300:
Внутри одного соединения может быть несколько потоков данных (внутри одного потока).
Внутри одного соединения может быть несколько потоков данных (внутри одного потока).
-
=== Заключение ===
 
Все это было подготовлено для IPv6.
Все это было подготовлено для IPv6.
Эта штука более гибкая.
Эта штука более гибкая.
Строка 347: Строка 306:
Мы можем переходить к прикладному уровню.
Мы можем переходить к прикладному уровню.
- 
- 
-
= Конспект eSyr =
 
-
<div style="font-size:50%">
 
-
Транспортный уровень
 
- 
-
В этом тысяч. сведения, отн. к прошлому тысяч., сильно устарели.
 
- 
-
Начнём с теории. Что такое транс. уровень? Это такое место в TCP/IP, где мы хотим забыть о проблемах собст. доставки, (ибо ниже лежит IP, где реш. задачи идент. абонентов и дост. пакетов. Первая задача — адресация, вторая — маршрутизация. Марш. бывает две: по маскам, и глобальная) и хотим разг. о потоках данных. С этой т. з. транс. протокол ... речь идёт о потоках данных.
 
- 
-
Задача транс. уровня. Как уже было сказано, мы зотим перейти на такой ур. абс., когда мы работаем с потоками данных. Во-первых, обесп. надёжность и целостность. Пакеты могут теряться, множиться, менять порядок, и мы хотим про это вообще не знать. На след. уровне, прикладном, либо мы общаемся с данными как с ненадёжными, либо мы должны обесп., что отпр. в дырку шлёт, получатель получает, и получает столько же и такие же, как и отпр.
 
- 
-
Вторая задача трансп. уровня: работать именно с потоками данных, а не с данными любого вида, которые отпр. и принимаются. Пример с секундными стрелками и повидлом. Идея том, что когда идёт неск. одинаковых сеансов между двумя отчками, это один. сеансы. С точки зрения трансп. уровня это должны быть разные потоки данных. На самом деле, в эту же кат. входит не только необх. разл. эти потоки, но и упр. качеством этого потока: если с одной тсороны очень высокоскоростной компьютер со скоростным аплинком, а с другой тсороны — компьютер с медленным. И неплохо было бы орг. канал так, чтобы отпр. знал, сколько он должен получателю скармливать. Кроме того, при битом линке большие пакеты плохо передаются.
 
- 
-
То, что пойдёт дальше — вариант реш. этих задач. В других сетях может быть другое решение. Например, в TCP/IP считается, что сеть без гарант. времени перед. данных.
 
- 
-
Один из способов обесп. этого безобразия такой: мы потр. от нашего полусателя, чтобы он вообще нам ответил. Мы посылаем пакет на деревню дедушке, а выясняется, что ни деревни нет, ни дедушки. И надо эту задачу решить: если мы посылаем данные, то их должны принимать. То есть перед началом передачи орг. соединение. Перед передачей данных перед. удост., что есть получатель. Это гарантирует, что то, что мы передаём, куда-то может попасть. Во-первых, если соед. не уст., то с больщой вер. передавать данные бесполезно. Кроме того, при получ. получается ответ. То есть, канал двунапр. А раз он двунапр., то мы можем проэксп. это и затребовать подтверждение — если мы посылаем пакет, то потребуем подтв. получения.
 
- 
-
Ещё одно свойство — упорядочивание. Если говорим о потоке данных, то должны нумеровать все потоки данных, и отпр. их нумерует, а получ. отслеж. их порядок. Для собл. целостности потока необх. учитвывать также упорядоч. пакетов.
 
- 
-
Для обесп. целостности исп. контрольная сумма.
 
- 
-
Для упр. потоками исп. балансировка нагрузки. Отсюда скольз. окно и быстрый старт.
 
- 
-
Мы выпис. нек-рые инстр., которые эти задачи решают. Посмотрим, какие из инстр. пригодны не всегда?
 
-
* Вычисл. контр. суммы — вещь никогда не вредная
 
-
* Подтв. неприменимы в случае широковещания. То же и про соеднения.
 
-
* Если не треб. упорядоч. все данные от начала до конца (поток нарезан на незав. кусочки), то и упорядоч. тоже, возм., не нужно
 
-
* Балансировка, с одной стороны, отъедает ширину канала, с другой стороны, без ней грустно
 
- 
-
Исторически было две реализ., UDP и TCP. В TCP все свойства, в UDP только Контр. сумма, и то не всегда.
 
- 
-
UDP, User Datagramm Protocol. Каждый udp-пакет — сообщ. самодостаточное. При этом получит оно или нет, неизвестно.
 
- 
-
Прежде, чем перейти к рассм. TCP, решим одну частную задачу, без которой тяжело орг. какой-бы то ни было транспорт.
 
- 
-
У нас есть задача разд. потоков. Для этого src/dst IP не хватает. Поэтому помимо них должно быть магическое "идент. потока". По ист. причинам таких идент. три: ... . В UDP таких идент. два, оно наз. порт. Порт воспр. некую апп. абстракцию. При передаче указ. не только IP, но и порт как отпр., так и получателя. Эта чествёрка идентифиц. поток данных, который в случае UDP явл. одна датаграмма. При этом порт. отпр. избыточен.
 
- 
-
В случае TCP оба порта необх. уже на этапе соединения. По этой причине в TCP обяз. должна сущ. эта четвёрка, и она идент. поток одонзнач. Кроме того, потоки надо упорядочивать. Номер в посл. отвечает за целостность потока. Он одновр. и номер, и размер. Алг. очень простой: при попытке соед. source отправляет syn-запрос и геенр. случайный seqn. Второй генерирует ack и генерирует свой seqn, потом первый посылает syn ack и к seqn1 прибавялет размер сообщения.
 
- 
-
... (хендшейк) ...
 
- 
-
Что касается самих подтв. Подтв. могут быть не только отн. того, что данные пришли норм., но и отн. таймаута и посврежд. Тогда нужно затр. повторную передачу. Что тут не нравится: тут не предусм. ровно ничего для балансир. канала. Она актуальна, когда пакеты ходят долго и размер передавемого куска был как можно больше. Как можно больше, пока оно не начяинает перегружать получателя и пока оно не начнёт портится. Нужно изобр. какой-то механизм, чтобы чем кач. канал, тем асинхр. может быть эта передача. К этому и перейдём. Это алг. скольз. окна. Он, кстати, описан отдельно и реализ. в нек. других протоколах.
 
- 
-
Для начала посм., что такое медл. старт. Примем на веру след. утв: в TCP есть возм. не дожид. подтв. на один конкр. пакет и отпр. их сразу пачками. То,сколько их мы можем отпр., зависит от размера окна. Размер окна передаётся внутри подтв. и озн. след.: изн. размер. окна, условно, равен одному пакету. Получ. говорит, могу 100, отпр. говорит, 2, и так, пока не упрётся или пока е возн. ошибки. Опред. размера окна, который мы модем принять — дело стека TCP/IP. Отпр. каждый раз должен проверять, не забил ли он окно получ, это легко, так как у него есть инф. о размере окна получ. и о том, какие пакеты он получил.
 
- 
-
Тут речь о медл. старте, но тут уже есть слова о том что окно движ.
 
- 
-
В чём идея скольз. окна? Есть буфер на n пакетов. Пришёл первый пакет. Буфер сдвигается. Допустим, пришёл не первый пакет, а, допустим, второй. Окно никуда не сдвиг. Поск. первый не пришёл, отпр. волшебный ack, где говорится, что пакет принят, а первого нет. Отпр. ловит подтв. Ели он видит, что первый принят, то он понимает, что у него окно отъехало и тожк сдвигает его.
 
- 
-
Но подтв. тоже могут пропадать. Если потерялось подтвр. второго пакета, а про третьего пришлоо норм. подтв., то считаем, что второй пакет получен. Если бы 2 не был получен, то у 3, 4 подтв. были бы другого вида.
 
- 
-
Здесь лектор замолк., поск. идея понятна. Здесь лектор уже ссылается на статью в википедии про TCP.
 
- 
-
Какие есть недост. у скольз. окна?
 
- 
-
Когнда можно исп. TCP, когда UDP?
 
- 
-
Даже не см. на скольз. окно, то большую роль, играет скорость передачи, и в зав. от того, польз. TCP или UDP, у нас могут быть разные выцигрыши и проигрыши на ст. системы.
 
- 
-
В принципе UDP быстрее, но пока не начнут появл. ошибки.
 
- 
-
Может показ., что синхр. скорость перед. медленнее, но это зав. от ...
 
- 
-
Именно поэтому обычный обмен данными обычно по UDP.
 
- 
-
Второй вариант это широковещание.
 
- 
-
== Изм. в TCP/IP в этом тысячелетии. ==
 
- 
-
Было принято ещё неск. трансп. протоколов.
 
- 
-
Главная проблема в след.: во многих ситуациях, напр., broadcast|multicast, тем не менее, было ьбы непл. восп. нек. св-вами, которых нет в udp. Например, св-во упорядочивания. И своёство баланс. Баланс. становится важным в посл. время, поск. появилось много разных потоковых сервисов.
 
- 
-
Что имеется из принятого в RFC:
 
- 
-
Реализ. имеется, исп. начнётся, когда все будут исп. ipv6, ибо это и разраб. вокруг ipv6. В первую очередь, потому что там можно орг. нормальный QoS.
 
- 
-
Для начала, протокол упр. уровня. Resource Reservation Protocol (RSVP). Предн. для того, чтобы разгр. место для передаи с высоким QoS. Напр., если мы передаём видео, то должно быть в маррутизаторах место под эти пакеты. Это прот. упр., но трансп. уровня. RFC 2205. QoS, трали-вали. В чём идея: если устр. поддерживает, мы можем не то, что забывать о том, что интернет без гарант. времени доставки, но проблемы возн. по вине аппаратуры.
 
- 
-
Ещё одна проблема, которая всегда возн. при преедаче данных — проблема балансировки, невозн. переполнений и затыков. Для этого есть протокол ECN (Explicit Conguestion Notofication). Допустим, идёт чуть ли не UDP. Как ведёт себя TCP, если получ. не может принять данные? Он их просто выбрасывает. И пока не докатится окошко, отпр. будет их фигачить. Проблема в том, что мы пытаемся предотв. ситуацию появл. слишком большого кол. пакетов путём увел. кол. пакетов. Поэтому, согл. протоколу ECN, мы можемп прямо внутри соед. упр. скоростью пердачи данных.
 
- 
-
Принимая во внимание ECN, можно разраб. ещё пару протоколов, можно разраб. ещё пару протоколов, которые орг. массовую рассылку без собл. всех правил TCP. Напр., DCCP. Отпр. ведётся по правилам UDP, но ведётся контроль переполнения. В особ., если есть отд. реализ. способ сигн. о Cong... . Никакого упор. в случае DCCP нет. Есть понятие потока как такового, и для того, чтобы напр. этого потока рег., польз. ECN. То есть, это такой слегка сдвинутый в сторону TCP UDP.
 
- 
-
Ещё более разв. протокол, который объед. TCP и UDP, есть SCTP, Stream ... ... Protocol. TCP выстр. все байты в ряд. Довольно многие протоколы хотят, чтобы была правильная посл. сообщений. То есть, с одной стороны, должны следить за потоками данных, более того, можно пересылать неск. потоков в рамках одного соединения. При этом соверш. неважно, когда скач. картинки. Но порядок байтов в картинке важен. Эта штука более гибкая.
 
- 
-
Лектор хочет только добавить, что все эти штуки есть в RFC, реализ. в подавл. числе сетевых ядер, проблема в том, что не все железяки это умеют, а дост. встретиьт одну, чтобы всем стало нехорошо.
 
-
</div>
 
- 
-
{{UNИX, осень 2008}}
 
-
{{Lection-stub}}
 

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Разделы