@DavidPostill Desculpe, eu estava realmente interessado apenas em PASV vs EPSV.
precisa saber é o seguinte
Respostas:
20
A única diferença é que eles PORT/PASVsão limitados ao IPv4 , enquanto EPRT/EPSVtrabalham com qualquer protocolo de rede (embora apenas o IPv6 seja usado na prática).
Os comandos padrão PORT(ativo) e PASV(passivo) no protocolo de controle FTP trocam informações de endereço e porta como seis casas decimais de 1 byte , das quais a outra extremidade precisa reconstruir um endereço IP de quatro bytes e um número de porta TCP de dois bytes.
PORT <address[4]>,<port[2]>
PORT 132,235,1,2,24,131
Mas então outros protocolos começaram a aparecer. O IPv4 estava prestes a ser substituído pelo "IPng", que tinha várias propostas de substituição concorrentes (OSI CLNP, TUBA, SIP, SIPP, CATNIP - em vários momentos da história), algumas com tamanhos de endereço de host mais curtos, mais longos e até variáveis , até que o IPv6 com endereços de 16 bytes finalmente seja definido.
Apenas enviar mais bytes não teria funcionado - não se esperava que servidores e clientes conhecessem o protocolo certo com base apenas no tamanho do endereço. (Por exemplo, e se você tiver um protocolo com endereço de 16 bytes + porta de 4 bytes, outro com endereço de 12 bytes + porta de 12 bytes?)
Além disso - embora isso tenha sido menos importante há 20 anos - atualmente, existem milhões de dispositivos NAT na Internet, que inspecionam e gerenciam conexões de controle FTP para que o host "externo" veja apenas endereços IPv4 globais, mesmo que o "interno" host enviou um local RFC1918. Mesmo sem o NAT, os firewalls com estado geralmente assistem aos comandos de controle para permitir automaticamente uma conexão de dados sem regras manuais.
Basicamente, isso significa que simplesmente o envio de mais números com PORTou PASVé garantido para muitas pessoas. Talvez alguns firewalls silenciosamente interpretem mal alguns bytes de endereço como a porta e descartem silenciosamente o restante; outros podem interromper a conexão ou simplesmente travar.
Para evitar vários problemas como o acima, novos comandos tiveram que ser introduzidos para suporte a multiprotocolo no FTP.
Em 1993, a RFC 1639 (originalmente RFC 1545 ) introduziu o "endereço longo" LPRTe osLPSV comandos, que eram como PORT& PASVmas com um comprimento de endereço variável ; eles incluíram o identificador de tipo de protocolo também. (Porém, não mudou a sintaxe - endereço IPv6: a porta seria simplesmente enviada como 21 números em vez de seis.)
No entanto, isso ainda não resolveu alguns dos problemas, como solicitar que um servidor use um protocolo diferente do da conexão de controle. A RFC também rapidamente ficou desatualizada; quando o IPv6 foi lançado apenas um ano depois, não pôde ser usado com o LPRT porque não havia um identificador de protocolo LPRT atribuído a ele (apenas para as várias propostas iniciais).
Para corrigir isso, o RFC 2428 em 1998 adicionou EPRTe EPSV, também conhecido como "porta estendida" e "passiva estendida" , que também possuía um método para negociar um protocolo que ambas as extremidades suportam. Os comandos "estendidos" também enviam endereços em formato legível por humanos - para IPv6, isso significa usar notação hexa e dois pontos, em vez de uma série de números decimais separados.
Uau, todos os sites que li e não clicaram até este. Obrigado por isso. Aceito (provavelmente) em uma ou duas horas, quero ver se alguém faz diferente. Além disso, o motivo pelo qual solicitei o Active também foi que, devido ao bom funcionamento da tag no google, essa pergunta / resposta será encontrada nas pesquisas. Se ninguém adicionar à resposta (tornando-a mais completa para uma resposta do Google), editarei minha pergunta e corpo originais para refletir o conteúdo da sua resposta, ajustando-a essencialmente à sua resposta.
precisa saber é o seguinte
3
Outra diferença é que a EPSVresposta não inclui o endereço IP (que PASVresposta faz). Isso evita problemas comuns quando o servidor FTP localizado atrás de um NAT não sabe seu endereço IP externo e confunde o cliente FTP enviando seu endereço interno.
Martin Prikryl
Para adicionar o que o @MartinPrikryl diz, outro motivo é ao usar o FTP sobre TLS, o firewall / NAT não pode interceptar o endereço IP no comando PASV para reescrevê-lo (pelo menos sem MITMing na conexão de controle). As pessoas do mundo Unix geralmente usam SFTP em vez de FTP sobre TLS, FTP sobre TLS é comumente usado com mainframes IBM, pois o FTP suporta arquivos orientados a registros (STRU R, MODO B), enquanto o SFTP suporta apenas orientados a fluxo arquivos
Simon Kissane 30/10
1
A diferença entre ativo e passivo já está respondida. Passivo estendido (EPSV) é apenas passivo com IPv4 e IPv6, porque a sintaxe da resposta ao PASV era específica para o IPv4 e, portanto, era necessário um novo comando para o IPv6. Mesmo com EPTR vs. PORT no modo ativo. Existe um comportamento ligeiramente diferente com o EPRT e o EPSV, pois eles podem conter apenas a porta, não o IP e a porta como PORT e PASV. Assim, a transferência de dados só pode ser feita entre os sistemas que possuem a conexão de controle. Com o PORT e o PASV, é possível criar uma conexão de dados entre outros sistemas (embora hoje seja considerado um design ruim e um risco de segurança).
Esse era o tipo de resposta que eu não queria. Diz-me exatamente o que pude encontrar em outro lugar, que é que o EPSV foi criado para o IPv6, mas não explica o porquê. (ou seja, não aceito sua razão como uma explicação suficientemente boa). Estou lhe dizendo isso na esperança de que talvez você melhore ainda mais sua resposta.
precisa saber é o seguinte
Resposta editada para deixar claro que a resposta ao comando PASV para não oferecer suporte ao IPv6 e, portanto, era necessário um novo comando.
Respostas:
A única diferença é que eles
PORT/PASV
são limitados ao IPv4 , enquantoEPRT/EPSV
trabalham com qualquer protocolo de rede (embora apenas o IPv6 seja usado na prática).Os comandos padrão
PORT
(ativo) ePASV
(passivo) no protocolo de controle FTP trocam informações de endereço e porta como seis casas decimais de 1 byte , das quais a outra extremidade precisa reconstruir um endereço IP de quatro bytes e um número de porta TCP de dois bytes.Mas então outros protocolos começaram a aparecer. O IPv4 estava prestes a ser substituído pelo "IPng", que tinha várias propostas de substituição concorrentes (OSI CLNP, TUBA, SIP, SIPP, CATNIP - em vários momentos da história), algumas com tamanhos de endereço de host mais curtos, mais longos e até variáveis , até que o IPv6 com endereços de 16 bytes finalmente seja definido.
Apenas enviar mais bytes não teria funcionado - não se esperava que servidores e clientes conhecessem o protocolo certo com base apenas no tamanho do endereço. (Por exemplo, e se você tiver um protocolo com endereço de 16 bytes + porta de 4 bytes, outro com endereço de 12 bytes + porta de 12 bytes?)
Além disso - embora isso tenha sido menos importante há 20 anos - atualmente, existem milhões de dispositivos NAT na Internet, que inspecionam e gerenciam conexões de controle FTP para que o host "externo" veja apenas endereços IPv4 globais, mesmo que o "interno" host enviou um local RFC1918. Mesmo sem o NAT, os firewalls com estado geralmente assistem aos comandos de controle para permitir automaticamente uma conexão de dados sem regras manuais.
Basicamente, isso significa que simplesmente o envio de mais números com
PORT
ouPASV
é garantido para muitas pessoas. Talvez alguns firewalls silenciosamente interpretem mal alguns bytes de endereço como a porta e descartem silenciosamente o restante; outros podem interromper a conexão ou simplesmente travar.Para evitar vários problemas como o acima, novos comandos tiveram que ser introduzidos para suporte a multiprotocolo no FTP.
Em 1993, a RFC 1639 (originalmente RFC 1545 ) introduziu o "endereço longo"
LPRT
e osLPSV
comandos, que eram comoPORT
&PASV
mas com um comprimento de endereço variável ; eles incluíram o identificador de tipo de protocolo também. (Porém, não mudou a sintaxe - endereço IPv6: a porta seria simplesmente enviada como 21 números em vez de seis.)No entanto, isso ainda não resolveu alguns dos problemas, como solicitar que um servidor use um protocolo diferente do da conexão de controle. A RFC também rapidamente ficou desatualizada; quando o IPv6 foi lançado apenas um ano depois, não pôde ser usado com o LPRT porque não havia um identificador de protocolo LPRT atribuído a ele (apenas para as várias propostas iniciais).
Para corrigir isso, o RFC 2428 em 1998 adicionou
EPRT
eEPSV
, também conhecido como "porta estendida" e "passiva estendida" , que também possuía um método para negociar um protocolo que ambas as extremidades suportam. Os comandos "estendidos" também enviam endereços em formato legível por humanos - para IPv6, isso significa usar notação hexa e dois pontos, em vez de uma série de números decimais separados.Em conclusão, o suporte ao IPv6 é a única diferença.
fonte
EPSV
resposta não inclui o endereço IP (quePASV
resposta faz). Isso evita problemas comuns quando o servidor FTP localizado atrás de um NAT não sabe seu endereço IP externo e confunde o cliente FTP enviando seu endereço interno.A diferença entre ativo e passivo já está respondida. Passivo estendido (EPSV) é apenas passivo com IPv4 e IPv6, porque a sintaxe da resposta ao PASV era específica para o IPv4 e, portanto, era necessário um novo comando para o IPv6. Mesmo com EPTR vs. PORT no modo ativo. Existe um comportamento ligeiramente diferente com o EPRT e o EPSV, pois eles podem conter apenas a porta, não o IP e a porta como PORT e PASV. Assim, a transferência de dados só pode ser feita entre os sistemas que possuem a conexão de controle. Com o PORT e o PASV, é possível criar uma conexão de dados entre outros sistemas (embora hoje seja considerado um design ruim e um risco de segurança).
fonte