Entendo que quando escrevo em um arquivo no meu disco rígido, um thread do kernel (pdflush em kernels anteriores a 3.6) irá, em algum momento, realmente liberar isso para o arquivo. Tenho lido sobre redes em "Understanding the Linux Kernel, Second Edition" (desculpe, não há nenhum e-book para o qual eu possa vincular) e parece sugerir que, ao chamar send(), descemos direto para o kernel, terminando com os dados sendo colocados na fila de saída da placa de rede.
Não há menção de nenhum outro tópico.
Alguém pode esclarecer que não interpretei mal ou entendi mal, e que para cada chamada send() que faço, o thread que faz a chamada no meu processo vai direto para o ponto em que o kernel a coloca na fila TX da NIC?
Se for esse o caso, estou confuso sobre como isso acontece com envios assíncronos; ou, neste caso, assíncrono significa simplesmente que recebemos uma notificação posteriormente de que o envio ocorreu?
Confuso.
(Eu já perguntei isso no SO normal, mas me disseram que essa era a melhor área para isso.)