Является ли буфер отправки / приема той же предварительно выделенной памятью - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть приложение для Windows, которое потребляет большое количество входящего трафика udp и отправляет небольшое количество пакетов udp «keep alive». Я вижу небольшое количество капель как на входящие, так и на исходящие. Я был удивлен, что небольшое количество исходящих данных испытывало сбросы, поэтому я перехватил пакеты с помощью netMon и увидел, что все они отправляются, хотя с сервера 3 отправленных кадра и только 2 прибывают на сервер linux.

Я хотел бы знать следующее: 1. Является ли NetMon клоном в sock_buffer, и поэтому данные могут быть отброшены в буфере пакетов и фактически не отправляться с сервера? 2. Является ли буферная память пакетов одинаковой как для отправки, так и для приема (т. Е. Если буферы принимаемых пакетов используют всю предварительно выделенную буферную память, может ли это привести к потере пакета при небольшом объеме исходящего трафика)?

1 Ответ

0 голосов
/ 13 апреля 2011

Первое: буфер пакетов отправки и получения имеет отдельную память.Второе: NetMon работает на нижнем сетевом уровне, а не на уровне сокетов.Третье: помните, что UDP является ненадежным протоколом, и вы не можете гарантировать, что все пакеты, отправленные с одного конца, будут получены на другом конце.Если вам нужна надежность, вы должны рассмотреть TCP или другой надежный протокол.

Кстати, как отправитель, так и получатель находятся в одной локальной сети или в Интернете ??Как они связаны?если вы можете описать это, то, возможно, кто-то может предложить что-то еще для дальнейшей отладки проблемы.

...