Перейти к содержанию
    

W5500, фрагментация пакета

Удивительное рядом. На W5500 работают 3 сокета, 2 как серверы, один как клиент. С серверными всё в порядке, вопросов нет. А вот с клиентским чё-то непонятное. Вызов send() на W5500 для буфера размером 11 байт возвращает, ессно, 11. А вот сервер, к которому подключен W5500 через коммутатор, получает аж 3 посылки, то есть изначальные 11 байт дробятся на 3 посылки. Есть идеи куда рыть?

491020870_.png.4bf67df9ab4fe120e34cc03d3e365580.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, tonyk_av сказал:

сервер, к которому подключен W5500 через коммутатор, получает аж 3 посылки, то есть изначальные 11 байт дробятся на 3 посылки. Есть идеи куда рыть?

Непонятно - о каких "сокетах" речь? Какой протокол? 

Если TCP, то непонятно в чём именно проблема? Что не устраивает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, jcxz said:

Непонятно - о каких "сокетах" речь? Какой протокол? 

Если TCP, то непонятно в чём именно проблема? Что не устраивает?

TCP.

Не устраивает то, что одну посылку в 11 байт 5500 разделил аж на 3. В чём может быть причина?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, tonyk_av сказал:

TCP.

Не устраивает то, что одну посылку в 11 байт 5500 разделил аж на 3. В чём может быть причина?

В протоколе. Если надо чтобы не делились - меняйте на другой. UDP например.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, jcxz said:

В протоколе. Если надо чтобы не делились - меняйте на другой. UDP например.

А с какого перепуга он делит? Размер посылки меньше MTU, зачем делить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеет право, потому и делит. MTU тут вообще не при чём.

И вообще говорить, что кто то делит какие-то кадры - бессмысленно, потому как TCP - это поток байтов (октетов). Понятия "кадров" там нет. Нет кадров - нет деления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, tonyk_av said:

А с какого перепуга он делит? Размер посылки меньше MTU, зачем делить?

Потомучто TCP работает как поток-последовательность байт. К последовательности претензии есть ?

Возможно где-то у Вас затесались таймауты, они и отсекают пакеты. Или таймаут выдачи инф в  PuTTY.

Сниффером пакетов надо смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, jcxz said:

Имеет право, потому и делит. MTU тут вообще не при чём.

И с чего решили что делит "он"? Кто он?

Сервер на ПК получает 3 посылки. И так только с 5500, поэтому и говорю, что он, 5500, делит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, tonyk_av сказал:

Сервер на ПК получает 3 посылки. И так только с 5500, поэтому и говорю, что он, 5500, делит.

Он не может чего-то делить или не делить. TCP - поток байтов. Передаёт байты, а не кадры.

Советую почитать учебники по TCP/IP.  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, k155la3 said:

Потомучто TCP работает как поток-последовательность байт. К последовательности претензии есть ?

Возможно где-то у Вас затесались таймауты, они и отсекают пакеты. Или таймаут выдачи инф в  PuTTY.

Сниффером пакетов надо смотреть.

Никакого PuTTY тут нет. Есть моя прога, которая принимает пакет и выдаёт его на экран.

Таймаутов у меня нет. Но есть FreeRTOS. Неужели из-зп неё?

Видимо, без снифера не обойтись.

3 minutes ago, jcxz said:

Он не может чего-то делить или не делить.

Тогда почему 11 байт, которые я отправляю одним send(), на ПК принимаются тремя посылками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, tonyk_av сказал:

Тогда почему 11 байт, которые я отправляю одним send(), на ПК принимаются тремя посылками?

Потому что так звёзды сложились. В другой раз может прийти 11 посылок по 1-у байту.

6 минут назад, tonyk_av сказал:

Неужели из-зп неё?

Из-за того, что вы не знаете что такое TCP. FreeRTOS тут никаким боком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, jcxz said:

Из-за того, что вы не знаете что такое TCP

Я первый раз столкнулся с сетевым контроллером, который вместо отправки одного IP-пакета с 11 байтами разделил его на 3 пакета. Бред какой-то. Он ведь тупо засирает сеть этими пакетами. И как объяснить ему, чтобы он отправлял всю посылку зараз, ни где не вижу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, tonyk_av said:

(1) Никакого PuTTY тут нет. Есть моя прога, которая принимает пакет и выдаёт его на экран.

(2) Таймаутов у меня нет. Но есть FreeRTOS. Неужели из-зп неё?

(3) Видимо, без снифера не обойтись.

. . . 

1.  А как-же "вещдок" в Вашем первом посте ? По Вашему описанию трудно представить конфигурация того, что Вы тестируете и в каких комбинациях. 

2. Они есть. Просто Вы их не видите. См. в "стеке" TCP или в чипе W5500. Кроме того есть очереди и их верхний и нижний "уровни".

3. Да. Потом - можно и без него.  

ps посмотрел док на W5500. Есть два режима - VDM и FDM (Variable/Fixed Length Data Mode). 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, k155la3 said:

Есть два режима - VDM и FDM (Variable/Fixed Length Data Mode). 

Даже три. Третий _WIZCHIP_IO_MODE_SPI_5500_, хотя он, вроде, идентичен FDM. Пробовал это менять, никак не влияет. Зато в примерах работы с Модбас показаны именно целые, не фрагментированные, пакеты. И разбивка одной посылки как 4+4+2 настораживает. Видимо, есть какая-то настройка у этого 5500, которая влияет на это. Только вот какая, где она описана?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...