Здравствуйте. У меня следующая ситуация. Прохожу курс по "сетевым технологиям" и хочу сделать попробовать сделать задание повышенной сложности. Конкретно условие задания выглядит так
| Цитата | Стек должен составлять 5 уровней - канальный, MAC подуровень, сетевой, транспортировки и приложений.
На канальном уровне должны быть о существенны следующие вопросы:
- Деление на кадры (применить вставки начала-финиша(bit-stuffing))
- Обнаружение ошибок (один из CRC методов)
- Должен быть описан протокол канального уровня (с sliding window алгоритмом)
На MAC подуровне должны быть о существенны следующие вопросы:
- Реализовать Ethernet стандарт, так как это описано в книге Тоненбауна "Компьютерные сети" (4.3.2, 4.3.3, 4.3.4)
На сетевом подуровне должны быть о существенны следующие вопросы:
- Реализован один из динамических алгоритмов маршрутизации (например: по вектору расстояния)
- Реализован алгоритм контроля переполнения.
- Реализовано фрагментирование.
- Как базовый протокол для сетевого уровня, предлагается использовать IPv4 множество.
На транспортном подуровне должны быть о существенны следующие вопросы:
- Описаны примитивы для простого транспортного сервиса.
- Определить способ адресации.
- Решена проблема с завязыванием и разрываем связи.
- Определенна политика передачи (sliding window)
- Контроль переполнения (threshold)
- Одновременно могут работать несколько процессов.
На прикладном уровне нужно реализовать некое общение (например электронной почты)
Общие требования к каждому уровню: Для каждого уровня нужно описать используемый протокол (правила общения, используемые алгоритмы, структура пакетов и т.д.) Каждый уровень проектируется с целью - сделать уровень находящийся выше независимым от уровня который лежит под.
В готовой версии проекта должно быть: Возможным следить все процессы, тоесть отравляемые и получаемые пакеты, их внутренняя структура, в протоколах использовамые переменные и т.п.
|
Буду рад если кто-то опытный поделиться знаниями с начинающим. Даст совет и подтолкнёт на правильный путь.
Хочу задать первый вопрос - кто-нибудь это мыслимо видит, как это можно осуществить? Каким языком лучше воспользоваться Java или-же всё-таки C++ лучше тут? Хочу задавать тут вопросы по мере продвижения к цели, надеюсь что никто не возражает. |