Pesquisar no blog

quarta-feira, 15 de setembro de 2010

Protocolos da Camada de Aplicação

SMTP (Simple Mail Transfer Protocol)

O protocolo SMTP é um mecanismo padrão de correio eletrônico da Internet. Este protocolo é dividido em duas partes: O envelope que contem os endereços do transmissor e receptor, e a mensagem que é formada por cabeçalhos (definem o transmissor, o receptor, o assunto e outras informações) e o corpo (informação de fato a ser enviada ao receptor).
O SMTP utiliza um esquema de endereçamento único que consiste de duas partes: a parte local que define um arquivo especial onde serão guardados os e-mails e o nome do domínio que é o nome atribuído ao servidor de e-mail, ambas as partes são separadas pelo caractere @.
O primeiro componente de um sistema de correio é o User Agent é um programa que cria, lê, responde, encaminha as mensagens e controla a caixa de correio. Existem dois tipos de User Agents: Os orientados a Comandos, desenvolvidos nos primórdios do correio eletrônico, e os Baseado em Interface Gráfica GUI, como por exemplo, o Outlook.
O SMTP por si só, apenas transfere e-mails simples no formato de 7-bits do ASCII. Para acabar com essa limitação, é utilizada uma extensão do SMTP: o MIME, que tem como função converter os dados no formato Não-ASCII em formato ASCCII e vice-versa. O MIME define 5 tipos de cabeçalhos que podem ser adicionados ao cabeçalho das mensagens SMTP, são eles: MIME-Version que contem a versão do MIME, o Content Type que define o tipo de dados usados no corpo da mensagem,  o Content Transfer-Encoding, que define o método de codificação, O Content ID que identifica uma mensagem em um ambiente de múltiplas linhas e o Content Description, que define se o corpo da mensagem é imagem, áudio ou vídeo.
Para transmitir um e-mail real um sistema deve possuir o MTA (Mail Transfer Agents) no cliente e no servidor. O SMTP usa comandos e respostas para transferir mensagens entre um cliente MTA e um servidor MTA. Para realizar uma transferência é necessário antes, estabelecer uma conexão SMTP, que só se inicia após concluir a conexão TCP, após estabelecer a conexão inicia-se a transferência de mensagens, que após o fim da transmissão é fechada a conexão.
A transferência de mensagens consiste de três estágios, sendo que no primeiro, o e-mail é enviado do cliente SMTP para o servidor local, que usa um software servidor SMTP. Já no segundo estágio, o servidor local usa um software cliente SMTP que envia o e-mail até o servidor remoto que deve está rodando infinitamente. Já no terceiro estágio o User Agent remoto usa outros protocolos para acessar a caixa de correio e verificar correspondências. Atualmente existem 2 tipos de protocolos: POP3 e IMAP4.


POP3(Post Office Protocol 3) e IMAP4(Internet Mail Access Protocol 4)

Esses dois protocolos são responsáveis pelo terceiro estágio da transferência de mensagens, ou seja, eles são responsáveis pelo acesso à caixa de correio e pela verificação das correspondências.
O POP3 é bastante simples tendo assim funcionalidade limitada. O acesso a caixa começa quando precisa baixar os e-mails da caixa de correio baseada no servidor. Para isso, o cliente abre uma conexão com o servidor na porta TCP 110, enviando o user name e o password. Assim o usuário pode acessar uma a uma, as suas mensagens de e-mail. O POP3 tem dois modos de operação: O Keep, onde as mensagens são mantidas após o processo de downloading, e o Delete, que é usado quando deseja-se apagar as mensagens da caixa de correio após downloading.
Toda vez que um cliente acessa o servidor utilizando o POP3 toda a caixa de correio é transferida, tornando assim o POP3 inconveniente, já que não permite organizar os e-mails no próprio servidor, nem ver os e-mails parcialmente. Foi procurando acabar com essa deficiência do POP3, que criaram o IMAP4, que é bem mais complexo, porém muito mais poderoso, como por exemplo: Verificar e-mails antes de baixá-los e selecionar quais serão baixados.


FTP (File Transfer Protocol)

O protocolo FTP é o mecanismo padrão oferecido pela internet para transferir arquivos de um host para outro. Embora pareça simples, a transferência de arquivos apresentam alguns problemas tratados de forma elegante pelo FTP, como: diferença na convenção de nomes, diferença nas formas de representação de texto e dados e diferença nas estruturas de diretórios.
Diferente de outras aplicações cliente-servidor, o FTP estabelece duas conexões, uma para informação de controle (porta TCP 21) e outra para transferência de dados (porta TCP 20). Com duas conexões a eficiência do FTP melhora bastante. A conexão de controle usa regras de comunicação simples, onde se transfere uma única linha por vez, no qual essa linha pode ser de comando ou de resposta. Já a conexão de dados usa regras complexas devido a diversidade de tipos de dados.
A conexão de controle é mantida durante toda iteração, enquanto a conexão de dados é aberta e fechada para cada arquivo transferido, porem só pode abrir uma conexão de dados caso já esteja aberta a conexão de controle. A comunicação na conexão de controle é dada de forma simples, utilizando apenas caracteres ASCII. Já a comunicação na conexão de dados, o cliente deve definir o tipo de dado, a estrutura de dados e o modo de transferências do arquivo a ser transferido. Após estabelecida a conexão, a transferência do arquivo pode ser efetuada, podendo realizar um downloading, uploading ou recuperação de uma lista de arquivos.


HTTP (HiperText Transfer Protocol)

O HTTP é um protocolo para facilitar a transferência de arquivos projetados para facilitar acesso à WWW, o protocolo permite transferência de dados na forma de textos simples, hipertexto, áudio, vídeo, entre outras formas. O HTTP funciona como uma combinação do FTP com o SMTP, mas usa apenas uma conexão TCP (porta 80).
No HTTP, o cliente envia um pedido ao servidor e o servidor responde ao cliente, onde o pedido e a resposta são feitas na forma de mensagem e ambas podem transportar dados. Porém o HTTP não é um protocolo com estados, ou seja, ele não guarda os pedidos anteriores.
O pedido no HTTP consiste de uma linha de pedido, cabeçalhos e corpo. A linha de pedido define o tipo de pedido, a versão do HTTP e o recurso URL que é formado da seguinte maneira: Protocolo://Host:Porta/path.
Já a resposta do HTTP consiste de uma linha de status, cabeçalhos e o corpo. A linha de status define o status da mensagem de resposta e é formado pela versão do HTTP, do código e da frase do status.
O corpo, tanto da resposta como do pedido, não é obrigatório. Enquanto os cabeçalhos das mensagens de respostas ou pedidos podem ser formados por uma ou mais linhas. Onde cada linha pertence há um dos 4 tipos: cabeçalho geral, cabeçalho de pedido, cabeçalho de resposta e cabeçalho de entidade.
Na versão HTTP 1.0 o protocolo estabelece uma conexão não-persistente ao TCP para cada pedido/resposta. Já na versão 1.1 a conexão permanece aberta para outros pedidos, encerrando a conexão após time-out ou um pedido de encerramento.
O protocolo HTTP suporta servidores Proxy, podendo assim manter um histórico das respostas aos pedidos solicitados, aumentando assim a eficiência na resposta e a latência da rede, alem de diminuir o tráfego.


HTTPS (HiperText Transfer Protocol Security)

O HTTPS é uma implementação do protocolo HTTP com uma camada adicional de segurança que torna a navegação da internet mais segura. Essa camada permite que os dados sejam transmitidos através de uma conexão criptografada e que se verifique a autenticidade do servidor e do cliente através de certificados digitais. O HTTPS utilizada a porta TCP 443.
O HTTP não oferece a mesma segurança do HTTPS porque as informações que navegam numa rede são transmitidas de forma muito parecida com a apresentada na tela. Ou seja, quando você envia uma senha junto com um numero de cartão, seus dados estão submetidos à interceptação por terceiros durante o caminho. Já com o HTTPS isso não é possível, pois esses dados são criptografados.
O HTTPS também garante que o site que o usuário está visualizando é quem diz ser. O dono do local na web cria um certificado e o submete a uma empresa certificadora, que verifica a autenticidade do mesmo e o assina.
É importante entender que o HTTPS protege apenas o caminho que os dados trafegam,ou seja, o protocolo não protege o cliente nem o servidor. 

quinta-feira, 9 de setembro de 2010

UML

A Unified Modeling Language (UML) é uma linguagem de modelagem e não uma metodologia de desenvolvimento, o que significa que ela não diz para você o que fazer primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar seu desenho e a comunicação entre objetos.
Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas padronizados. Junto com uma notação gráfica, a UML também especifica a semântica. É uma notação independente de processos, embora o RUP  tenha sido especificamente desenvolvido utilizando a UML.
É importante distinguir entre um modelo UML e um diagrama UML. O último é uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente.
Os objetivos da UML são a especificação, a documentação e a estruturação para sub-visualização e maior visualização lógica do desenvolvimento completo de um sistema de informação. A UML é um modo de padronizar as formas de modelagem.
Embora a UML defina uma linguagem precisa, ela não é uma barreira para futuros aperfeiçoamentos nos conceitos de modelagem. O desenvolvimento da UML foi baseado em técnicas antigas e marcantes da orientação a objetos, mas muitas outras influenciarão a linguagem em suas próximas versões. Ela é base para muitas ferramentas de desenvolvimento, incluindo modelagem visual, simulações e ambientes de desenvolvimento.

Diagramas Estruturais

·         Diagrama de classes - mostra classes e os relacionamentos entre elas;
·         Diagrama de objetos - variação do diagrama de classes só que mostra os objetos instanciados;
·         Diagrama de componentes - mostra os componentes de programação de alto nível;
·         Diagrama de instalação - descreve os componentes de hardware e software e sua interação com outros elementos de suporte ao processamento;
·         Diagrama de pacotes - descreve os pacotes e seus agrupamentos lógicos mostrando as dependências entre estes;
·         Diagrama de estrutura - descreve a colaboração interna de classes, interfaces ou componentes para especificar uma funcionalidade;

            Diagramas Comportamentais

·         Diagrama de Caso de Uso - mostra atores (usuários do sistema), casos de uso (os cenários onde usam o sistema), e seus relacionamentos;
·         Diagrama de estados - mostra estados, mudanças de estado e eventos  (Máquina de Estado);
·         Diagrama de atividade - mostra  atividades e as mudanças de uma atividade para outra com os eventos ocorridos em alguma parte do sistema;

            Diagramas de Interação

·         Diagrama de sequência - mostra objetos e uma sequência das chamadas do método feitas para outros objetos;
·         Diagrama de Interatividade - é uma variação do diagrama de atividades mostrando como elas trabalham em uma sequência de eventos;
·         Diagrama de colaboração - mostra objetos e seus relacionamentos, de troca de mensagens;
·         Diagrama de tempo - apresenta o comportamento dos objetos e sua interação em uma escala de tempo