170
правок
Изменения
→5. Модель OSI. Канальный уровень (протоколы).
=== 4. Модель OSI. Канальный уровень (сервисы, подуровни). ===
=== 5. Модель OSI. Канальный уровень (протоколы). ===
Удобнее всего будет привести протоколы в виде псевдокода (хотя это валидный сишный код, кажется). От самого простого к более сложным.
TODO: хорошо бы эти картиночки заменить на код, но мне пока как-то не хочется этим заниматься.
==== Общие объявления ====
==== Неограниченный симлексный протокол ====
==== Симлексный протокол с ожиданием ====
==== Симплексный протокол для замушлённых каналов ====
==== Протоколы скользящего окна ====
==== Протоколы с возвратом на N ====
Предыдущие протоколоы плохи тем, что если у нас есть большая пропускная способность, небольшие кадры и большое время прохождения сигнала, то пропускная способность будет использоваться очень слабо, так как большую часть времени мы будем ждать подтверждение, прежде чем посылать очередной кадр. Поэтому будем посылать сразу много кадров не дожидаясь доставки/потери предыдущего.
Возврат на n подразумевает, что если бы повреждён какой-то кадр (не пришло подтверждение/не сошлась checksum), то все кадры с большими номерами игнорируются, подтверждения на них не посылаются. Отправитель должен будет перепослать испорчённый кадр и все за ним.
Альтернативный вариант (выборочный повтор) — буферизовать все кадры после ошибочного. В таком случае отправитель перепошлёт только испорченные кадры. Можно послать отрицательное подтверждение (NAK) для испорченного кадра, в этом случае отправитель сразу же перепошлёт повреждённый кадр.
TODO