Инкапсуляция пакетов в Java
Мне дали задание для моего класса передачи данных, где я должен инкапсулировать IP-пакет по UDP. Затем мне нужно инкапсулировать этот пакет, сделанный вручную, в реальный пакет UDP и отправить его по IP. Это даст следующий стек протоколов (синим цветом обозначены заголовки, которые я создам вручную):
Есть ли простой способ сделать это на Java? Я понимаю, что в C I можно использовать структуру, определенную для заголовков UDP и IP в библиотеках ядра Linux, вручную заполнить все поля и объединить информацию в пакет. Однако в Java у меня не будет доступа к файлам сетевых заголовков Linux. Я также пытаюсь сделать это без использования внешних API.
Для уточнения планирую разработать приложение Linux с использованием Eclipse.
1 ответ
На самом деле, вы можете попытаться получить доступ к библиотекам ядра Linux через Java Native Access.
вот так: ( http://jnaexamples.blogspot.tw/2012/03/java-native-access-is-easy-way-to.html)
Вы можете обернуть структуру пакета TCP в собственный код c, а затем отправить его из сокета Java.
Между тем, библиотека jnetpcap может быть вашим справочником по кодированию, если вы хотите собрать структуру данных TCP/IP в java. ( http://jnetpcap.com/node/29)