как добавить приложение в необработанные уровни IP и TCP - PullRequest
0 голосов
/ 03 марта 2019

Как вы знаете, пакет можно описать так:

packet = ip_header + tcp_header + user_data

И мы уже знаем, что уровни OSI выглядят так:

Physical layer
Data Link
Network (IP header)
Transport (TPC header)
Application 

У меня уже есть коддля заголовков IP и заголовков TCP.Я могу создать любой код для приложения EMAIL или приложения FTP, например.Но вопрос: как я могу связать код приложения с сетевыми заголовками?так что теперь предположим, что «s» - это необработанный сокет, который я уже создал.

Теперь я полагаю, что должен отправить его.В Python это будет выглядеть так:

s.sendto(packet, (dest_ip , 0 ))

, и учитывая, что пакет имеет вид:

packet = ip_header + tcp_header + user_data

Пользовательские данные (то есть приложение) могут быть приложением FTP, приложением электронной почты, но это может быть длиной 5000 байт.Как я могу "отправить" это?Я просто не представляю это как часть пакета.Поместить весь код FTP между кавычками?это звучит смешно.Это моя недостающая ссылка.

(Вот вопрос. Как я могу подключить его к необработанным заголовкам, которые я создал, и запустить весь процесс? Да, я хочу, чтобы он работал на сырых сокетах

Спасибо

1 Ответ

0 голосов
/ 14 марта 2019

Я могу создать любой код для приложения EMAIL или приложения FTP, например.Но вопрос: как я могу связать код приложения с сетевыми заголовками?так что теперь предположим, что «s» - это необработанный сокет, который я уже создал.

Не используя необработанные сокеты.

Необработанные сокеты полезны, только если вы строите низкийсетевой инструмент высокого уровня - например, ping, mtr или nmap - который специально должен взаимодействовать с нижними уровнями сетевого стека.Большинство типичных сетевых приложений, таких как почтовый клиент или приложение FTP, не нуждаются в этом, поэтому они будут использовать TCP (потоковые) сокеты.

Если вы настаиваете на использовании сырых сокетов независимо от того,Вы находитесь в ситуации, когда вам необходимо повторно реализовать IP и TCP в вашем приложении.Не делай этого.

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