Какова структура, которая хранится в буферах отправки/приема сокета UDP?Linux

Anonymous
Какова структура, которая хранится в буферах отправки/приема сокета UDP?

Сообщение Anonymous »

Я заметил, что буферы приема и отправки UDP-сокетов имеют минимальные издержки 593 байта на каждое сообщение. То есть, когда я записываю 10 байт данных в сокет UDP, к 52 байтам данных, которые попадают в проводное соединение, также добавляются 593 байта «чего-то еще» и дополняются до 768 байт. Итак, вопросы:
  • Что это за «что-то еще»? Размер структуры sk_buff составляет менее 300 байт, поэтому похоже, что это не так (но это только предположение).
    Есть ли способ получить количество служебных байтов из кода C
Вот небольшая демонстрация:

Код: Выделить всё

int fd = ::socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr{
.sin_family = AF_INET,
.sin_port = htons(8080),
.sin_addr = INADDR_ANY,
.sin_zero = {},
};
::sendto(fd, "0123456789", 10, 0, reinterpret_cast(&addr), sizeof(addr));
Сокет, привязанный к порту номер 8080, имеет буфер приема, заполненный 768 байтами данных:

Код: Выделить всё

> netstat -anu | grep 8080
udp      768      0 0.0.0.0:8080            0.0.0.0:*
РЕДАКТИРОВАТЬ:
Меня не интересует использование проводной связи, меня интересует использование буферов приема/отправки. Поэтому мне нужно знать, что там хранится поверх заголовков Ethernet, ip и udp

Подробнее здесь: https://stackoverflow.com/questions/791 ... ve-buffers

Вернуться в «Linux»