
Tenho um cenário em que desejo desabilitar ACKs puros (ACKs TCP sem dados), mas não consigo descobrir como fazer isso. Existe uma opção que eu possa definir para que os ACKs sejam sempre colocados no próximo pacote de dados (do qual posso ter certeza de que ele virá)?
Tentei desabilitar quickACKs por meio do ip route
comando para um intervalo de rede e dispositivo específico, mas não pareceu surtir nenhum efeito. Como informação adicional, estou executando um kernel 4.4 nesta máquina. Se precisar de mais informações, pergunte e eu fornecerei.
Responder1
Um pacote deve ser reconhecido pelo destinatário dentro de um horário específico, caso contrário o remetente assumirá que o pacote foi perdido e o retransmitirá. Se o seu destinatário enviar dados de qualquer maneira, o ACK será adicionado a esses dados. Se nenhum dado for enviado, um ACK puro deverá ser enviado para que o remetente saiba a tempo que o pacote foi recebido.
Responder2
Acontece que o aplicativo que estava me fornecendo esses ACKs puros usava um soquete com a opção TCP_NODELAY definida, para que cada pacote fosse respondido o mais rápido possível, sem esperar por dados adicionais.