1. вообще вопрос был такой: должна или не должна W5500 сама закрывать соединение...
tonyk писал(а):
roman.com писал(а):
в режиме ESTABLISHED у меня w5500 работал весь день... пока он мне не надоел... и я его закрыл))
"Весь день"- это сколько? Даю подсказку: время автоматического закрытия соединения измеряется часами.
тесты показывают что W5500 сама (без команды) не закрывает соединение...
2. через роутер не проверял... не помню... ну можно проверить)) а нафига вообще роутеру закрывать соединение ? для этого роутер должен следить что передаёт пользователь... по логике... задача роутера принимать и передавать пакеты... а не следить за трафиком пользователя)) поэтому роутер не должен закрывать соединение))
На сколько помню, в BSD сокетах по умолчанию стояло 6 часов.
просто интересно, а какие бывают ещё сокеты? А где Вы встречали их? Про "по-умолчанию" - значение во всех ОС, которые мне встречались, два часа.
tonyk писал(а):
В W5500 на одном IP-порту может быть только одно подключение
просто интересно, а где может быть несколько подключений? Приведите пример, пожалуйста?
roman.com писал(а):
вообще вопрос был такой: должна или не должна W5500 сама закрывать соединение...
Ответ: закрывать соединение, когда Вы не планируете его в ближайшее время использовать, является правилом хорошего тона и здравого смысла. Таймауты, keep-alive и т.д. - это всё же способы решения нештатных ситуаций.
roman.com писал(а):
тесты показывают что W5500 сама (без команды) не закрывает соединение...
что логично.
roman.com писал(а):
через роутер не проверял... не помню...
да то ж самое будет, keep alive и висящая "до упора" сессия.
roman.com писал(а):
а нафига вообще роутеру закрывать соединение ?
из соображений самосохранения Если Вы включили свою поделку, она к роутеру подключилась - не знаю, что вы все с ними делаете - в интернет там сходить, например. И заглючило её по питанию. Вы её перезапустили, она ещё раз подключилась - а старая сессия висит, её ж никто корректно не финализировал. И так 100500 раз. На самом деле, даже вдвое меньше Если у роутера таймаута не будет - он ляжет, deny of service, хакеры победили Если будет таймаут - через пару часов отживёт. Ну, если Вы перестанете пытаться к нему подключаться к тому времени. Все роутеры последних лет 20-ти выпуска имеют к таким незатейливым DoS-атакам иммунитет. Но когда-то это был вполне реальный сценарий
Видимо, везде, кроме W5500. Стандартное значение- 5.
Если мы про IP соединения говорим, то есть IP-адрес, есть номер порта у сервера. Есть IP-адрес и номер порта клиента. Возможен только один сокет, без исключений, где эти четыре цифры полностью совпадают. Если клиент написан по-уму, второе соединение к тем же IP и номеру порта сервера он у себя открывает с другим номером своего порта. Откуда цифра 5 взята? О каких одновременных подключениях речь? Непонятно.
roman.com писал(а):
тогда я не понимаю... как роутер определяет есть передача данных или нет передачи данных...
Так а чего же сложного? TCP-соединение создаётся между устройством и роутером. Передаются данные - SYN, ASK, данные, и т.д. Роутер вполне в курсе, когда он в последний раз что-то принял или отправил в этом соединении.
Если мы про IP соединения говорим, то есть IP-адрес, есть номер порта у сервера. Есть IP-адрес и номер порта клиента. Возможен только один сокет, без исключений, где эти четыре цифры полностью совпадают. Если клиент написан по-уму, второе соединение к тем же IP и номеру порта сервера он у себя открывает с другим номером своего порта. Откуда цифра 5 взята? О каких одновременных подключениях речь? Непонятно.
Ну так откройте учебники по сетевым технологиям и изучите вопрос, мне-то зачем пересказывать то, что уже описано лет 40 назад.
Да Вы хоть намекните, о чём Вы писали. Одновременные подключения чего к чему? Учебники я читал. W5500 ковырял, и как сервер, и как клиент. Что за ограничение подключений, чтобы "у W5500 один, а стандартное - 5" не могу понять. Бестолковый, что взять... UPD: чуть не забыл, я там ещё вопрос задавал, про то, какие бывают сокеты, чтобы не BSD. И где Вам довелось с ними поработать. Тоже интересно было бы узнать.
так никто и не объяснил... что у нас с роутером)) допустим у нас есть: -W5500. -роутер. -некий сервер в интернете (возможно второй W5500).
подключаем по классической схеме:
W5500 >> роутер >> некий сервер в интернете.
1. W5500 устанавливает соединение с сервером в интернете (возможно второй W5500).
W5500_client подключается к серверу: >SYN >SYN ACK >ACK
2. далее... W5500 передаёт данные на сервер в интернете (возможно второй W5500).
W5500 DATA > сервер в интернете (возможно второй W5500). W5500 DATA < сервер в интернете (возможно второй W5500).
3. далее... когда W5500 не передаёт данные на сервер в интернете (возможно второй W5500), то каждые ~45 секунд W5500 и сервер обмениваются служебными пакетами ACK (подтверждая что соединение всё ещё открыто). .... .... сервер [TCP keep-alive] > w5500 [TCP keep-alive] ~45 сек сервер [TCP keep-alive] < w5500 [TCP keep-alive] ~45 сек сервер [TCP keep-alive] > w5500 [TCP keep-alive] ~45 сек .... .... ....
4. выше утверждали что если W5500 не передаёт данные на сервер, то якобы через два часа роутер сам закроет соединение. (но это не точно).
внимание (!) вопрос: откуда роутер знает ??? передаются данные или передаются служебные пакеты ACK ???
1. W5500 устанавливает соединение с сервером в интернете (возможно второй W5500).
не так сразу W5500 устанавливает IP соединение с роутером. И вежливо просит роутер переслать IP пакеты на сервер назначения. Роутер устанавливает (на другом интерфейсе, обычно) соединение с каким-то оборудованием оператора связи (провайдера). И вежливо просит его переслать IP пакеты на сервер назначения. Оборудование оператора связи... ну, вы понели Утилита командной строки traceroute или tracert в зависимости от операционной системы покажет Вам перепитии IP пакета на пути к цели Причём не факт, что каждый хоп из трейса напрямую устанавливает соединение со следующим - есть ещё мосты всякие... и наоборот - два хопа могут внутри одной железки оказаться, IP пакету просто добавляется "обёртка".
внимание (!) вопрос: откуда роутер знает ??? передаются данные или передаются служебные пакеты ACK ???
Ответ: как выше было сказано,
AAX писал(а):
TCP-соединение создаётся между устройством и роутером. Передаются данные - SYN, ASK, данные, и т.д. Роутер вполне в курсе, когда он в последний раз что-то принял или отправил в этом соединении.
W5500 не устанавливает IP соединение с роутером. разберём подробнее...
допустим у нас есть: -W5500. -роутер. -некий сервер в интернете.
подключаем по классической схеме:
W5500 >> (LAN) роутер (WAN) >> некий сервер в интернете.
0. W5500 хочет установить соединение с сервером в интернете. IP сервер = 95.23.14.234 Но сервер в интернете находится в другой сети. как это W5500 это понял ? по IP и маске сети.))
IP W5500 = 192.168.0.3 маска = 255.255.255.0 IP сервер = 95.23.14.234
поэтому чтобы установить соединение с сервером, W5500 отправляет пакет на шлюз )) IP шлюз = 192.168.0.1
но прежде чем отправить пакет на шлюз (IP шлюз = 192.168.0.1), W5500 должен сначала выяснить MAC адрес шлюза. для этого есть протокол ARP.
первым делом W5500 ищет MAC адрес шлюза в ARP таблице... но его там нет)) потому что это первое включение W5500. MAC адрес в ARP таблице живёт 2 минуты.
поэтому W5500 отправляет широковещательный пакет FF:FF:FF:FF:FF:FF IP шлюз = 192.168.0.1 отвечает пакетом 01:02:03:04:05:06 W5500 записывает MAC адрес шлюза 01:02:03:04:05:06 в ARP таблицу.
затем W5500 отправляет пакет IP сервер = 95.23.14.234 на MAC адрес шлюза 01:02:03:04:05:06
шлюз 01:02:03:04:05:06 отправляет пакет IP сервер = 95.23.14.234 на MAC адрес провайдера 11:22:33:44:55:66
провайдер 11:22:33:44:55:66 отправляет пакет IP сервер = 95.23.14.234 на MAC адрес сервера 77:88:99:00:11:22
пакет IP сервер = 95.23.14.234 доставлен серверу)) процесс передачи закончен))
а далее уже писали выше...
1. W5500 устанавливает соединение с сервером в интернете (возможно второй W5500).
W5500_client подключается к серверу: >SYN >SYN ACK >ACK
2. далее... W5500 передаёт данные на сервер в интернете (возможно второй W5500).
W5500 DATA > сервер в интернете (возможно второй W5500). W5500 DATA < сервер в интернете (возможно второй W5500).
3. далее... когда W5500 не передаёт данные на сервер в интернете (возможно второй W5500), то каждые ~45 секунд W5500 и сервер обмениваются служебными пакетами ACK (подтверждая что соединение всё ещё открыто). .... .... сервер [TCP keep-alive] > w5500 [TCP keep-alive] ~45 сек сервер [TCP keep-alive] < w5500 [TCP keep-alive] ~45 сек сервер [TCP keep-alive] > w5500 [TCP keep-alive] ~45 сек .... .... ....
4. выше утверждали что если W5500 не передаёт данные на сервер, то якобы через два часа роутер сам закроет соединение. (но это не точно).
а вопрос
roman.com писал(а):
откуда роутер знает ??? передаются данные или передаются служебные пакеты ACK ???
roman.com, чот я тупил вчера прям жоска, предыдущее сообщение написал, прочитал - исправил, прочитал ещё раз - снова отредактировал, хотел вообще удалить, но нужной кнопки не нашёл и спать ушёл. Мне жаль, что Вам пришлось это читать, извините. Попытаюсь исправиться. Значить, как оно работает: часть с MAC-адресами мы поскипаем, т.к. это другой сетевой уровень, там данные по-своему на фреймы бьются, и применительно к тайм-аутам нам это не интересно. Клиент располагает настроенными собственным IP-адресом и IP-адресом шлюза по-умолчанию. Из DHCP или захардкоженными в настройки. Давайте для наглядности предположим, что IP клиента у нас 192.168.0.2, шлюз - 192.168.0.1. Клиент желает установить соединение со своего порта 49876 на порт 80 некоего сервера в интернетах. Предположим, опять же, что IP этого сервера - 92.68.0.111. Клиент формирует TCP пакет, в заголовки ставит свой исходящий порт 49876, порт назначения - 80, какой-то произвольный номер пакета, и устанавливает флаг SYN. К этому пакету добавляется "обёртка" IP - адрес отправителя (192.168.0.2), адрес получателя(92.68.0.111) и т.д. Этот IP-пакет отправляется шлюзу (192.168.0.1). Логика про "локалка"/"не локалка" Вами описана совершенно верно. Дальше шлюз (роутер) должен бы по-идее передать этот пакет дальше по маршруту. Но у нас адрес отправителя принадлежит т.н. "частной" сети. Т.е. за каждым роутером может быть компьютер с адресом 192.168.0.2. И если просто передать пакет на 92.68.0.111 обратный адрес по факту будет "на деревню, дедушке". Роутер берёт IP пакет. "Разворачивает" его. Записывает в память адрес отправителя, адрес получателя. Записывает порт отправителя, порт получателя из TCP пакета. "Заворачивает" TCP пакет в IP обёртку, где ставит адресом отправителя свой адрес в интернете. Опять же, предположим, что 92.68.22.33. Адрес получателя остаётся без изменений. Таким образом получается, что у нас от клиента к роутеру один сокет - сокеты идентифицируются по четырём параметрам, IP адреса и номера портов отправителя и получателя. А от роутера к получателю другой сокет по факту - там же IP отправителя другой. Дальше когда будет получен ответ, роутер проделает с пакетом обратную процедуру - проверит, какой сокет из записанных в память соответствует адресам/портам полученного ответа, и подменит IP получателя со своего IP(92.68.22.33) на IP клиента(192.168.0.2) И отправит пакет в локальную сеть. Это называется NAT. А чтобы избежать ситуации (довольно частой), когда два компьютера из локалки решат установить соединение с одним и тем же портом одного и того же компьютера в интернете с одного и того же номера порта отправителя - NAT может и в TCP пакете номер порта отправителя заменить на другой И так мобильные операторы например "выпаливают" раздачу мобильного интернета с мобильника на компьютер. Фуф, как букав многа вышло. Хоть толк есть? Или пошёл я нафик куда-нибудь в другое место википедию пересказывать?
отлаживаю клиента, отправку запроса/сообщения к серверу - ОК отправка запроса серверу - ОК прием сервером запроса/расшифровка - ОК wireshark пакеты "не красит" черным, вроде все пучком но вот что кажет "шарк" - это мне не понятно: пакет "промаркирован" как VNC какие будут комментарии/пояснения?!
VNC - это wireshark пытается определить протокол... а внутри пакетов не протокол а данные... вот он и пишет фигню всякую))
а я тут вообще отправил пустой пакет)) Спойлер wireshark определил протокол как FC... хотя там нет никакого протокола)) потому что пакет пустой.
что интересно... пустые пакеты тоже доходят... )) но только в пределах локальной сети.
при передачи пакета роутер смотрит ARP таблицу... но так как в ARP таблицы MAC адреса 0000000 нет, то роутер отправляет пустой пакет на все порты. получается типа широковещательного пакета FFFFFFFF))
вот NAT. Спойлер а тут я передаю фото)) Спойлер а тут я передаю музыку)) Спойлер а тут я передаю видео)) Спойлер W5500 всё умеет. и даже VPN. Спойлер Спойлер
AAX писал(а):
в заголовки ставит свой исходящий порт 49876, порт назначения - 80, какой-то произвольный номер пакета,
произвольный номер пакета называется Identification вот он в пакете
часть с MAC-адресами мы поскипаем, т.к. это другой сетевой уровень, там данные по-своему на фреймы бьются, и применительно к тайм-аутам нам это не интересно.
очень даже интересно. я вижу каждый бит в интернете...
точнее даже не каждый бит, а каждый электрический импульс... на осциллографе)) Спойлер можем разобрать ещё глубже... на уровне электронов в медных проводах и фотонов в оптическом кабеле))
всё это прекрасно... но всё это не отвечает на вопрос...
откуда роутер знает ??? передаются данные или передаются служебные пакеты ACK ???
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения