powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос к знатокам протоколов
24 сообщений из 24, страница 1 из 1
Вопрос к знатокам протоколов
    #39674415
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть клиент(192.168.3.20) ws(arduino) он отсылает северу(192.168.3.4) (tomcat) данные. всё работает. но при просмотре обмена в WireShark возник вопрос - почему на каждые два отправления клиента есть отправление клиенту?
это нормально или что-то надо поправить? и если не нормально - что надо смотреть?
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674416
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот из WireSark
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674418
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TCP, вообще-то протокол с гарантированной доставкой. Поэтому подтверждения доставки должны быть как минимум.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674420
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczTCP, вообще-то протокол с гарантированной доставкой. Поэтому подтверждения доставки должны быть как минимум.тогда на каждое отправление должен быть ответ, тут такого нет
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674430
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://networkengineering.stackexchange.com/questions/12485/window-size-and-ack-number
https://serverfault.com/questions/348666/when-the-tcp-engine-decides-to-send-an-ack
То как тебе кажется TCP должен работать и от как он работает на самом деле это немного разные вещи.
За деталями в описание стандарта TCP.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674434
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автортогда на каждое отправление должен быть ответ, тут такого нет
https://docs.oracle.com/javase/8/docs/technotes/guides/net/socketOpt.html] TCP_NODELAY
Disable Nagle's algorithm.
Valid for (client) Sockets.

Nagle's algorithm
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674449
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674466
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinавтортогда на каждое отправление должен быть ответ, тут такого нет
https://docs.oracle.com/javase/8/docs/technotes/guides/net/socketOpt.html] TCP_NODELAY
Disable Nagle's algorithm.
Valid for (client) Sockets.

Nagle's algorithm
Имеет косвенное отношение к вопросу. В том смысле, что его выключение никаким образом не гарантирует наличие пары пакетов запрос-подтверждение (но возможно немного увеличивает вероятность).
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674498
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк,
В том смысле, что его выключение
я гдето писал о ВЫключении? я просто цитировал мануал.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674541
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheblinЛокшин Марк,
В том смысле, что его выключение
я гдето писал о ВЫключении? я просто цитировал мануал.
А к чему тогда вообще эта ссылка на мануал? Причина того, что количество тикетов с подтверждением не соответствует количеству отправлений клиента вовсе не в алгоритме Нейгла.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674620
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк,

причина ... вовсе не в алгоритме Нейгла.
хорошо.
это был мой неправильный ответ.
вероятно есть правильный?
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674804
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheblinЛокшин Марк,

причина ... вовсе не в алгоритме Нейгла.
хорошо.
это был мой неправильный ответ.
вероятно есть правильный?

Выглядит так: точного ответа я не знаю, но возьмите вот хоть какой-нибудь.
Мы же тут не туфли покупаем.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674818
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выглядит так:
уже второй говорит что я не прав. (и я легко с этим соглашусь.)

но правильного ответа от "критиков" так и не прозвучало. Ы?
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674844
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin...правильного ответа...

ответ уже прозвучал.
если вы знаете "правильный ответ" - напишите. проанализируйте в чём правильность его. напишите отличия от тех ответов что прозвучали. а то уже ваш вопрос сваливается в какую-то викторину.


если по сути:
пакеты подтверждения отсылаются по нескольким критериям. и один из - временной интервал. За этот интервал могут прийти на приём много чего. Всё зависит от скорострельности обработки на каждом из хостов, от загрузки сети, от маршрута прохождения, от алгоритмов(могут например IP пакеты менять очерёдность) на промежуточных и конечных узлах.

самое главное, что Вы как юзверь(по отношению к TCP/IP) должны знать - что это ПОТОК. Это самое главное. А как оно бегает внутри - если вы никогда не писали сами сетевой стэк - поверьте, Вы многое чего не поймёте...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674891
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheblinВыглядит так:
уже второй говорит что я не прав. (и я легко с этим соглашусь.)

но правильного ответа от "критиков" так и не прозвучало. Ы?

Работа TCP построена на таймерах. В частности есть таймер, который отвечает за повторную отправку. Когда какое-то сообщение отправляется, то принимающая сторона может сразу не отправить подтверждение. В каждом заголовке TCP пакета есть поле, в котором лежит номер последнего подтвержденного пакета. Подтвердить пакет - это эквивалентно отправке пакета с пустыми данными, что достаточно расточительно. Поэтому, если есть данные для отправки в обратную сторону, то попутно с ними будет отправлено подтверждение последнего принятого пакета, если нет, то получатель будет ждать некоторое время (пока не появятся данные в обратном направлении или не придут еще пакеты - подтверждение пакета с номером N подтверждает все пакеты с номером до N). Когда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674959
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин МаркCheblinпропущено...

уже второй говорит что я не прав. (и я легко с этим соглашусь.)

но правильного ответа от "критиков" так и не прозвучало. Ы?

Работа TCP построена на таймерах. В частности есть таймер, который отвечает за повторную отправку. Когда какое-то сообщение отправляется, то принимающая сторона может сразу не отправить подтверждение. В каждом заголовке TCP пакета есть поле, в котором лежит номер последнего подтвержденного пакета. Подтвердить пакет - это эквивалентно отправке пакета с пустыми данными, что достаточно расточительно. Поэтому, если есть данные для отправки в обратную сторону, то попутно с ними будет отправлено подтверждение последнего принятого пакета, если нет, то получатель будет ждать некоторое время (пока не появятся данные в обратном направлении или не придут еще пакеты - подтверждение пакета с номером N подтверждает все пакеты с номером до N). Когда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.

перевожу на наглийский

Nagle's algorithm is a means of improving the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network. It was defined by John Nagle while working for Ford Aerospace. It was published in 1984 as a Request for Comments (RFC) with title Congestion Control in IP/TCP Internetworks (see RFC 896).

The RFC describes what he called the "small-packet problem", where an application repeatedly emits data in small chunks, frequently only 1 byte in size. Since TCP packets have a 40-byte header (20 bytes for TCP, 20 bytes for IPv4), this results in a 41-byte packet for 1 byte of useful information, a huge overhead. This situation often occurs in Telnet sessions, where most keypresses generate a single byte of data that is transmitted immediately. Worse, over slow links, many such packets can be in transit at the same time, potentially leading to congestion collapse.

Nagle's algorithm works by combining a number of small outgoing messages and sending them all at once. Specifically, as long as there is a sent packet for which the sender has received no acknowledgment, the sender should keep buffering its output until it has a full packet's worth of output, thus allowing output to be sent all at once.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39674985
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

И что? Алгоритм Нейгла - это пакетирование со стороны отправителя. А подтверждения - со стороны получателя.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675006
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это пакетирование со стороны отправителя. А подтверждения - со стороны получателя.
вот в этом месте у меня произошла путаница.
спасибо Локшин Марк Вы внесли ясность.

Я был неправ.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675046
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркРабота TCP построена на таймерах. В частности есть таймер, который отвечает за повторную отправку. Когда какое-то сообщение отправляется, то принимающая сторона может сразу не отправить подтверждение. В каждом заголовке TCP пакета есть поле, в котором лежит номер последнего подтвержденного пакета. Подтвердить пакет - это эквивалентно отправке пакета с пустыми данными, что достаточно расточительно. Поэтому, если есть данные для отправки в обратную сторону, то попутно с ними будет отправлено подтверждение последнего принятого пакета, если нет, то получатель будет ждать некоторое время (пока не появятся данные в обратном направлении или не придут еще пакеты - подтверждение пакета с номером N подтверждает все пакеты с номером до N). Когда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.
и
https://networkengineering.stackexchange.com/questions/12485/window-size-and-ack-number
как-то не сочетаются или я что-то не понял?
в одном месте время в другом размер окна
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675093
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяЛокшин МаркРабота TCP построена на таймерах. В частности есть таймер, который отвечает за повторную отправку. Когда какое-то сообщение отправляется, то принимающая сторона может сразу не отправить подтверждение. В каждом заголовке TCP пакета есть поле, в котором лежит номер последнего подтвержденного пакета. Подтвердить пакет - это эквивалентно отправке пакета с пустыми данными, что достаточно расточительно. Поэтому, если есть данные для отправки в обратную сторону, то попутно с ними будет отправлено подтверждение последнего принятого пакета, если нет, то получатель будет ждать некоторое время (пока не появятся данные в обратном направлении или не придут еще пакеты - подтверждение пакета с номером N подтверждает все пакеты с номером до N). Когда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.
и
https://networkengineering.stackexchange.com/questions/12485/window-size-and-ack-number
как-то не сочетаются или я что-то не понял?
в одном месте время в другом размер окна
Что с чем не сочетается?
из ссылкиThe Window Size does not determine how often the Receiver should be sending ACKnowledgements. Originally, the TCP protocol called for an acknowledgement to be sent after each segment was received. Later, TCP was optimized to allow the Receiver to skip ACKs and send an ACKnowledgment every other packet (or more).
Кроме того, это было общее описание "на пальцах" части идей протокола. За более подробным для интересующихся - например к Таненбауму, там все гораздо более подробно и доступно.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675101
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. если пакеты большие - работает одно правило, если маленькие - другое?
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675167
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Если я правильно понимаю, что подразумевается под "правилами", то они применяются одновременно.
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675253
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Маркто они применяются одновременно.в моём случае размер окна не будет превышен никогда, поэтому вероятность применения "правила" по размеру равна нулю. и ответ от сервера очень редкий.
скажем так - у меня работает вот это "правило":
Локшин МаркКогда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.

но тут есть вопрос - что с нумерацией пакетов? почему номер ответа от сервера совпадает с номером последующего отправления серверу?
...
Рейтинг: 0 / 0
Вопрос к знатокам протоколов
    #39675445
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяно тут есть вопрос - что с нумерацией пакетов? почему номер ответа от сервера совпадает с номером последующего отправления серверу?
Википедия Transmission Control ProtocolAcknowledgment Number (ACK SN) (32 бита) — если установлен флаг ACK, то это поле содержит порядковый номер октета, который отправитель данного сегмента желает получить. Это означает, что все предыдущие октеты (с номерами от ISN+1 до ACK-1 включительно) были успешно получены.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос к знатокам протоколов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]