Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос к знатокам протоколов / 24 сообщений из 24, страница 1 из 1
16.07.2018, 11:32
    #39674415
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
есть клиент(192.168.3.20) ws(arduino) он отсылает северу(192.168.3.4) (tomcat) данные. всё работает. но при просмотре обмена в WireShark возник вопрос - почему на каждые два отправления клиента есть отправление клиенту?
это нормально или что-то надо поправить? и если не нормально - что надо смотреть?
...
Рейтинг: 0 / 0
16.07.2018, 11:34
    #39674416
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
вот из WireSark
...
Рейтинг: 0 / 0
16.07.2018, 11:35
    #39674418
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
TCP, вообще-то протокол с гарантированной доставкой. Поэтому подтверждения доставки должны быть как минимум.
...
Рейтинг: 0 / 0
16.07.2018, 11:37
    #39674420
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
BlazkowiczTCP, вообще-то протокол с гарантированной доставкой. Поэтому подтверждения доставки должны быть как минимум.тогда на каждое отправление должен быть ответ, тут такого нет
...
Рейтинг: 0 / 0
16.07.2018, 12:04
    #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
16.07.2018, 12:09
    #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
16.07.2018, 12:43
    #39674449
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
Спасибо
...
Рейтинг: 0 / 0
16.07.2018, 13:25
    #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
16.07.2018, 14:14
    #39674498
Cheblin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
Локшин Марк,
В том смысле, что его выключение
я гдето писал о ВЫключении? я просто цитировал мануал.
...
Рейтинг: 0 / 0
16.07.2018, 15:12
    #39674541
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
CheblinЛокшин Марк,
В том смысле, что его выключение
я гдето писал о ВЫключении? я просто цитировал мануал.
А к чему тогда вообще эта ссылка на мануал? Причина того, что количество тикетов с подтверждением не соответствует количеству отправлений клиента вовсе не в алгоритме Нейгла.
...
Рейтинг: 0 / 0
16.07.2018, 17:26
    #39674620
Cheblin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
Локшин Марк,

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

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

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

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

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


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

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

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

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

Работа TCP построена на таймерах. В частности есть таймер, который отвечает за повторную отправку. Когда какое-то сообщение отправляется, то принимающая сторона может сразу не отправить подтверждение. В каждом заголовке TCP пакета есть поле, в котором лежит номер последнего подтвержденного пакета. Подтвердить пакет - это эквивалентно отправке пакета с пустыми данными, что достаточно расточительно. Поэтому, если есть данные для отправки в обратную сторону, то попутно с ними будет отправлено подтверждение последнего принятого пакета, если нет, то получатель будет ждать некоторое время (пока не появятся данные в обратном направлении или не придут еще пакеты - подтверждение пакета с номером N подтверждает все пакеты с номером до N). Когда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.
...
Рейтинг: 0 / 0
17.07.2018, 12:35
    #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
17.07.2018, 12:54
    #39674985
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
Cheblin,

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

Я был неправ.
...
Рейтинг: 0 / 0
17.07.2018, 14:08
    #39675046
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
Локшин МаркРабота TCP построена на таймерах. В частности есть таймер, который отвечает за повторную отправку. Когда какое-то сообщение отправляется, то принимающая сторона может сразу не отправить подтверждение. В каждом заголовке TCP пакета есть поле, в котором лежит номер последнего подтвержденного пакета. Подтвердить пакет - это эквивалентно отправке пакета с пустыми данными, что достаточно расточительно. Поэтому, если есть данные для отправки в обратную сторону, то попутно с ними будет отправлено подтверждение последнего принятого пакета, если нет, то получатель будет ждать некоторое время (пока не появятся данные в обратном направлении или не придут еще пакеты - подтверждение пакета с номером N подтверждает все пакеты с номером до N). Когда нужно закончить ожидание? До того, как у отправителя сработает таймер повторной отправки, с учетом времени на доставку пакета с подтверждением в обратном направлении.
и
https://networkengineering.stackexchange.com/questions/12485/window-size-and-ack-number
как-то не сочетаются или я что-то не понял?
в одном месте время в другом размер окна
...
Рейтинг: 0 / 0
17.07.2018, 14:51
    #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
17.07.2018, 15:09
    #39675101
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
т.е. если пакеты большие - работает одно правило, если маленькие - другое?
...
Рейтинг: 0 / 0
17.07.2018, 16:48
    #39675167
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к знатокам протоколов
вадя,

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

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


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