2013-12-26 20 views
-1

Предположим, что приложение отправляет пакет с заголовком TCP на сервер для конкретной функции с заголовками ethernet + IPv4 + TCP. Можно ли отправить тот же пакет с заголовком UDP, в котором все данные одинаковы? По моим сведениям, сторона-получатель будет просто декомплексировать заголовки пакетного уровня за слоем, чтобы данные пакета должны были передаваться на прикладной уровень сервера, когда заголовок UDP успешно демультиплексирован. Есть ли заблуждение?Можно ли отправить пакет с помощью протокола транспортного уровня?

+0

Если вы спрашиваете: «Могу ли я переписать приложение для использования UDP вместо TCP?» то ответ «да». Конечно, характеристики UDP полностью отличаются от характеристик TCP, поэтому это не прозрачное изменение. –

+0

Если я не буду переписывать приложение, но просто отредактируйте заголовки того же пакета и отправьте его на сервер, будет ли он принят? –

+0

Ну, для начала, если только что-то не прослушивает UDP на указанном порту, пакет будет сброшен в приемнике. –

ответ

0

Если сервер прослушивает порт независимо от того, какой протокол используется, на нем сидит некоторая прикладная логика, ожидая, что некоторые данные поступят на этот порт.

В соответствии с вашим примером, если сервер прослушивает два порта (A + B), он, безусловно, ожидает различных типов данных на каждом из этих двух портов.

Если клиницист теперь решает переключить порты, скажите отправить данные, предназначенные для перехода на порт A на порт B, логика приложения сервера наверняка смущается, поскольку она не понимает, что она получает на порте B, и (если это хорошо разработанное программное обеспечение на сервере), он отключит соединение на порту B.

Такой сценарий полностью не зависит от того, какой тип протокола используется.

Это так же, как если бы вы попытались подключить кабель питания вашего компьютера к сетевой розетке, но в гнездо питания. Хотя оба сокета встроены в ПК, вы не можете просто использовать какой-либо сокет для любого соединения/передачи.

0

Получатель не будет знать, к какому приложению передаются данные, поскольку приложение не прослушивает указанный порт UDP. Пакадж будет сброшен.

+0

Что делать, если порт UDP доступен, но первоначально не для отправки определенных типов пакетов? –

+0

Что вы подразумеваете под * доступным *? Кто-то слушает порт UDP? Тогда это лучше не мешает TCP-соединению, которое использует соответствующий TCP-порт. В противном случае часть * Transmission Control * протокола * Transmission Control Protocol будет бесполезной. – Oswald

+0

Приложение предоставляет два порта для передачи пакетов TCP и UDP. TCP - это прямая доставка данных между хостом и сервером, а UDP - для пакетного вещания (от 0.0.0.0:10000 до адреса сервера). –

0

Предположим, что приложение отправляет пакет с заголовком TCP на сервер для конкретной функции с заголовками ethernet + IPv4 + TCP.

Не могу этого предположить. Приложения не отправляют пакеты TCP. Приложения отправляют данные. TCP отправляет TCP-пакеты.

Можно ли отправить тот же пакет с заголовком UDP, в котором все данные одинаковы?

Да, конечно, просто отправьте его через сокет UDP вместо сокета TCP, считая данные вписывающимися в дейтаграмму UDP.

По моим сведениям, сторона приемника будет только демультиплексирования заголовки слоя пакетов слоем так что данные пакета должны быть переданы на прикладном уровне сервера, когда UDP заголовок де - мультиплексируется успешно.

  1. Там нет 'демультиплексирования' заголовков. 2. Если на сервере, принимающем на UDP-порт, есть приложение UDP, которое вы отправили, то, что вы говорите, произойдет. Если нет, передача будет удалена.

Есть ли какие-либо заблуждения?

Не совсем, но вы злоупотребляете стандартной терминологией и приписываете полномочия приложению, которое действительно лежит в другом месте. Приложение не имеет ничего общего с заголовками Ethernet или TCP или UDP или IP.

У меня также есть сильное чувство, что вы делаете гору из мухи.

Смежные вопросы