Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
espec:servico_ftp [2008/07/15 14:14] – maziero | espec:servico_ftp [2020/08/18 22:53] (atual) – edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== File Transfer Protocol ====== | ||
+ | |||
+ | O serviço de transferência de arquivos via FTP (//File Transfer Protocol//) é um dos serviços mais usados na Internet. Ele pode ser usado para transferência de arquivos privados de usuários, usando autenticação via '' | ||
+ | |||
+ | ===== Servidores e clientes ===== | ||
+ | |||
+ | Vários servidores de FTP estão disponíveis gratuitamente em ambiente UNIX, entre eles são muito usados | ||
+ | |||
+ | Servidores de FTP podem ser acessados através de clientes em linha de comando, clientes gráficos específicos ou navegadores Web. A maioria dos sistemas operacionais dispõe de um cliente FTP em modo texto, acessível através do comando '' | ||
+ | |||
+ | Para acesso usando um navegador Web, a URL do serviço FTP tem a forma "'' | ||
+ | |||
+ | ===== O serviço FTP ===== | ||
+ | |||
+ | O serviço de FTP é provido por um //daemon// geralmente chamado '' | ||
+ | |||
+ | Em relação à autenticação, | ||
+ | |||
+ | * acesso **autenticado**: | ||
+ | * acesso **anônimo**: | ||
+ | |||
+ | Um exemplo de FTP autenticado: | ||
+ | |||
+ | < | ||
+ | (client)$ ftp espec.ppgia.pucpr.br | ||
+ | Connected to espec.ppgia.pucpr.br. | ||
+ | 220 (vsFTPd 1.0.0) | ||
+ | Name (espec: | ||
+ | 331 Please specify the password. | ||
+ | Password: | ||
+ | 230 Login successful. | ||
+ | Remote system type is UNIX. | ||
+ | Using binary mode to transfer files. | ||
+ | ftp> dir | ||
+ | 200 PORT command successful. Consider using PASV. | ||
+ | 150 Here comes the directory listing. | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | -rw-r--r-- | ||
+ | drwx------ | ||
+ | drwx-----x | ||
+ | 226 Directory send OK. | ||
+ | ftp> quit | ||
+ | </ | ||
+ | |||
+ | Um exemplo de FTP anônimo: | ||
+ | |||
+ | < | ||
+ | (client)$ ftp ftp.unicamp.br | ||
+ | Connected to zeus.unicamp.br. | ||
+ | 220 FTPserver da Unicamp - Master - Default | ||
+ | Name (ftp.unicamp.br: | ||
+ | 331 Anonymous login ok, send your complete email address as your password | ||
+ | Password: | ||
+ | 230- | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | For comments on this site, please contact < | ||
+ | |||
+ | You are user (162) of (300) simultaneous users allowed. | ||
+ | |||
+ | 230 Anonymous access granted, restrictions apply | ||
+ | Remote system type is UNIX. | ||
+ | Using binary mode to transfer files. | ||
+ | ftp> dir | ||
+ | 150 Opening ASCII mode data connection for file list | ||
+ | -rw-r--r-- | ||
+ | drwxrwsr-x | ||
+ | drwxrwsr-x | ||
+ | drwxrwsr-x | ||
+ | drwxrwsr-x | ||
+ | drwxrwsr-x | ||
+ | drwxrwsr-x | ||
+ | 226 Transfer complete | ||
+ | ftp> quit | ||
+ | </ | ||
+ | |||
+ | Quanto ao formato dos dados transferidos, | ||
+ | |||
+ | * **ASCII**: neste modo de operação, os caracteres enviados pelo servidor podem ser " | ||
+ | * **Binário**: | ||
+ | |||
+ | Os modos de operação binário ou ASCII podem ser selecionados na linha de comando do cliente FTP, através dos comandos '' | ||
+ | |||
+ | ===== Comandos FTP ===== | ||
+ | |||
+ | Um cliente FTP em linha de comando oferece um conjunto de comandos para operações envolvendo arquivos, como // | ||
+ | |||
+ | ^ Comando e exemplo ^ Significado ^ | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ===== Modos ativo e passivo ===== | ||
+ | |||
+ | O serviço FTP sempre inicia através de uma conexão à porta 21/TCP do servidor; essa conexão e responsável pelo controle das transferências de dados entre cliente e servidor, sendo por isso chamada de //control port//. A seguir, é necessário abrir uma segunda conexão entre ambos, sobre a qual ocorrerão as transferências de dados propriamente ditas; por isso, essa nova conexão é chamada //data port//. | ||
+ | |||
+ | Há duas formas de se estabelecer a conexão de dados. Na primeira forma, chamada **FTP Ativo**, o cliente cria uma porta TCP de número N>1023, e o servidor conecta a essa porta do cliente, a partir de sua porta 20/TCP. Essa forma de operação pode trazer problemas em algumas redes, pois o servidor precisa se conectar em uma porta do cliente, o que normalmente é bloqueado pelos // | ||
+ | |||
+ | O quadro a seguir detalha a operação em **modo ativo**: | ||
+ | |||
+ | ^ Passo ^ Cliente ^ Servidor ^ | ||
+ | | 1 | Pede conexão à porta 21/TCP do servidor | | | ||
+ | | 2 | | Aceita o pedido de conexão | | ||
+ | | 3 | Solicita autenticação de usuário | | | ||
+ | | 4 | | Autentica o usuário | | ||
+ | | 5 | Escolhe uma porta N>1023 e informa ao servidor | | | ||
+ | | 6 | | Recebe o número de porta N escolhido pelo cliente | | ||
+ | | 7 | Seleciona um conteúdo para // | ||
+ | | 8 | | Pede conexão à porta N/TCP do cliente,\\ a partir de sua porta 20/TCP | | ||
+ | | 9 | Aceita o pedido de conexão | | | ||
+ | | 10 | | Envia o conteúdo solicitado para a porta N/TCP | | ||
+ | | 11 | Recebe o conteúdo solicitado | | | ||
+ | |||
+ | Uma transferência em FTP ativo entre o cliente '' | ||
+ | |||
+ | < | ||
+ | Proto Recv-Q Send-Q Endereço Local Endereço Remoto | ||
+ | tcp 0 0 192.168.0.174: | ||
+ | tcp 0 0 192.168.0.174: | ||
+ | </ | ||
+ | |||
+ | Na segunda forma, denominada **FTP Passivo**, o servidor cria uma porta TCP de número aleatório N>1023 e informa ao cliente, que se conecta a essa porta do servidor. Dessa forma, todas as conexões sempre partem do cliente, o que permite atravessar a maioria dos // | ||
+ | |||
+ | O quadro a seguir detalha a operação em **modo passivo**: | ||
+ | |||
+ | ^ Passo ^ Cliente ^ Servidor ^ | ||
+ | | 1 | Pede conexão à porta 21/TCP do servidor | | | ||
+ | | 2 | | Aceita o pedido de conexão | | ||
+ | | 3 | Solicita autenticação de usuário | | | ||
+ | | 4 | | Autentica o usuário | | ||
+ | | 5 | Seleciona o modo passivo | | | ||
+ | | 6 | | Escolhe uma porta N>1023 e informa ao cliente | | ||
+ | | 7 | Recebe o número de porta N escolhido pelo servidor | | | ||
+ | | 8 | Seleciona um conteúdo para // | ||
+ | | 9 | Pede conexão à porta N/TCP informada pelo servidor | | | ||
+ | | 10 | | Aceita o pedido de conexão | | ||
+ | | 11 | Solicita o conteúdo desejado à porta 21/TCP | | | ||
+ | | 12 | | Envia o conteúdo solicitado usando a porta N/TCP | | ||
+ | |||
+ | Uma transferência em FTP passivo entre o cliente '' | ||
+ | |||
+ | < | ||
+ | Proto Recv-Q Send-Q Endereço Local Endereço Remoto | ||
+ | tcp 0 0 192.168.0.174: | ||
+ | tcp 0 0 192.168.0.174: | ||
+ | </ | ||
+ | |||
+ | Resumindo, em modo ativo: | ||
+ | |||
+ | * Fluxo de controle: client:M => server:21 | ||
+ | * Fluxo de dados: | ||
+ | |||
+ | E em modo passivo: | ||
+ | * Fluxo de controle: client:M => server:21 | ||
+ | * Fluxo de dados: client:P => server:N | ||
+ | |||