Как запрограммировать эталонную модель OSI на языке - PullRequest
2 голосов
/ 16 января 2011

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

Есть ли способ, которым я могу создать программу в Java или C или C ++, и я вручную выполняю каждый шаг, который делается на слоях, так что я действительно знаю, как это на самом деле работает

Edit: хорошо, сначала рассмотрим на местном уровне Например, у меня есть слово данных «привет», и я хочу отправить его другой работающей программе, имитирующей модель OSI. Это слово будет проходить через все слои, и они будут добавлять свои заголовки и прочее, как OSI, и тогда другие работающие программы получат его.

В принципе, протокол TCP / ip должен быть запрограммирован, я думаю, но, может быть, опытный человек может сделать его лучше

тогда я могу вручную изменить биты, чтобы проверить, работает ли контроль ошибок нормально или нет

1 Ответ

2 голосов
/ 16 января 2011

Поскольку модель OSI имеет 7 уровней:

  1. Физический
  2. Ссылка
  3. Сеть
  4. Транспорт
  5. Сеанс
  6. Презентация
  7. Приложение

и вы хотите эмулировать его в среде Java (или, возможно, C), тогда вам понадобится сделать небольшое количествоработы.

В целях моделирования вы, вероятно, рассматривали бы обычный уровень сокетов TCP / IP как физический уровень - в процессе моделирования он обеспечивает связь между конечными точками.Это удивительно надежный физический уровень, но у вас не может быть всего.

Затем вы можете смоделировать каждый из последовательных уровней - Link, Network, Transport, Session, Presentation, Application - уровни с соответствующим кодом, который помещаетданные в пакеты или разбивает пакеты, добавляет заголовки и проверяет суммы и так далее.Каждый уровень, кроме приложения, имеет два интерфейса: нисходящий интерфейс (до уровня с меньшим номером) и восходящий интерфейс (до уровня с большим номером).Вам нужно будет выбрать соответствующие операции для каждого слоя.Минимальный набор, вероятно, будет таким: открыть, закрыть, прочитать, написать.

Я бы начал просто - с нижней или верхней части (может работать любое направление).Так как в любом случае вам понадобится приложение (тестируйте код, если ничего больше), вы можете начать с него.Вы будете последовательно улучшать код, добавляя дополнительные слои, гарантируя, что предыдущая функциональность продолжает работать.Вам нужно будет разобраться, как прикладной уровень передает на уровень канала передачи данных необходимую информацию, чтобы можно было делать правильные вызовы сокетов и т. Д.

Получайте удовольствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...