Sua confusão decorre de algumas suposições incorretas.
But surely, the only device that knows this routing mechanism is Router-C itself! Not even Computer-A nor Computer-B will know about it, right?
Por quê? Por que o roteador foi configurado para encaminhar essas portas para esses IPs? Você precisa configurar o cliente P2P para usar uma porta específica e depois configurar o roteador para corresponder.
but how is Router-D to know to send packets through port 1000, and not say port 1001?
Porque você configura o cliente P2P para usar uma porta específica (padrão ou não padrão para esse protocolo).
The only solution I can think of is for Router-D to send the packet to Router-C through all ports, such that it gets forwarded to Computer-A, but is there a better solution?
É muito mais simples que isso. Quando o cliente faz uma conexão com um par, ele especifica qual porta ele quer usar, então o par envia os dados naquela porta.
Hmm, but Bittorrent doesn't change the router's behavior right? Since some routing mechanism could have been dynamic as demonstrated in superuser.com/a/187190/78897, how is Computer-A able to know about it?
O cliente não afeta diretamente o roteador, mas o roteador pode ser configurado / inteligente o suficiente para se adaptar ao comportamento do cliente. Você pode ativar o UPnP no roteador e no cliente para configurar automaticamente a conexão, e a maioria dos roteadores tem habilidades de inspeção íntegra como parte de seu encaminhamento de porta mecanismo.
Juntem, o que isso significa é que uma conexão pode ser feita dinamicamente em uma porta aleatória e, em seguida, o roteador pode acompanhar o que está acontecendo em vez de visualizar tudo como conexões aleatórias e sem sentido. Dessa forma, ele pode encaminhar uma conexão conforme necessário, porque, por exemplo, é uma resposta a essa outra conexão que acabou de acontecer .
O problema surge quando você tem vários sistemas usando o mesmo programa. Ter vários sistemas conectados ao mesmo roteador, compartilhar o mesmo IP e usar portas dinâmicas rapidamente se torna impossível de gerenciar e, mesmo com a inspeção de estado, é difícil, senão impossível, fazer com que funcione corretamente. Nesse caso, as portas estáticas (padrão ou não) precisarão ser usadas.
Se você usa um programa como SmartSniff ou TCPView para monitorar suas conexões, você notará que as conexões P2P normalmente terão a porta que você configurou (ou o padrão para o cliente) como o destino para conexões de entrada e o padrão ou uma porta personalizada / aleatória para a origem e vice-versa para conexões de saída.