Ответы пользователя по тегу OpenBSD
  • Зачем устанавливается размер сокета SO_SNDBUF в исходниках traceroute?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    В коде (строке 830) устанавливается размер исходящего буфера сокета (с которого отправлятся udp-пакеты) равный размеру отправляемого udp пакета (38 байт). Не могу понять - зачем это вообще нужно?

    Для экономии памяти, очевидно. Возможно было актуально в какой-то момент времени, судя по остальным комментариям в этом файле.

    может ли быть буфер настолько маленьким (какого вообще его минимальное значение)?

    Как трактовать опции сокетов -- это внутреннее дело ядра. В тегах стоит linux, линуксовый man 7 socket говорит следующее:

    SO_SNDBUF
         Sets  or  gets the maximum socket send buffer in bytes.  The kernel doubles this value
         (to allow space for bookkeeping overhead) when it is set using setsockopt(2), and this
         doubled value is returned by getsockopt(2).  The default value is set by the
         /proc/sys/net/core/wmem_default file and the maximum allowed value is set by the
         /proc/sys/net/core/wmem_max file.  The minimum (doubled) value for this option is 2048.
    Ответ написан