Редактирование: UNИX, осень 2008, 08 лекция (от 19 ноября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 45 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 11: | Строка 11: | ||
</gallery> | </gallery> | ||
- | = Лекция = | ||
- | == Оффтоп == | ||
Лектор делится открытием, не имеющим напрямую отношения к теме лекции. | Лектор делится открытием, не имеющим напрямую отношения к теме лекции. | ||
Вышел новый дистрибутив AltLinux Desktop 4.1. | Вышел новый дистрибутив AltLinux Desktop 4.1. | ||
Строка 18: | Строка 16: | ||
Полоски с градиентом можно генерировать автоматически с помощью программы (штук 50) и выбрать лучший. | Полоски с градиентом можно генерировать автоматически с помощью программы (штук 50) и выбрать лучший. | ||
С помощью какой программы можно генерировать фон разных размеров? | С помощью какой программы можно генерировать фон разных размеров? | ||
- | |||
ImageMagick растровый. | ImageMagick растровый. | ||
Можно сгенерировать картинку и ресайзить. | Можно сгенерировать картинку и ресайзить. | ||
Строка 24: | Строка 21: | ||
Было бы неплохо сделать в векторном режиме, а затем генерировать нужного размера. | Было бы неплохо сделать в векторном режиме, а затем генерировать нужного размера. | ||
Выбираешь количество, тип градиента. | Выбираешь количество, тип градиента. | ||
- | |||
Было предположение о GLE. | Было предположение о GLE. | ||
GLE — язык написания простейших программ, рисующих картинки. | GLE — язык написания простейших программ, рисующих картинки. | ||
Строка 43: | Строка 39: | ||
Закрываем тему. | Закрываем тему. | ||
- | == Вступление == | ||
Открываем тему транспортного уровня стека протоколов TCP/IP. | Открываем тему транспортного уровня стека протоколов TCP/IP. | ||
За последнее тысячелетие сведения сильно устарели. | За последнее тысячелетие сведения сильно устарели. | ||
Если использовать литературу прошлого тысячелетия, можно знать не все. | Если использовать литературу прошлого тысячелетия, можно знать не все. | ||
- | + | Теория. | |
Что такое транспортный уровень? | Что такое транспортный уровень? | ||
Такой уровень, когда мы хотим забыть о проблемах доставки. | Такой уровень, когда мы хотим забыть о проблемах доставки. | ||
Строка 63: | Строка 58: | ||
На следующем уровне (прикладном) мы будем общаться либо с ненадежными данными, либо мы обеспечиваем надежность на транспортном уровне. | На следующем уровне (прикладном) мы будем общаться либо с ненадежными данными, либо мы обеспечиваем надежность на транспортном уровне. | ||
Гарантируем, что данные не испортились и пришли все. | Гарантируем, что данные не испортились и пришли все. | ||
- | |||
Другая задача состоит в том, чтобы работать с потоками данных, а не только с данными любого вида, которые отправляются и получаются. | Другая задача состоит в том, чтобы работать с потоками данных, а не только с данными любого вида, которые отправляются и получаются. | ||
Идея в том, что когда несколько сеансов передачи данных, с точки зрения IP это одни и те же пакеты, с одним отправителем и получателем. | Идея в том, что когда несколько сеансов передачи данных, с точки зрения IP это одни и те же пакеты, с одним отправителем и получателем. | ||
Строка 81: | Строка 75: | ||
Важным фактором является то, что начиная с интерфейсного уровня сети — сети без гарантированного времени передачи данных. | Важным фактором является то, что начиная с интерфейсного уровня сети — сети без гарантированного времени передачи данных. | ||
Один из способов реализации такой: мы для начала потребуем от нашего получателя, чтобы он нам ответил. | Один из способов реализации такой: мы для начала потребуем от нашего получателя, чтобы он нам ответил. | ||
- | Мы посылаем пакет на деревню дедушке, а деревни нет | + | Мы посылаем пакет на деревню дедушке, а деревни нет, или деревня есть, а дедушки нет. |
Когда посылаем пакет, нужно убедиться, что получатель существует. | Когда посылаем пакет, нужно убедиться, что получатель существует. | ||
- | + | Установка соединения. | |
- | + | ||
Передача с установлением соединения и без него. | Передача с установлением соединения и без него. | ||
Первое в реальном времени, второе — нет. | Первое в реальном времени, второе — нет. | ||
Строка 93: | Строка 86: | ||
Если же ответил, скорее всего, попадет. | Если же ответил, скорее всего, попадет. | ||
- | === Подтверждение === | ||
В ответе можно передавать дополнительные вещи. | В ответе можно передавать дополнительные вещи. | ||
Уже возникает некая двунаправленность. | Уже возникает некая двунаправленность. | ||
Строка 106: | Строка 98: | ||
Внутри каждого пакета будет контрольная сумма, ее будут проверять. | Внутри каждого пакета будет контрольная сумма, ее будут проверять. | ||
- | + | Упорядочивание. | |
Мы должны перенумеровать все пакеты данных. | Мы должны перенумеровать все пакеты данных. | ||
Отправитель нумерует, а получатель должен уметь отслеживать порядок, например, он получил не второй, а третий пакет. | Отправитель нумерует, а получатель должен уметь отслеживать порядок, например, он получил не второй, а третий пакет. | ||
Должен сообщить отправителю: «Чувак, гони второй пакет». | Должен сообщить отправителю: «Чувак, гони второй пакет». | ||
- | === Целостность === | ||
Для отслеживания целостности нужно говорить, не повредился ли пакет. | Для отслеживания целостности нужно говорить, не повредился ли пакет. | ||
Для решения этих задач сущестуют некоторые методы. | Для решения этих задач сущестуют некоторые методы. | ||
Строка 118: | Строка 109: | ||
Контрольная сумма (избыточная информация). | Контрольная сумма (избыточная информация). | ||
- | === Балансировка === | ||
Отслеживание состояния канала (балансировка канала). | Отслеживание состояния канала (балансировка канала). | ||
Балансировка канала — алгоритм скользящего окна, медленный старт. | Балансировка канала — алгоритм скользящего окна, медленный старт. | ||
Строка 134: | Строка 124: | ||
Балансировка нагрузки даже если мы хотим делать широковещание — в общем-то, вещь полезная. | Балансировка нагрузки даже если мы хотим делать широковещание — в общем-то, вещь полезная. | ||
- | + | В TCP все 5 пунктов (соединение, подтверждение, упорядочивание, контрольная сумма, балансировка) реализованы, в UDP — только контрольная сумма, да и то можно отключать. | |
- | + | ||
- | В TCP все 5 пунктов | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
Что касается UDP, все достаточно понятно. | Что касается UDP, все достаточно понятно. | ||
Единственное ограничение — чтобы пакет не рассыпался по дороге. | Единственное ограничение — чтобы пакет не рассыпался по дороге. | ||
Получит или не получит адресат сообщение — неизвестно. | Получит или не получит адресат сообщение — неизвестно. | ||
- | |||
- | === Идентификация потоков === | ||
Прежде чем перейти к рассмотрению TCP, решим частную задачу. | Прежде чем перейти к рассмотрению TCP, решим частную задачу. | ||
На уровне разделения потоков потоки должны иметь разные идентификаторы. | На уровне разделения потоков потоки должны иметь разные идентификаторы. | ||
Строка 171: | Строка 149: | ||
В течение всего сеанса четверка идентифицирует поток данных. | В течение всего сеанса четверка идентифицирует поток данных. | ||
- | === Упорядочивание сообщений === | ||
Наша задача не только различать потоки, но и упорядочивать. | Наша задача не только различать потоки, но и упорядочивать. | ||
На уровне TCP есть SeqN1 (Sequence Number), SeqN2. | На уровне TCP есть SeqN1 (Sequence Number), SeqN2. | ||
Строка 196: | Строка 173: | ||
Двустороннесть позволяет подтверждать. | Двустороннесть позволяет подтверждать. | ||
Возможны различные ошибки, требования повторной передачи. | Возможны различные ошибки, требования повторной передачи. | ||
- | |||
- | === Балансировка нагрузки. Окна TCP === | ||
В алгоритме не предусмотрено ничего для балансировки канала. | В алгоритме не предусмотрено ничего для балансировки канала. | ||
А она была бы не плоха, потому что пакет долго ходит по Интернету, размер одновременно передаваемого куска был как можно больше. | А она была бы не плоха, потому что пакет долго ходит по Интернету, размер одновременно передаваемого куска был как можно больше. | ||
Строка 265: | Строка 240: | ||
Это все либо не реализовано, либо бессмысленно в TCP. | Это все либо не реализовано, либо бессмысленно в TCP. | ||
- | === Что лучше? === | ||
Немного разговора о том, когда применять TCP, когда UDP. | Немного разговора о том, когда применять TCP, когда UDP. | ||
TCP — синхронный протокол. | TCP — синхронный протокол. | ||
Строка 296: | Строка 270: | ||
Обеспечить если не гарантированное, то ожидаемое время доставки пакета. | Обеспечить если не гарантированное, то ожидаемое время доставки пакета. | ||
- | == Другие протоколы == | ||
Есть 4 протокола, найденные автором в Википедии. | Есть 4 протокола, найденные автором в Википедии. | ||
Реализация всего этого имеется, использоваться начнется, когда у всех будет IPv6. | Реализация всего этого имеется, использоваться начнется, когда у всех будет IPv6. | ||
Нормальный QoS можно сделать только там, в IPv4 нельзя, там только один байт. | Нормальный QoS можно сделать только там, в IPv4 нельзя, там только один байт. | ||
- | + | RSVP (Resource Reservation Protocol). | |
Протокол управляющий, предназначенный, чтобы разгрести место для последующей передачи данных в высоким QoS. | Протокол управляющий, предназначенный, чтобы разгрести место для последующей передачи данных в высоким QoS. | ||
Для передачи видео должно быть место в памяти для этих пакетов. | Для передачи видео должно быть место в памяти для этих пакетов. | ||
Строка 310: | Строка 283: | ||
Если наше устройство поддерживает, можно надеяться, что проблемы возникнут только при сбоях аппаратуры, а ресурсы зарезервированы (или маршрутизатор скажет, что ресурсов не хватает). | Если наше устройство поддерживает, можно надеяться, что проблемы возникнут только при сбоях аппаратуры, а ресурсы зарезервированы (или маршрутизатор скажет, что ресурсов не хватает). | ||
- | + | Протокол ECN. | |
Как TCP справляется с ситуацией, когда отправитель отправляет слишком много? | Как TCP справляется с ситуацией, когда отправитель отправляет слишком много? | ||
Просто выбрасывает. | Просто выбрасывает. | ||
Строка 318: | Строка 291: | ||
Принимая во внимание особенности протокола ECN, можно разработать еще пару протоколов, которые могут как-то взаимодействовать. | Принимая во внимание особенности протокола ECN, можно разработать еще пару протоколов, которые могут как-то взаимодействовать. | ||
- | + | Есть протокол DCCP (Datagram Conversion Control Protocol). | |
Происходит управление (контроль за переполнением потока датаграмм). | Происходит управление (контроль за переполнением потока датаграмм). | ||
Что-то более хитрое, чем UDP. | Что-то более хитрое, чем UDP. | ||
Строка 327: | Строка 300: | ||
Контроль за переполнением. | Контроль за переполнением. | ||
- | + | Более развесистый протокол — SCTP. | |
- | Более развесистый протокол. | + | |
Не гибрид TCP и UDP. | Не гибрид TCP и UDP. | ||
Работает с потоком байт. | Работает с потоком байт. | ||
Строка 340: | Строка 312: | ||
Внутри одного соединения может быть несколько потоков данных (внутри одного потока). | Внутри одного соединения может быть несколько потоков данных (внутри одного потока). | ||
- | === Заключение === | ||
Все это было подготовлено для IPv6. | Все это было подготовлено для IPv6. | ||
Эта штука более гибкая. | Эта штука более гибкая. | ||
Строка 349: | Строка 320: | ||
- | + | Конспект eSyr: | |
<div style="font-size:50%"> | <div style="font-size:50%"> | ||
Транспортный уровень | Транспортный уровень |