Абстракция сетевых уровней для встроенного приложения - PullRequest
0 голосов
/ 11 марта 2012

Мне любопытно, есть ли примеры создания встроенного приложения, которое не нужно изменять, если меняются базовые сетевые уровни, например, CANOpen или Ethernet. Можно ли сделать что-то подобное?

Вероятно, слой между приложением и сетевым уровнем, который решает, в каком формате сообщение должно быть отправлено на основе размера или типа транзакции, например, подтверждения при получении для этого конкретного протокола (CANopen, Ethernet).

Любая ссылка на что-то похожее на это будет очень полезна.

Спасибо

1 Ответ

2 голосов
/ 13 марта 2012

Вы не сравниваете подобное с подобным;CANopen обращается к уровню 3 (Сеть) и выше на Модель OSI , тогда как Ethernet определяет только физический уровень и уровни канала передачи данных (уровни 1 и 2).Для сравнения сопоставимых данных вам нужно сравнить, скажем, CAN с Ethernet или CANopen с TCP / IP.

В принципе, на любом уровне, если вы реализуете общий API и семантику, вы можете заменить все базовыеслои с некоторыми другими технологиями.Однако модель OSI является концептуальной, и не все технологии обязательно проводят такие четкие различия между уровнями или используют одинаковые границы уровней или номенклатуру.Поэтому поиск подходящего уровня для абстракции, подходящей для ряда протоколов и технологий, может быть затруднен.

Более того, две технологии отвечают самым разным потребностям CAN - это технология полевой шины, предназначенная для связи датчика / реального времени.информация привода между «интеллектуальными» контроллерами, в то время как Ethernet - это высокопроизводительная компьютерная сетевая технология общего назначения.

Обычное решение для взаимодействия сетей состоит в использовании некоторой технологии мостового соединения или туннелирования (то есть преобразования между сетями,или транспортировка сообщений одного протокола, инкапсулированных в сообщения другого).Существует любое количество мостовых устройств CAN / Ethernet и даже несколько устройств CAN-over-Ethernet.

...