Baixe o app para aproveitar ainda mais
Prévia do material em texto
FACULDADE ESTÁCIO DE TERESINA CURSO: BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: FUNDAMENTOS DE REDES DE COMPUTADORES DOCENTE: KEVENY BORGES DOS SANTOS TURMA: 1001 SEMESTRE LETIVO: 2020.1 TURNO: MANHÃ Pesquise sobre as características dos tipos de Protocolos utilizados nas camadas de Rede, de acordo com a imagem na página 16 do Slide da Aula 02. SMTP Protocolo de Transferência de Correio Simples (do inglês: Simple Mail Transfer Protocol, abreviado SMTP) é o protocolo padrão de envio de mensagens de correio eletrônico através da Internet entre dois dispositivos computacionais (emissor e receptor), definido na RFC 821. É um protocolo simples, em texto plano, de somente de envio (semelhante a um carteiro),onde um ou vários destinatários de uma mensagem são especificados (e, na maioria dos casos, validados) sendo, depois, a mensagem transferida, por padrão via porta TCP 25 (ou 465 para conexão criptografada com SSL), podendo usar a porta alternativa 587. O SMTP por ter a função somente de envio, isto é, não permite que um usuário descarregue/solicite as mensagens de um servidor. Assim para a leitura é necessário o uso de um software cliente de e-mail com suporte ao protocolo de leitura POP ou IMAP. A gestão de nomes DNS de um servidor SMTP de um certo domínio, é possibilitada por sua entrada MX (Mail eXchange), que aponta para os servidores determinados que deverão receber as mensagens de e- mail. História A utilização em massa do SMTP remonta aos anos 1980. Na altura, era um complemento ao UUCP, que era mais adequado para transferências de correio eletrônico entre máquinas sem ligação permanente. Por outro lado, o desempenho do SMTP aumenta se as máquinas envolvidas, emissor e receptor, se encontrarem ligadas permanentemente. O Sendmail foi um dos primeiros (se não o primeiro) agente de transporte de email a implementar SMTP. Em 2001, havia, pelo menos, cerca de 50 programas que implementavam SMTP como cliente (emissor) ou servidor (receptor). Outros servidores SMTP muito conhecidos são: exim, Postfix, Qmail, Microsoft Exchange Server e o Mail da Apple, disponível apenas para usuários do Mac OS ou do iOS para dispositivos móveis da Apple. Dada a especificação inicial, que contemplava apenas texto ASCII, este protocolo não é ideal para a transferência de arquivos (também chamados de ficheiros). Alguns standards foram desenvolvidos para permitir a transferência de ficheiros em formato binário através de texto simples, como o caso do MIME. Hoje em dia, quase todos os servidores SMTP suportam a extensão 8BITMIME. Para testar um servidor SMTP, com relativa facilidade, pode-se utilizar o protocolo Telnet. https://pt.wikipedia.org/wiki/L%C3%ADngua_inglesa https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/E-mail https://pt.wikipedia.org/wiki/Internet https://tools.ietf.org/html/rfc821 https://pt.wikipedia.org/wiki/Texto_plano https://pt.wikipedia.org/wiki/Porta_(redes_de_computadores) https://pt.wikipedia.org/wiki/Transmission_Control_Protocol https://pt.wikipedia.org/wiki/SSL https://pt.wikipedia.org/wiki/Software https://pt.wikipedia.org/wiki/Cliente_de_email https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/POP3 https://pt.wikipedia.org/wiki/IMAP https://pt.wikipedia.org/wiki/Domain_Name_System https://pt.wikipedia.org/wiki/Mx_record https://pt.wikipedia.org/wiki/Anos_1980 https://pt.wikipedia.org/wiki/UUCP https://pt.wikipedia.org/wiki/Correio_eletr%C3%B4nico https://pt.wikipedia.org/wiki/Sendmail https://pt.wikipedia.org/wiki/Agente_de_transporte_de_email https://pt.wikipedia.org/wiki/Exim https://pt.wikipedia.org/wiki/Postfix_(software) https://pt.wikipedia.org/wiki/Qmail https://pt.wikipedia.org/wiki/Microsoft_Exchange_Server https://pt.wikipedia.org/wiki/Microsoft_Exchange_Server https://pt.wikipedia.org/wiki/ASCII https://pt.wikipedia.org/wiki/Ficheiro https://pt.wikipedia.org/wiki/Ficheiro https://pt.wikipedia.org/wiki/Padr%C3%A3o https://pt.wikipedia.org/wiki/MIME https://pt.wikipedia.org/wiki/Telnet Exemplo de uma sessão SMTP Após o estabelecimento de uma conexão entre emissor (cliente) e receptor (servidor), o exemplo seguinte ilustra uma sessão SMTP. Na conversação seguinte, "C:" designa as mensagens do cliente, e "S:" as mensagens do servidor. Na maioria dos computadores, uma conexão pode ser estabelecida usando o comando telnet no emissor, por exemplo: C: MAIL FROM:<Smith@Alpha.ARPA> S: 250 OK C: RCPT TO:<Jones@Beta.ARPA> S: 250 OK C: RCPT TO:<Green@Beta.ARPA> S: 550 No such user here C: RCPT TO:<Brown@Beta.ARPA> S: 250 OK C: DATA S: 354 Start mail input; end with <CRLF>.<CRLF> C: Blah blah blah... C: ...etc. etc. etc. C: <CRLF>.<CRLF> S: 250 OK Embora opcional, praticamente todos os clientes questionam o servidor sobre quais as extensões SMTP que este suporta, utilizando o comando EHLO (em oposição ao HELO ilustrado acima), e o corpo da mensagem (depois de DATA) segue tipicamente em formato MIME. Segurança e spamming Uma das limitações da especificação SMTP inicial é que não existe método de autenticação dos emissores. Como tal, foi-lhe adicionada a extensão SMTP-AUTH. Apesar disso, o spamming continuava a ser um problema. Alterar o SMTP extensivamente ou substituí-lo completamente não se torna prático, devido à forte utilização do SMTP e aos efeitos que daí podiam advir. O Internet Mail 2000 é uma proposta nesse sentido. É por essa razão que existem várias propostas para protocolos alternativos que iriam assistir a operação SMTP. O Grupo de Pesquisa Anti-Spam do Internet Research Task Force encontra-se a estudar várias propostas para se suportar a autenticação do emissor de uma forma flexível, leve e escalável. A proposta aparentemente mais sólida parece ser o protocolo Sender Policy Framework. FTP FTP é a sigla para File Transfer Protocol, um termo que, traduzido para o português, significa Protocolo de Transferência de Arquivos. https://pt.wikipedia.org/wiki/Cliente-servidor https://pt.wikipedia.org/wiki/Servidor https://pt.wikipedia.org/wiki/Telnet mailto:FROM:%3CSmith@Alpha.ARPA mailto:TO:%3CJones@Beta.ARPA mailto:TO:%3CGreen@Beta.ARPA mailto:TO:%3CBrown@Beta.ARPA https://pt.wikipedia.org/wiki/MIME https://pt.wikipedia.org/w/index.php?title=SMTP-AUTH&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Spamming https://pt.wikipedia.org/wiki/Internet_Mail_2000 https://pt.wikipedia.org/w/index.php?title=Anti-Spam_Research_Group&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Internet_Research_Task_Force https://pt.wikipedia.org/wiki/Sender_Policy_Framework Ele é basicamente um tipo de conexão que permite a troca de arquivos entre dois computadores conectados à internet. Com isso, você pode enviar qualquer coisa para uma outra máquina ou armazená-los em um servidor FTP, ficando ela sempre disponível para o usuário acessar. Para que serve o FTP? Imagine que você faça parte de uma grande agência especializada em produção de vídeos. Ou tenha que criar um site de negócios com funcionalidades complexas e recursos de programação que ocupam muitas páginas de um script de linguagem. Por mais que seu computador tenha espaço em disco suficiente para armazenar tudo, é sempre recomendado usar algum recurso que divida o peso dos conteúdos e que eles estejam facilmente acessíveis para quando alguém quiser usá-los. E como geralmente várias pessoas trabalham em um projeto ao mesmo tempo, é comum também querer dividir as tarefas e compartilhar os conteúdos criados para que o andamento das atividades seja dinâmico e eficiente. O FTP serve exatamente para fazer a ponte de comunicação entre essas pessoas através dos seus computadores conectados à internet. Eles se comunicam através de um servidor online, que é o local onde essas informações ficam hospedadas e armazenadas. E, como curiosidade:sabia que o protocolo FTP é usado em algumas das atividades mais simples na internet? O simples ato de você acessar um site, por exemplo, requer que seu computador peça ao servidor onde ele está hospedado para que faça o download dos dados daquela página. É assim que você consegue visualizar todo o conteúdo disponibilizado nela. Antes disso, claro, alguém já havia anteriormente enviado essas informações para o servidor através do FTP, possibilitando o seu acesso e de qualquer outro usuário interessado. Como funciona o FTP? No processo de transferência e recebimento de arquivos pela internet, o FTP funciona em torno de dois protagonistas: o cliente e o servidor. O cliente é o computador que solicita a conexão para ter acesso aos dados já hospedados na internet. Já o servidor é um outro computador que atua como um ambiente virtual, recebendo a solicitação do cliente para a transferência dos arquivos nele hospedados. O computador que atua como cliente consegue acesso aos arquivos hospedados na internet através de um programa que se conecta ao computador que atua como servidor. É ele quem também faz a transferência dos arquivos do computador para o servidor. Já o computador que atua como servidor geralmente possui programas disponíveis para permitir a conexão de computadores externos a ele. Ele simplesmente autoriza a transferência dos arquivos armazenados nele para o cliente que está solicitando o acesso. Essa é a dinâmica de comunicação entre usuários de computadores que querem compartilhar dados, informações ou conteúdos entre si, seja para fins pessoais ou profissionais. Essa operação precisa ser segura. Por isso, ela sempre pede alguma autenticação para proteger as transferências de dados. Ou seja, é obrigatório ter um login e uma senha de acesso para transferir arquivos pelo FTP. Segue, abaixo, um resumo do passo a passo do que acontece ao usar usar um sistema FTP. • Você inicia um programa de FTP no seu computador que atua como cliente; • Você insere um usuário e senha de acesso no programa de FTP; • O servidor recebe o pedido de conexão, reconhece os dados e redireciona o seu acesso para o diretório onde estão os arquivos; • Você já fez o intercâmbio de dados, transferindo arquivos do seu computador para o servidor e vice-versa; • Depois de realizar todas as tarefas, a conexão entre computador e servidor é encerrada. O que é um servidor FTP? Neste artigo já usamos os termos “FTP”, “cliente” e “servidor”. E você já sabe o que cada um deles significa, para que servem e como interagem entre si. Chegou a hora de conhecer mais um termo: o próprio “servidor FTP”. Um servidor FTP é o servidor que oferece um serviço de acesso a um disco rígido ou servidor de arquivos criados através de um protocolo FTP. É ele que armazena as informações ou dados enviados por um usuário e que estarão acessíveis por qualquer membro da internet. Conseguiu sacar a diferença entre FTP e servidor FTP? Basicamente, o primeiro é um tipo de protocolo de transporte e entrega de arquivos. O segundo é um ambiente virtual gerenciável por um software instalado em qualquer computador. Servidores FTP são muito usados quando se trabalha com grandes volumes de dados compartilhados pela rede. E eles são bastante úteis para gerenciar essas informações entre diversos clientes que solicitam o acesso a eles. HTTP O que é HTTP HTTP é um protocolo de transferência que possibilita que as pessoas que inserem a URL do seu site na Web possam ver os conteúdos e dados que nele existem. A sigla vem do inglês Hypertext Transfer Protocol. Esse sistema é a base da comunicação que existe em toda a Internet em que os sites e conteúdos que tragam hiperlinks possam ser encontrados mais facilmente pelo público por meio de um clique do mouse ou um toque na tela. Qualquer servidor que você escolha para hospedar o site da sua empresa tem um programa projetado para receber solicitações HTTP. Portanto, o navegador que você usa é um cliente HTTP que envia solicitações constantemente ao seu servidor. Assim, quando um usuário acessa ou digita a URL do seu site, o navegador cria uma solicitação HTTP e a envia ao endereço de IP indicado pela URL. Dessa forma, o servidor recebe essa solicitação e envia os arquivos associados que, nada mais são, do que os sites que acessamos na Internet. Qual é a origem do HTTP? O termo HTTP foi cunhado por Ted Nelson em 1965 no Projeto Xanadu, que por sua vez foi inspirado numa visão dos anos 30 tida por Vannevar Bush referente ao sistema https://comunidade.rockcontent.com/como-inserir-hiperlinks/ https://comunidade.rockcontent.com/como-inserir-hiperlinks/ https://rockcontent.com/blog/host/ https://rockcontent.com/blog/url/ “memex” de recuperação e gestão de informação baseado em microfilmes descrito em seu ensaio de 1945 “As We May Think“. Tim Berners-Lee e sua equipe foram os responsáveis por inventar o HTTP original, juntamente com o HTML e a tecnologia associada para um servidor da Web e um navegador da Web baseado em texto. Berners-Lee propôs pela primeira vez o projeto “WorldWideWeb” em 1989 – hoje conhecido como World Wide Web. A primeira versão do protocolo tinha apenas um método, chamado GET, que solicitava uma página de um servidor e tinha como resposta a página HTML. A primeira versão documentada do HTTP foi liderada por Dave Raggett em 1995 e sua finalidade era expandir o protocolo com operações estendidas, negociação estendida, informação mais rica, vinculada a um protocolo de segurança que se tornou mais eficiente adicionando métodos e campos de cabeçalho adicionais. O HTTP foi rapidamente adotado pelos principais desenvolvedores de navegadores no início de 1996. O padrão HTTP / 1.1, como definido no RFC 2068, foi oficialmente lançado em janeiro de 1997, enquanto melhorias e atualizações do padrão HTTP / 1.1 vieram em junho de 1999. Por fim, em 2007, o HTTPbis Working Group foi formado, em parte, para revisar e esclarecer a especificação HTTP / 1.1. Em junho de 2014, o WG divulgou uma especificação atualizada de seis partes da obsoleta RFC 2616. Como é o funcionamento do HTTP? HTTP é um protocolo baseado em texto sem conexão. Isso significa que as pessoas que acessam o site da sua empresa enviam solicitações a servidores que as exibem na forma do seu site em formato de texto, imagens, e outros tipos de mídia. Depois que a solicitação é atendida por um servidor, a conexão entre o usuário e o servidor é desconectada. Uma nova conexão deve ser feita para cada solicitação, isto é, cada vez que alguém acessa o seu site. Em suma, quando alguém digita a URL do seu site em um navegador, é isto que acontece: 1. se a URL pertencer a um domínio próprio, o navegador primeiro se conecta a um servidor e recuperará o endereço IP correspondente ao servidor; 2. o navegador se conecta ao servidor e envia uma solicitação HTTP para a página da web desejada (que, neste exemplo, é o seu site); 3. o servidor recebe a solicitação e verifica a página desejada. Se a página existir, o servidor a mostrará. Se o servidor não conseguir encontrar a página solicitada, ele enviará uma mensagem de erro HTTP 404, ou seja, página não encontrada; 4. o navegador, então, recebe a página de volta e a conexão é fechada; http://worrydream.com/refs/Bush%20-%20As%20We%20May%20Think%20(Life%20Magazine%209-10-1945).pdf https://www.w3.org/History/19921103-hypertext/hypertext/WWW/Protocols/HTTP.html https://datatracker.ietf.org/wg/httpbis/charter/ https://imasters.com.br/noticia/apos-15-anos-rfc2616-que-define-o-protocolo-http1-1-e-atualizada https://rockcontent.com/blog/erro-404/ 5. caso a página exista (e é isso que se espera), o navegador a analisa e procura outros elementos necessários para concluir a sua exibição, o que inclui seus textos, imagens e afins; 6. para cada um desses elementos, o navegador faz conexões adicionais e solicitações HTTPpara o servidor para cada elemento; 7. quando o navegador terminar de carregar todos os elementos, a página será carregada na janela do navegador. Qual é a diferença entre HTTP e HTTPS? Cada URL que começa com HTTP usa um tipo básico de “protocolo de transferência de hipertexto”. Esse padrão de protocolo de rede é o que permite que navegadores e servidores se comuniquem através da troca de dados. Ou seja, por se tratar de um protocolo da camada de aplicação, o HTTP foca em apresentar a informação, se preocupando menos com a maneira como essa informação é transmitida de um ponto para outro. Isso quer dizer que o HTTP pode ser invadido e alterado, tornando as informações trocadas entre o site da sua empresa e a pessoa que o visita vulneráveis. É por isso que lojas virtuais não devem ter páginas construídas em HTTP, pois não são tão seguras para que os usuários insiram informações necessárias para a compra como dados pessoais e de cartão de crédito. Sites assim devem ser feitos em HTTPS. Porém, ao contrário do que alguns pensam, o HTTPS não é o oposto do HTTP. Essencialmente, ambos se referem ao mesmo “protocolo de transferência de hipertexto” que permite ao usuário ver na tela os dados solicitados por meio da inserção da URL. Contudo, o HTTPS tem como diferencial ser mais avançado e seguro. Em outras palavras, o HTTPS é uma extensão do HTTP. O “S” vem da palavra “secure” (“segurança” em inglês) e costuma ser oferecido pelo certificado SSL, oferecidos pela maioria dos servidores. Ele oferece uma conexão criptografada entre o servidor e o navegador, de maneira que o usuário possa inserir informações com mais segurança. É por isso que a maioria dos e-commerces têm sites em HTTPS e o próprio navegador informa que é seguro digitar dados pessoais caso deseje realizar alguma ação, como uma compra online. Ou seja, sem HTTPS, qualquer dado inserido no site (nome, e-mail, senhas, cartão de crédito, e afins) são enviados em forma de texto simples, sendo, portanto, suscetíveis a intercepção ou interceptação. Por isso, mesmo se o site da sua empresa for voltado somente a informações sobre o seu negócio, opte por tê-lo em HTTPS. Inclusive, desde julho de 2018, o Google passou a marcar os sites sem HTTPS como não seguros, e isso é letal para o seu ranqueamento orgânico, pois sites seguros têm maior consideração do algoritmo do Google para aparecerem nos resultados das buscas. https://rockcontent.com/blog/e-commerce-guia/ https://rockcontent.com/blog/ssl/ https://rockcontent.com/blog/como-migrar-seu-site-para-https/ Por fim, os sites têm outras linguagens como o XML que se trata de uma uma linguagem de marcação que define um conjunto de regras para codificação de documentos. Portanto, não deve ser confundida com o HTTP (que você já sabe o que é e como funciona). TELNET Telnet é um protocolo de rede na Internet ou redes locais para proporcionar uma facilidade de comunicação baseada em texto interativo bidirecional usando uma conexão de terminal virtual. Os dados do usuário são intercalados em banda com informações de controle Telnet em um byte de conexão 8-bit de dados orientado sobre o Transmission Control Protocol (TCP). O Telnet foi desenvolvido em 1969 com a chegada do RFC 15, prorrogado no RFC 854, e padronizado como Internet Engineering Task Force (IETF) Internet STD Padrão 8, um dos primeiros padrões da Internet. Definição O protocolo Telnet é um protocolo standard de Internet que permite a interface de terminais e de aplicações através da Internet. Este protocolo fornece as regras básicas para permitir ligar um cliente (sistema composto de uma afixação e um teclado) a um intérprete de comando (do lado do servidor). O Telnet existe há mais de 40 anos, muito antes de aparecer a Internet. Este sistema de transmissão de dados foi inventado pelas Forças Armadas Americanas para transmissão de dados entre bases militares. Foi disponibilizado ao público em 1977, tendo sido os radioamadores os primeiros a aproveitá-lo. Portanto, pode-se dizer que a Internet trabalha por cima do Telnet, servindo-se do seu sistema para funcionar. A transmissão de dados pelo Telnet utiliza software específico que os codifica, permitindo utilizar centenas de portas por nós definidas e reencaminha-las, para o PC que pretendemos. Se tivermos uma rede interna com vários pc's instalados, utilizando um router, abrimos uma porta para cada PC e, com o mesmo IP, os dados fluem direccionados e reencaminhados simultaneamente, sem qualquer problema. O utilizador que recebe dados combina com o seu correspondente a porta de passagem para o sistema funcionar. A máquina que envia os dados fá-lo em pacotes. Informa o correspondente que tem dados. Este, por sua vez, dá o OK para a transmissão. O pacote é enviado com a informação do número de bits que este tem. Só depois do correspondente ter informado que recebeu os bits todos, é que pede o segundo pacote. Se por qualquer motivo informa que os bits não chegaram todos, o envio do pacote é repetido. Muita coisa fica ainda por dizer sobre este sistema. O protocolo baseia-se numa conexão TCP para enviar dados em formato ASCII codificado em 8 bits entre os quais se intercalam sequências de controle para o Telnet. Fornece assim um sistema orientado para a comunicação, bidireccional (half-duplex), codificado em 8 bits fácil de aplicar. Com essa conexão é possível o acesso remoto para qualquer máquina ou equipamento que esteja sendo executado em modo servidor. Conceitos fundamentais O protocolo Telnet assenta em três conceitos fundamentais que serão explicados a seguir: O paradigma do terminal rede virtual (NVT, Network Virtual Terminal); O princípio de opções negociadas; As regras de negociação. https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Internet https://pt.wikipedia.org/wiki/Rede_de_%C3%A1rea_local https://pt.wikipedia.org/wiki/Terminal_(inform%C3%A1tica) https://pt.wikipedia.org/wiki/Transmission_Control_Protocol https://tools.ietf.org/html/rfc15 https://tools.ietf.org/html/rfc854 https://pt.wikipedia.org/wiki/Internet_Engineering_Task_Force https://pt.wikipedia.org/wiki/Internet https://pt.wikipedia.org/wiki/ASCII Terminal virtual O Telnet consiste em criar abstrações no terminal, fazendo com que qualquer cliente ou servidor se comunique com outro host sem conhecer as suas características. A comunicação de NVT, comumente chamada de Terminal Rede Virtual, fornece uma base padrão de: • Caracteres de 7 bits ASCII • Três caracteres de controle • Cinco caracteres de controle opcionais • Um jogo de sinais de controle básico Opções negociadas As opções negociadas permitem que alguns terminais proponham serviços adicionais que não são definidos nas especificações básicas. Esses serviços adicionais permitem a utilização de funções avançadas em forma de opções, fazendo iniciar os pedidos para solicitar a autorização ao sistema distante a ativação desse serviço ou não. Qualquer um dos lados da rede pode emitir o sinal e logo em seguida a outra deve responder se aceita ou não a liberação da opção requerida. Caso o pedido seja para desativar a opção, quem recebe a mensagem não deve recusar a mensagem, para ser compatível com o modelo NVT. Regras de negociação As regras de negociação de opções podem evitar um caso de bloqueio do pedido, pois os pedidos só devem ser emitidos quando acontece a mudança de um modo. Caso exista um envio para mudança esse deve ser inserido no fluxo de dados apenas no lugar onde tem efeito, o receptor da mensagem só deve adotá-lo quando não se encontrar no mesmo modo pedido. Especificações Este protocolo é um protocolo básico, no qual se apoiam outros protocolos da sequência TCP/IP (FTP, SMTP, POP3,…). As especificações de Telnet não mencionam autenticação porque o Telnet está totalmente separado das aplicaçõesque o utilizam (o protocolo FTP define uma sequência de autenticação acima do Telnet). Além disso, o protocolo Telnet é um protocolo de transferência de dados não seguro, o que quer dizer que os dados que veicula circulam às claras na rede (de maneira não codificada). Quando o protocolo Telnet é utilizado para ligar um hóspede distante à máquina na qual é aplicado como servidor, este protocolo é atribuído à porta 23. Se fizermos uma exceção às opções e às regras de negociação associadas, as especificações do protocolo Telnet são básicas. A transmissão de dados através de Telnet consiste unicamente em transmitir bytes no fluxo TCP (o protocolo Telnet precisa que os dados devem, por default - isto é, se nenhuma opção precisar o contrário - ser agrupados num tampão antes de serem enviados. Mais concretamente, isto significa que por default os dados são enviados linha por linha). Quando o byte 255 é transmitido, o próximo deve ser interpretado como um comando. O byte 255 é assim nomeado IAC (Interpret As Command, traduza-se "interpretar como um comando"). Os comandos são descritos posteriormente. As especificações básicas do protocolo Telnet estão disponíveis no RFC 854, enquanto as numerosas opções são descritas nos RFC 855 a 861 https://pt.wikipedia.org/wiki/TCP/IP https://pt.wikipedia.org/wiki/FTP https://pt.wikipedia.org/wiki/SMTP https://pt.wikipedia.org/wiki/POP3 https://pt.wikipedia.org/wiki/Lista_de_portas_dos_protocolos_TCP_e_UDP https://pt.wikipedia.org/wiki/Default_(computa%C3%A7%C3%A3o) https://tools.ietf.org/html/rfc854 https://tools.ietf.org/html/rfc855 BGN O BGP [RFCs 1771,1772,1773,1774,1657] é um protocolo de roteamento entre sistemas autônomos (ASs), criado para uso nos roteadores principais da Internet.[1] O BGP foi projetado para evitar laços de roteamento em topologias arbitrárias, o mais sério problema de seu antecessor, o EGP (Exterior Gateway Protocol). Outro problema que o EGP não resolve - e é abordado pelo BGP - é o do Roteamento Baseado em Política (policy-based routing), um roteamento com base em um conjunto de regras não técnicas, definidas pelos Sistemas Autônomos. Sendo assim, o BGP melhora o EGP. Descrição detalhada A função primária de um sistema BGP é trocar informação de acesso à rede, inclusive informação sobre a lista das trajetórias dos ASs, com outros sistemas BGP. Esta informação pode ser usada para construir um gráfico da conectividade dos ASs a partir do qual laços de roteamento podem ser detectados e reforçadas as políticas de decisão com outros ASs. Quando um roteador se conecta à rede pela primeira vez, os roteadores BGP trocam suas tabelas de rotas completas. De maneira similar, quando a tabela de rotas muda, roteadores enviam a parte da tabela que mudou. Roteadores BGP não enviam regularmente atualizações de roteamento planejadas e as atualizações de rotas informam somente a trajetória ótima para uma rede. BGP usa uma única métrica para determinar a melhor trajetória para uma dada rede. Esta métrica consiste de número arbitrário que especifica o grau de preferência de um enlace em particular e é atribuído pelo administrador da rede. Este número pode ser baseado em qualquer critério: número de ASs que a trajetória cruza, estabilidade, velocidade, retardo ou custo. Os 4 tipos de mensagens BGP são: 1. Abertura (open message) – abre uma sessão de comunicação entre BGP pares (peers) e é a primeira mensagem enviada de cada lado depois que uma conexão de protocolo de transporte é estabelecida; essa mensagem é confirmada usando uma mensagem de keep-alive enviada pelo roteador par e tem que ser confirmada antes das atualizações, notificações e outras mensagens de keep-alive. 2. Atualização (update message) – é usada para informar atualizações de rotas para outros sistemas BGP, permitindo que os roteadores possam construir uma visão consistente da topologia da rede, usando o TCP para garantir uma entrega confiável; essas mensagens podem retirar rotas inviáveis (unfeasible routes) da tabela de roteamento e simultaneamente informar uma nova rota. 3. Notificação (notification message) – é enviada quando uma condição de erro é detectada; elas são usadas para encerrar uma sessão ativa e informar a quaisquer roteadores conectados do porquê do encerramento da sessão. 4. Keep-alive – notifica aos roteadores BGP pares que um dispositivo está ativo. Formatos do pacote 1. Cabeçalho – todos os tipos de mensagens usam o cabeçalho básico mais alguns campos adicionais, exceto a mensagem Keep-alive que usa somente o cabeçalho básico; seus campos são: • Marcador (Marker) – contém um valor de autenticação que o recebedor pode verificar. • Comprimento (Length) – indica o comprimento total da mensagem em bytes. • Tipo (Type) – especifica o tipo de mensagem. • Dados (Data) – opcional, contém informação das camadas superiores. 2. Abertura –fornece o critério de troca para que dois roteadores BGP estabeleçam uma relação par (peer relationship); seus campos são: https://pt.wikipedia.org/wiki/Sistema_aut%C3%B4nomo_(Internet) https://pt.wikipedia.org/wiki/Internet https://pt.wikipedia.org/wiki/Border_Gateway_Protocol#cite_note-1 https://pt.wikipedia.org/wiki/Exterior_Gateway_Protocol https://pt.wikipedia.org/wiki/Exterior_Gateway_Protocol • Versão (Version) – informa o número da versão do protocolo BGP. • Sistema Autônomo (Autonomous System - AS)– número do AS do enviador. • Hold-time – indica o número máximo de segundos que podem decorrer, sem receber uma mensagem, antes que o transmissor seja assumido como não funcional. • Identificador do BGP (BGP Identifier) – fornece um identificador BGP do transmissor (endereço IP) determinado na inicialização sendo idêntico para todas as interfaces locais e para todos os BGPs pares. • Comprimento dos parâmetros opcionais (Optional Parameters Length) – indica o comprimento do campo opcional de parâmetros (se existir). • Parâmetros opcionais (Optional Parameters) – contém uma lista dos parâmetros opcionais (se existir); atualmente somente um tipo está definido: informação de autenticação. 3. Atualização – ao receberem um pacote de mensagem de atualização, os roteadores estarão aptos a adicionar ou excluir entradas específicas de suas tabelas de roteamento; seus campos são: • Comprimento das Rotas Inviáveis (Unfeasible Routes Length) – indica o comprimento total do campo de retirada de rotas ou indica que o campo não está presente. • Retirada de Rotas (Withdrawn Routes) – contém a lista dos prefixos dos endereços IP para as rotas que estão sendo retiradas de serviço. • Comprimento total dos atributos de trajetória (Total Path Attribute Length) – indica o comprimento total do campo de atributos da trajetória ou que indica que o campo não está presente. • Atributos da Trajetória (Path Attributes) – descreve as características da trajetória informada. • Informação de Acessibilidade da Camada de Rede (Network Layer Reachability Information) – contém a lista de prefixos dos endereços IP para as rotas informadas. 4. Notificação – este pacote é usado para indicar algum tipo de condição de erro para os pares do roteador de origem; seus campos são: • Código de Erro (Error Code) – indica o tipo de erro que ocorreu. • Sub-código de Erro (Error Subcode)– fornece informação mais específica sobre a natureza do erro informado. • Dados do Erro (Error Data) – contém os dados baseados no código de erro e campos de sub- código de erro; este campo é usado para diagnosticar a causa para a mensagem de notificação. Formato do cabeçalho Cada pacote BGP contém um cabeçalho cujo principal propósito é identificar a função do pacote em questão. As seguintes descrições resume a função de cada campo do cabeçalho BGP. • Marcador (16 bytes) – Contém um valor de autenticação que o destinatário da mensagem poderá prever. • Comprimento (2 bytes)– Indica o comprimento total da mensagem em bytes.• Tipo (1 byte) – Especifica o tipo de mensagem desnecessária,como um dos seguintes: o Abrir; o Atualizar; o Notificação; o Keep Alive (Manter vivo) • Dados (tamanho variável) – Contém informações da camada superior nesse campo opcional. A última versão do BGP, o BGP4, foi projetada para suportar os problemas causados pelo grande crescimento da Internet. OSPF O OSPF - Open Shortest Path First - é um protocolo de roteamento para redes que operam com protocolo IP; desenvolvido pelo grupo de trabalho da IGPs (Interior Gateway Protocol) da IETF (Internet Engineering Task Force) e descrito inicialmente em 1989 pela RFC 1131. Baseado no algoritmo SPF - Shortest Path First (menor rota primeiro), o OSPF foi criado para substituir o protocolo RIP empregado no final da década de 1980 na então Arpanet (atual Internet) e que apresentava diversos problemas e limitações para operar satisfatoriamente em uma rede de porte. Atualmente o OSPF é um dos protocolos de roteamento mais empregados, sendo suportado pela maioria dos roteadores, assim como por servidores que implementem os sistemas operacionais Linux e Unix. Versátil, o OSPF pode ser empregado tanto a redes de pequeno quanto grande porte. Princípio de funcionamento Embora possua inúmeros detalhes de implementação e configuração, o princípio de roteamento do OSPF é relativamente simples. Ao invés de manter uma tabela com todas as rotas possíveis (como faz o protocolo RIP), cada nó (roteador) OSPF contêm dados sobre todos os links da rede. Cada entrada da tabela de roteamento OSPF contém um identificador de interface, um número do link e uma distância ou custo (esse último pode ser atribuído pelo administrador da rede). Com todas essas informações, cada nó possui uma visão da topologia da rede e pode, dessa forma, descobrir sozinho qual é a melhor rota para um dado destino. Caso ocorra uma alteração num dos links de rede, os nós adjacentes avisam seus vizinhos. Esses por sua vez, verificam o número da mensagem ou a hora no cabeçalho do pacote OSPF para saberem se este aviso é novo ou velho. Se o aviso for novo, é feita a verificação da existência da entrada. Caso ela não exista, é adicionada à tabela de roteamento. Se a entrada já existir, são comparados os números da mensagem recebida com a entrada existente na tabela de roteamento. Se o número da mensagem recebida for maior que a entrada existente, a entrada é substituída, caso contrário, a entrada da tabela é transmitida como uma nova mensagem. Se os números forem iguais, o nó não executa nenhuma ação. Principais características Há duas características principais no OSPF. A primeira, é que se trata de um protocolo aberto, o que significa que suas especificações são de domínio público; suas especificações podem ser encontradas na RFC (Request For Comments) número 1247 e também na RFC 2328 . A segunda, é que ele se baseia no algoritmo SPF, também chamado de algoritmo de Dijkstra, nome de seu criador. OSPF é um protocolo de roteamento do tipo link-state, que envia avisos sobre o estado da conexão (link- state advertisements, LSA) a todos os outros roteadores em uma mesma área hierárquica. Informações sobre interfaces ligadas, métrica usada e outras variáveis são incluídas nas LSAs. Ao mesmo tempo em que o roteador OSPF acumula informações sobre o estado do link, ele usa o algoritmo SPF para calcular a melhor rota para cada nó. Por ser um protocolo do tipo link-state, o OSPF difere-se do RIP e do IGRP, que são protocolos de roteamento baseados em vetores de distância. Os roteadores que trabalham com algoritmos de vetor de distância, a cada atualização, enviam toda ou parte de suas tabelas de roteamento para seus vizinhos. Pacote OSPF Ao contrário de outros protocolos de roteamento, o OSPF não carrega dados por meio de um protocolo de transporte, como o UDP (User Datagram Protocol) ou o TCP (Transmission Control Protocol). Em vez disso, o OSPF forma datagramas IP diretamente, empacotando-os usando o número de protocolo 89 para o campo "Protocolo IP" ¹. Há cinco tipos distintos de pacotes OSPF e cada um dos cinco tipos iniciam com um cabeçalho padrão de 24 bytes, são eles: 1. Pacote de aviso. (Hello packet) https://pt.wikipedia.org/wiki/Protocolo https://pt.wikipedia.org/wiki/Encaminhamento https://pt.wikipedia.org/wiki/Rede https://pt.wikipedia.org/wiki/IP https://pt.wikipedia.org/wiki/IETF https://tools.ietf.org/html/rfc1131 https://pt.wikipedia.org/wiki/RIP https://pt.wikipedia.org/wiki/Arpanet https://pt.wikipedia.org/wiki/Internet https://pt.wikipedia.org/wiki/Roteador https://pt.wikipedia.org/wiki/Dom%C3%ADnio_p%C3%BAblico http://www.ietf.org/rfc/rfc1247.txt?number=1247 https://www.ietf.org/rfc/rfc2328.txt https://pt.wikipedia.org/wiki/Algoritmo_de_dijkstra https://en.wikipedia.org/wiki/Open_Shortest_Path_First#OSPF_messages 2. Pacote de informações do Banco de Dados (Database Description packet) 3. Requisição de estado de link (Link State Request packet) 4. Atualização de estado de link (Link State Update packet) 5. Recebimento de informações de link (Link State Acknowledgment packet) RPC Chamada remota de procedimento (RPC, acrônimo de Remote Procedure Call) é uma tecnologia de comunicação entre processos que permite a um programa de computador chamar um procedimento em outro espaço de endereçamento (geralmente em outro computador, conectado por uma rede). O programador não se preocupa com detalhes de implementação dessa interação remota: do ponto de vista do código, a chamada se assemelha a chamadas de procedimentos locais. RPC é uma tecnologia popular para a implementação do modelo cliente-servidor de computação distribuída. Uma chamada de procedimento remoto é iniciada pelo cliente enviando uma mensagem para um servidor remoto para executar um procedimento específico. Uma resposta é retornada ao cliente. Uma diferença importante entre chamadas de procedimento remotas e chamadas de procedimento locais é que, no primeiro caso, a chamada pode falhar por problemas da rede. Nesse caso, não há nem mesmo garantia de que o procedimento foi invocado. História A idéia de RPC data de 1976, quando foi descrito no RFC 707. Um dos primeiros usos comerciais da tecnologia foi feita pela Xerox no "Courier", de 1981. A primeira implementação popular para Unix foi o Sun RPC (atualmente chamado ONC RPC), usado como base do Network File System e que ainda é usada em diversas plataformas. Outra implementação pioneira em Unix foi o Network Computing System (NCS) da Apollo Computer, que posteriormente foi usada como fundação do DCE/RPC no Distributed Computing Environment (DCE). Uma década depois a Microsoft adotou o DCE/RPC como base para a sua própria implementação de RPC, MSRPC, a DCOM foi implementada com base nesse sistema. Ainda no mesmo período da década de 1990, o ILU da Xerox PARC e o CORBA ofereciam outro paradigma de RPC baseado em objetos distribuídos, com mecanismos de herança. De forma análoga, atualmente utiliza-se XML e JSON como linguagem de descrição de interface e HTTP como protocolo de rede para formar serviços web, cujas implementações incluem SOAP, REST e XML- RPC. No modelo RPC, o processo de invocação ocorre de maneira similar. Uma Thread é responsável pelo controle de dois processos: invocador e servidor. O processo invocador primeiro manda uma mensagem para o processo servidor e aguarda (autobloqueia) uma mensagem de resposta. A mensagem de invocação contém os parâmetros do procedimento e a mensagem de resposta contém o resultado da execução do procedimento. Uma vez que a mensagem de resposta é recebida, os resultados da execução do procedimento são coletados e a execução do invocador prossegue. Do lado do servidor, um processo permanece em espera até a chegada de uma mensagem de invocação. Quando uma mensagem de invocação é recebida, o servidor extrai os parâmetros, processa-os e produz os resultados, que são enviadosna mensagem de resposta. O servidor, então, volta a esperar por uma nova mensagem de invocação. O Modelo O modelo de Chamada Remota de Procedimento é similar ao modelo de chamadas locais de procedimentos, no qual a rotina que invoca o procedimento coloca os argumentos em uma área de memória bem conhecida e transfere o controle para o procedimento em execução, que lê os argumentos e os processa. Em algum momento, a rotina retoma o controle, extraindo o resultado da execução de uma área bem conhecida da memória. Após isso, a rotina prossegue com a execução normal. https://pt.wikipedia.org/wiki/Comunica%C3%A7%C3%A3o_entre_processos https://pt.wikipedia.org/wiki/Programa_de_computador https://pt.wikipedia.org/wiki/Espa%C3%A7o_de_endere%C3%A7amento https://pt.wikipedia.org/wiki/Rede_de_computadores https://pt.wikipedia.org/wiki/Cliente-servidor https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_distribu%C3%ADda https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_distribu%C3%ADda https://pt.wikipedia.org/wiki/1976 https://tools.ietf.org/html/rfc707 https://pt.wikipedia.org/wiki/Xerox https://pt.wikipedia.org/wiki/1981 https://pt.wikipedia.org/wiki/Unix https://pt.wikipedia.org/wiki/ONC_RPC https://pt.wikipedia.org/wiki/Network_File_System https://pt.wikipedia.org/w/index.php?title=Apollo_Computer&action=edit&redlink=1 https://pt.wikipedia.org/w/index.php?title=DCE/RPC&action=edit&redlink=1 https://pt.wikipedia.org/w/index.php?title=Distributed_Computing_Environment&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Microsoft https://pt.wikipedia.org/w/index.php?title=MSRPC&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Distributed_Component_Object_Model https://pt.wikipedia.org/w/index.php?title=ILU&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Xerox_PARC https://pt.wikipedia.org/wiki/CORBA https://pt.wikipedia.org/wiki/XML https://pt.wikipedia.org/wiki/JSON https://pt.wikipedia.org/wiki/Linguagem_de_descri%C3%A7%C3%A3o_de_interface https://pt.wikipedia.org/wiki/HTTP https://pt.wikipedia.org/wiki/Protocolo_de_rede https://pt.wikipedia.org/wiki/Servi%C3%A7o_web https://pt.wikipedia.org/wiki/SOAP https://pt.wikipedia.org/wiki/REST https://pt.wikipedia.org/wiki/XML-RPC https://pt.wikipedia.org/wiki/XML-RPC https://pt.wikipedia.org/wiki/Thread_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Processo_(inform%C3%A1tica) https://pt.wikipedia.org/wiki/Mem%C3%B3ria_(computador) Nesse modelo, apenas um dos dois processos permanece ativo, em um dado instante de tempo. No entanto, esse modelo serve apenas de ilustração. O protocolo ONC RPC não faz restrições à implementações que permitam concorrência entre esses processos. Por exemplo, uma implementação poderia optar por chamadas assíncronas, que permitiriam ao cliente continuar com o trabalho útil, enquanto estivesse aguardando a Do lado do servidor, um processo permanece em espera até a chegada de uma mensagem de invocação. Quando uma mensagem de invocação é recebida, o servidor extrai os parâmetros, processa-os e produz os resultados, que são enviados na mensagem de resposta. O servidor, então, volta a esperar por uma nova mensagem de invocação. Nesse modelo, apenas um dos dois processos permanece ativo, em um dado instante de tempo. No entanto, esse modelo serve apenas de ilustração. O protocolo ONC RPC não faz restrições à implementações que permitam concorrência entre esses processos. Por exemplo, uma implementação poderia optar por chamadas assíncronas, que permitiriam ao cliente continuar com o trabalho útil, enquanto estivesse aguardando a mensagem de resposta. Uma chamada remota de procedimento difere das chamadas locais em alguns pontos: 8. Tratamento de erros: falhas do servidor ou da rede devem ser tratadas. 9. Variáveis globais e efeitos colaterais: Uma vez que o servidor não possui acesso ao espaço de endereços do cliente, argumentos protegidos não podem ser passados como variáveis globais ou retornados. 10. Desempenho: chamadas remotas geralmente operam a velocidades inferiores em uma ou mais ordens de grandeza em relação às chamadas locais. 11. Autenticação: uma vez que chamadas remotas de procedimento podem ser transportadas em redes sem segurança, autenticação pode ser necessário. Dessa forma, mesmo havendo diversas ferramentas que geram automaticamente o cliente e o servidor, os protocolos precisam ser desenvolvidos cuidadosamente. Semântica de Transporte O protocolo RPC pode ser implementado sobre diferentes tipos de protocolos de transporte, uma vez que é indiferente a maneira de como uma mensagem é transmitida entre os processos. É importante salientar que o protocolo RPC não implementa nenhuma forma de confiabilidade e que a aplicação precisa tomar cuidados quanto ao tipo de protocolo sobre o qual RPC opera. Caso se trate de um protocolo confiável, como TCP, as preocupações com confiabilidade já são resolvidas. Por outro lado, caso a camada de transporte seja não-confiável, como UDP, mecanismos de timeout, retransmissão e detecção de duplicatas devem ser implementados, uma vez que esses serviços não são providos por RPC. Devido à independência da camada de transporte, o protocolo RPC não modifica a semântica das chamadas remotas, nem seus requisitos de execução. A semântica pode ser inferida a partir da camada de transporte em uso. Por exemplo, considere o caso em que RPC opera sobre uma camada de transporte não-confiável, como UDP. Se uma aplicação retransmite mensagens de invocação RPC, após timeouts, e não recebe respostas, não pode inferir o número de vezes em que o procedimento foi executado. Se uma mensagem é recebida, ela pode inferir que o procedimento foi executado, pelo menos, uma vez. O servidor pode efetuar o controle do número de execuções, simplesmente gravando o número do último procedimento executado com êxito, evitando assim reexecuções de uma mesma chamada. Por outro lado, quando RPC opera sobre uma camada de transporte confiável, como TCP, a aplicação pode inferir, a partir de uma mensagem de resposta, que o procedimento foi executado exatamente uma vez. No entanto, se nenhuma mensagem de reposta é recebida, a aplicação não pode assumir que o procedimento não foi executado. Perceba que, mesmo usando um protocolo orientado a conexões, aplicações ainda requerem timeouts para identificar falhas do servidor. Há, ainda, muitas outras possibilidades de transporte além de datagramas e protocolos orientados a conexão. Por exemplo, protocolos de consulta-resposta como VMTP pode ser usado por TCP. https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/ONC_RPC https://pt.wikipedia.org/wiki/Concorr%C3%AAncia_(inform%C3%A1tica) https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/ONC_RPC https://pt.wikipedia.org/wiki/Concorr%C3%AAncia_(inform%C3%A1tica) https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Software_aplicativo https://pt.wikipedia.org/wiki/TCP https://pt.wikipedia.org/wiki/Confiabilidade https://pt.wikipedia.org/wiki/Camada_de_transporte https://pt.wikipedia.org/wiki/Camada_de_transporte https://pt.wikipedia.org/wiki/Protocolo_UDP https://pt.wikipedia.org/w/index.php?title=VMTP&action=edit&redlink=1 Implementando RPC Para permitir que os servidores sejam acessados por diferentes clientes, diversos sistemas padronizados de RPC foram criados. A maioria deles usa uma linguagem de descrição de interface (IDL) para que diferentes plataformas possam chamar procedimentos. Fazendo uso de uma ferramenta como o RPCGEN, pode-se gerar interfaces entre cliente e servidor a partir de um arquivo IDL, os chamados stubs. Como os stubs são embarcados nas aplicações cliente e servidor, a RPC não é uma camada de middleware.[1] Na codificação, o procedimento remoto do cliente chama o stub cliente como qualquer outro procedimentolocal, e a implementação interna do stub cliente é responsável por iniciar o processo de transmissão para stub servidor, empacotando a chamada numa mensagem. Ao chegar, o stub servidor desempacota a mensagem e invoca localmente o procedimento, aguardando o retorno. Quando a chamada local retorna, o stub servidor é responsável por iniciar o processo de transmissão para o stub cliente, empacotando a resposta numa mensagem. Chegando, a resposta é desempacotada pelo stub cliente, sendo retornada localmente para o procedimento que realizou a chamada remota. Ao invocar o procedimento remoto, deve-se atentar que cliente e servidor podem ser plataformas diferentes, que representam dados de forma diferente. Nesse caso é preciso um protocolo comum de representação dos dados, como o XDR, ou a garantia de que ambas as partes saibam converter os dados para tipos de dado suportados. Por ser uma chamada remota, noutro espaço de endereçamento, deve-se atentar também o desafio de passar um ponteiro. Nesse caso, a implementação interna do RPC deve passar o conteúdo do ponteiro por cópia e restaurar a área de memória no retorno do procedimento. Limitações Diferentes implementações de chamada de procedimento remoto costumam ser incompatíveis entre si, ainda que existam exceções. Por isso, o uso de uma determinada implementação, provavelmente, resultará na dependência com o fornecedor da implementação. Essa incompatibilidade entre implementações se mostra também na disponibilidade de funcionalidades, no suporte a diferentes protocolos de rede e diferentes sistemas de arquivo. A maioria das implementações não suporta P2P e ou interação assíncrona entre cliente e servidor (por definição, a chamada remota corresponde a uma chamada local do ponto de vista da aplicação, bloqueante da mesma forma). A comunicação síncrona implica a disponibilidade constante tanto do cliente quanto do servidor. TFTP Trivial File Transfer Protocol (ou apenas TFTP) é um protocolo de transferência de ficheiros, muito simples, semelhante ao FTP. É geralmente utilizado para transferir pequenos ficheiros entre hosts numa rede, tal como quando um terminal remoto ou um cliente inicia o seu funcionamento, a partir do servido Visão geral do protocolo[editar | editar código-fonte] Toda a transferência começa com um pedido de leitura ou escrita de um arquivo, que sirva também para pedir uma conexão. Se o servidor conceder o pedido, a conexão está aberta e o arquivo é emitido em blocos fixos do comprimento de 512 bytes. Cada pacote contem um bloco dos dados, e deve ser reconhecido por um pacote do reconhecimento antes que o pacote seguinte possa ser emitido. Um pacote dos dados de uma terminação de menos de 512 sinais dos bytes de transferência. Se um pacote começar perdido na rede, o intervalo de parada pretendido da vontade do receptor e pode retransmitir seu último pacote (que pode ser dados ou um reconhecimento), assim fazendo com que o remetente do pacote perdido retransmitir esse pacote perdido. O remetente tem que manter apenas um pacote na mão para o retransmissor, desde que o reconhecimento da etapa do fechamento garante que todos os pacotes mais antigos foram recebidos. Observe que ambas as máquinas envolvidas em transferência estão consideradas remetentes e https://pt.wikipedia.org/wiki/Linguagem_de_descri%C3%A7%C3%A3o_de_interface https://pt.wikipedia.org/w/index.php?title=RPCGEN&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Stub https://pt.wikipedia.org/wiki/Middleware https://pt.wikipedia.org/wiki/Chamada_de_procedimento_remoto#cite_note-1 https://pt.wikipedia.org/wiki/External_Data_Representation https://pt.wikipedia.org/wiki/Ponteiro_(programa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Sistema_de_arquivo https://pt.wikipedia.org/wiki/P2P https://pt.wikipedia.org/wiki/FTP https://pt.wikipedia.org/wiki/Host https://pt.wikipedia.org/w/index.php?title=Trivial_File_Transfer_Protocol&veaction=edit§ion=1 https://pt.wikipedia.org/w/index.php?title=Trivial_File_Transfer_Protocol&action=edit§ion=1 receptores. Um emite dados e recebe reconhecimentos, o outro emite reconhecimentos e recebe dados. A maioria de erros causam a terminação da conexão. Um erro é sinalizado emitindo um pacote do erro. Este pacote não é reconhecido, e não retransmitido (isto é, um servidor ou o usuário de TFTP podem terminar após ter emitido uma mensagem de erro), assim que a outra extremidade da conexão não pode começá- la. Consequentemente os intervalos de parada estão usados para detectar tal terminação quando o pacote do erro foi perdido. Os erros são causados por três tipos de eventos: o TFTP reconhece somente uma condição de erro, que não causa a terminação, a porta da fonte de um pacote recebido que está incorreto. Neste caso, um pacote do erro é emitido ao anfitrião original. Este protocolo é muito restritivo, a fim de simplificar a execução. Para o exemplo, os blocos fixos do comprimento fazem o alocamento para diante reto, e o reconhecimento da etapa do fechamento fornece o controle de fluxo e elimina a necessidade de requisitar novamente pacotes entrantes dos dados. BOOTP BOOTP Origem: Wikipédia, a enciclopédia livre. Saltar para a navegaçãoSaltar para a pesquisa O protocolo BOOTP (acrônimo para Bootstrap Protocol), criado em 1985 pelo IAB, foi concebido para que todo dispositivo de rede receba um endereço IP permanente, o chamado direcionamento estático. Esse protocolo permite a alocação automática de endereços de rede, mas não é capaz de alocá-los dinamicamente, como faz o DHCP, sucessor do BOOTP. BOOTP fornece serviços auxiliares para TCP/IP, tanto na camada de enlace quanto na de aplicação do modelo OSI. BOOTP vs DHCP O DHCP, por sua vez, fez refinamentos ao modelo BOOTP e usa os mesmos procedimentos e estruturas de mensagens para pedidos e entregas de endereços IP. No entanto, estendeu os campos no formato da mensagem para incluir instruções de configuração. O BOOTP exige que o computador envie uma segunda mensagem solicitando um arquivo de início com os detalhes da configuração depois de adquirir o endereço IP. A operação em uma fase do DHCP é considerada uma vantagem sobre o processo de duas fases do BOOTP. Ambos direcionam IPs aos computadores por tempo limitado. Após esse tempo, um computador pode deixar de usar a rede, mas é incapaz de devolver o endereço formalmente. Isso pode ocorrer no caso de uma falha, como o desligamento abrupto. O DHCP, que aloca endereços IP dinamicamente, usa um sistema de alocação por 8 dias, mas esse tempo geralmente é encurtado. O BOOTP foi projetado para outorgar endereços estáticos e os retém por até 30 dias. Isso significa que endereços perdidos permanecem nessa condição e levam mais tempo para serem recuperados. O direcionamento dinâmico é uma forma de disponibilizar um número menor de endereços de rede para um número maior de computadores, uma vez que endereços IPs são escassos, assumindo que nem todos os computadores estejam ativos ao mesmo tempo. Características[editar • Para simplificar a operação, todos os campos de dados no pacote possuem tamanho fixo. • Em caso de erro, o cliente é responsável pela operação de retry. https://pt.wikipedia.org/wiki/BOOTP#mw-head https://pt.wikipedia.org/wiki/BOOTP#p-search https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Acr%C3%B3nimo https://pt.wikipedia.org/wiki/IAB https://pt.wikipedia.org/wiki/Endere%C3%A7o_IP https://pt.wikipedia.org/wiki/Rede_de_computadores https://pt.wikipedia.org/wiki/DHCP https://pt.wikipedia.org/wiki/TCP https://pt.wikipedia.org/wiki/IP https://pt.wikipedia.org/wiki/Modelo_OSI • Após uma falta energia em uma rede, na ocasião de seu retorno, todas as máquinas reinicializam automaticamente. • Para evitar que os servidores recebam desnecessariamente os pacotes de resposta de outros servidores, são usadas duas portas UDPdiferentes para o pedido e a resposta. O servidor recebe o pedido na porta 67 e responde na porta 68. • O BOOTP não oferece o arquivo de Bootstrap, mas apenas a sua localização. • Para carregar este arquivo, deve ser utilizado outro protocolo de transferência de arquivos (TFTP). SNMP Simple Network Management Protocol (SNMP), em português Protocolo Simples de Gerência de Rede, é um "protocolo padrão da Internet para gerenciamento de dispositivos em redes IP". Dispositivos que normalmente suportam SNMP incluem roteadores, computadores, servidores, estações de trabalho, impressoras, racks modernos e etc. SNMP é usado na maioria das vezes em sistemas de gerenciamento de rede para monitorar dispositivos ligados na rede, assim provendo condições que garantem atenção administrativa. SNMP é um componente do conjunto de protocolos da Internet como definido pela Internet Engineering Task Force (IETF). Ele consiste de um conjunto de padrões de gerenciamento de rede, incluindo um protocolo da camada de aplicação, um esquema de banco de dados, e um conjunto de objetos de dados. O software de gerência de redes não segue o modelo cliente-servidor convencional, pois para as operações GET e SET, a estação de gerenciamento se comporta como cliente e o dispositivo de rede a ser analisado ou monitorado se comporta como servidor, enquanto que na operação TRAP ocorre o oposto, pois no envio de alarmes é o dispositivo gerenciado que toma iniciativa da comunicação. Por conta disso, os sistemas de gerência de redes evitam os termos 'cliente' e 'servidor' e optam por usar "gerente" para a aplicação que roda na estação de gerenciamento e "agente" para a aplicação que roda no dispositivo de rede. Gerência de redes O programa gerente da rede é a entidade responsável pelo monitoramento e controle dos sistemas de hardware e software que compõem a rede, e o seu trabalho consiste em detectar e corrigir problemas que causem ineficiência (ou impossibilidade) na comunicação e eliminar as condições que poderão levar a que o problema volte a surgir. A gerência de uma rede pode não ser simples, dada sua heterogeneidade em termos de hardware e software, e de componentes da rede, por vezes incompatíveis. As falhas intermitentes, se não forem detectadas, podem afetar o desempenho da rede. Um software de gerência de redes permite ao gestor monitorar e controlar os componentes da sua rede. Componentes Básicos do SNMP Uma rede gerida pelo protocolo SNMP é formada por três componentes chaves: 12. Dispositivos Geridos 13. Agentes 14. Sistema de Gerenciamento de Redes (NMS - Network-Management Systems) Um Dispositivo Gerido é um nó de rede que possui um agente SNMP instalado e se encontra numa rede gerida. Estes dispositivos coletam e armazenam informações de gestão e mantém estas informações disponíveis para sistemas NMS através do protocolo SNMP. Dispositivos geridos, também às vezes https://pt.wikipedia.org/wiki/Porta_(redes_de_computadores) https://pt.wikipedia.org/wiki/Udp_(protocolo) https://pt.wikipedia.org/wiki/TFTP https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Internet https://pt.wikipedia.org/wiki/IP https://pt.wikipedia.org/wiki/Roteador https://pt.wikipedia.org/wiki/Comutador https://pt.wikipedia.org/w/index.php?title=Sistemas_de_gerenciamento_de_rede&action=edit&redlink=1 https://pt.wikipedia.org/w/index.php?title=Sistemas_de_gerenciamento_de_rede&action=edit&redlink=1 https://pt.wikipedia.org/w/index.php?title=Conjunto_de_protocolos_da_Internet&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Internet_Engineering_Task_Force https://pt.wikipedia.org/wiki/Internet_Engineering_Task_Force https://pt.wikipedia.org/wiki/Norma_t%C3%A9cnica https://pt.wikipedia.org/wiki/Camada_de_aplica%C3%A7%C3%A3o https://pt.wikipedia.org/w/index.php?title=Modelo_l%C3%B3gico_de_dados&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Objeto_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Cliente-servidor https://pt.wikipedia.org/wiki/Hardware https://pt.wikipedia.org/wiki/Software denominados de dispositivos de rede, podem ser routers, servidores de acesso, impressoras, computadores, servidores de rede, switches, dispositivos de armazenamento, dentre outros. Um Agente é um módulo de software de gestão de rede que fica armazenado num Dispositivo Gerido. Um agente tem o conhecimento das informações de gestão locais e traduz estas informações para um formato compatível com o protocolo SNMP. Um sistema NMS é responsável pelas aplicações que monitoram e controlam os Dispositivos Geridos. Normalmente é instalado num (ou mais que um) servidor de rede dedicado a estas operações de gestão, que recebe informações (pacotes SNMP) de todos os dispositivos geridos daquela rede. O protocolo SNMP opera na porta 161 por padrão. A porta 162 é denominada SNMPTRAP. Um trap SNMP é usado para reportar uma notificação ou para outros eventos assíncronos sobre o subsistema gerido. Arquitetura O framework SNMP consiste de: Agentes Mestres (Master Agents), Sub-agentes (Subagents) e Estações de Gerenciamento (Management Stations). Master Agent O Master Agent em uma rede gerenciada é, na verdade, um software sendo executado em um dispositivo com suporte a SNMP, por exemplo, um roteador, que interage com uma estação de gerenciamento. É o equivalente a um servidor, na comunicação cliente/servidor, ou a um daemon, sob o ponto de vista de sistemas operacionais. Os subagentes são os responsáveis por passarem informações específicas para o Master Agent. Subagent Os subagentes ou subagents são pequenos programas em execução no dispositivo com suporte a SNMP, responsáveis pelo monitoramento de recursos específicos naquele dispositivo, como por exemplo, o status de um link ethernet em um roteador, ou a quantidade de espaço livre em um disco de um servidor. Algumas características dos softwares subagentes são: • Coletar informações de objetos gerenciados • Configurar parâmetros destes objetos gerenciados • Responder a solicitações do software de gerência da rede • Gerar alarmes ou traps em determinadas situações Management Station O Gerente da Rede ou Estação de Gerenciamento ou ainda Management Station é o componente final da arquitetura de uma solução SNMP. Funciona como um cliente em uma comunicação cliente/servidor. Realiza requisições de informações aos dispositivos gerenciados, que podem ser temporárias ou através de comandos a qualquer tempo. E ainda é o responsável por receber alarmes gerados pelos agentes e gerar saídas para estes alarmes, tais como, alterar (SET) o valor de um determinado parâmetro gerenciado no equipamento, enviar mensagem para o celular do administrador da rede, dentre outras. O SNMP e o ASN.1 O SNMP é um protocolo padrão usado para gerência de redes, que define os formatos dos pedidos que o Gerente envia para o Agente e os formatos das respostas que o agente retorna, assim como o significado exato de cada pedido e resposta. Uma mensagem SNMP é codificada com um padrão designado de ASN.1 (do inglês: Abstract Syntax Notation.1). Para permitir a transferência de grandes pacotes, sem desperdiçar espaço em cada transferência, o ASN.1 usa uma combinação de tamanho e valor para cada objeto a ser transferido. Comandos do SNMP O SNMP não define um grande número de comandos, no lugar disso define duas operações básicas: • GET, para obter um valor de um dispositivo • SET, para colocar um valor num dispositivo O comando que especifica uma operação de GET ou SET deve especificar o nome do objeto, que é único. Podemos definir objetos. No caso de um contador de erros de CRC e uma vez que o SNMP não inclui comandos específicos para fazer reset do contador, uma forma simples é colocar zero no contador. Neste caso, o Gerente faz o GET (leitura) do parâmetro desejado para determinar o estado do dispositivo. Asoperações que controlam o dispositivo são definidas como efeitos secundários de SET (alterar/gravar valores) em objetos. Especifica (na versão 1) quatro pacotes de unidades de dados (PDU): 15. GET, usado para retirar um pedaço de informação de gerenciamento. 16. GETNEXT, usado interativamente para retirar sequências de informação de gerenciamento. 17. GETBULK, usado para retirar informações de um grupo de objetos. 18. SET, usado para fazer uma mudança no subsistema gerido. 19. TRAP, usado para reportar uma notificação ou para outros eventos assíncronos sobre o subsistema gerido. Nomes de objetos e MIB Todos os objetos acedidos pelo SNMP devem ter nomes únicos definidos e atribuídos. Além disso, o Gerente e o Agente devem acordar os nomes e significados das operações GET e SET. O conjunto de todos os objetos SNMP é coletivamente conhecido como MIB (do inglês: Management Information Base). O standard SNMP não define o MIB, mas apenas o formato e o tipo de codificação das mensagens. A especificação das variáveis MIB, assim como o significado das operações GET e SET em cada variável, são especificados por um padrão próprio. A definição dos objetos do MIB é feita com o esquema de nomes do ASN.1, o qual atribui a cada objeto um prefixo longo que garante a unicidade do nome, a cada nome é atribuído um número inteiro. Também, o SNMP não especifica um conjunto de variáveis, e como a definição de objetos é independente do protocolo de comunicação, permite criar novos conjuntos de variáveis MIB, definidos como standards, para novos dispositivos ou novos protocolos. Por isso, foram criados muitos conjuntos de variáveis MIB que correspondem a protocolos como UDP, IP, ARP, assim como variáveis MIB para hardware de rede como Ethernet ou FDDI, ou para dispositivos tais como bridges, switches ou impressoras. Aspectos de segurança O SNMP, até a sua versão 2, não suportava qualquer tipo de autenticação, o que o tornava vulnerável a uma série de ameaças de segurança. Tais ameaças incluíam o acesso e modificação não autorizados de dados nas MIBs dos dispositivos gerenciados. Essa vulnerabilidade do protocolo fez com que diversos fabricantes não implementassem a operação Set, reduzindo o SNMP a uma ferramenta de monitoração apenas. SNMPv2 e SNMPv3[editar | editar código-fonte] A versão 2 do SNMP é uma evolução do protocolo inicial. O SNMPv2 oferece uma boa quantidade de melhoramentos em relação ao SNMPv1, incluindo operações adicionais do protocolo, melhoria na performance, segurança, confidencialidade e comunicações Gerente-para-Gerente. A SNMPV3 inclui implementação na segurança ao protocolo como privacidade, autenticação e controle de acesso. Na prática, as implementações do SNMP oferecem suporte para as múltiplas versões (RFC 3584), tipicamente SNMPv1, SNMPv2c e SNMPv3. TCP https://pt.wikipedia.org/wiki/Management_information_base https://pt.wikipedia.org/w/index.php?title=Simple_Network_Management_Protocol&veaction=edit§ion=11 https://pt.wikipedia.org/w/index.php?title=Simple_Network_Management_Protocol&action=edit§ion=11 https://tools.ietf.org/html/rfc3584 Protocolo de Controle de Transmissão (do inglês: Transmission Control Protocol, abreviado TCP) é um dos protocolos de comunicação, da camada de transporte da rede de computadores do Modelo OSI,[1] que dão suporte a rede global Internet, verificando se os dados são enviados na sequência correta e sem erros via rede. É complementado pelo protocolo da Internet, normalmente chamado de, TCP/IP. Neste protocolo da camada de transporte (camada 4 OSI) se assentam a maioria das aplicações cibernéticas, como o SSH, FTP, HTTP — portanto, a World Wide Web[2], devido sua versatilidade e robustez. O Protocolo de controle de transmissão provê confiabilidade, entrega na sequência correta e verificação de erros dos pacotes de dados, entre os diferentes nós da rede, para a camada de aplicação. Aplicações que não requerem um serviço de confiabilidade de entrega de pacotes podem se utilizar de protocolos mais simples como o User Datagram Protocol (UDP), que provê um serviço que enfatiza a redução de latência da conexão. Origem histórica Em maio de 1974, o Instituto de Engenheiros Eletricistas e Eletrônicos publicou um artigo intitulado "A Protocol for Packet Network Interconnection."[2] Os autores do artigo, Vinton G. Cerf e Robert Kahn descreveram um protocolo de interconexão para compartilhamento de recursos usando comutação de pacotes ao longo dos nós. Um componente central de controle deste modelo foi o Transmission Control Program, que incorporou os elos e serviços orientados para datagrama entre hosts. O programa de controle de transmissão monolítico foi dividido depois dentro de uma arquitetura modular formada de um Protocolo de controle de transmissão na camada orientada a conexão e o Protocolo de internet na camada de interconexão. O modelo se torna informalmente conhecido como TCP/IP, embora formalmente tenha sido chamado de Internet Protocol Suite. Características técnicas As características fundamentais do TCP são: • Orientado à conexão - A aplicação envia um pedido de conexão para o destino e usa a "conexão" para transferir dados. Portanto, se faz necessário o estabelecimento de uma conexão, por meio de uma sequência de passos definida no protocolo para que os dois pontos da conexão possam interagir entre si. • Handshake - Mecanismo de estabelecimento e finalização de conexão a três e quatro tempos, respectivamente, o que permite a autenticação e encerramento de uma sessão completa. O TCP garante que, no final da conexão, todos os pacotes foram bem recebidos. • Ponto a ponto - uma conexão TCP é estabelecida entre dois pontos. A princípio, pacotes de broadcasting parecem violar esse princípio, mas o que ocorre é que é enviado um pacote com um endereço especial em seu cabeçalho que qualquer computador em sua rede pode responder a esse pacote, mesmo que não esteja explicitamente endereçado pra ele. • Confiabilidade - O TCP usa várias técnicas para proporcionar uma entrega confiável dos pacotes de dados que, dependendo da aplicação, gera uma grande vantagem que tem em relação ao UDP. Aliado a outros fatores, o protocolo se mantém bastante difundido nas redes de computadores. O TCP permite a recuperação de pacotes perdidos, a eliminação de pacotes duplicados, a recuperação de dados corrompidos e pode recuperar a ligação em caso de problemas no sistema e na rede. • Full duplex - É possível a transferência simultânea em ambas direções (cliente-servidor) durante toda a sessão. Apesar disso, em alguns momentos, o protocolo necessita que algum pacotes de dados cheguem para que se dê o envio de outros, o que limita as transmissões. • Entrega ordenada - A aplicação faz a entrega ao TCP de blocos de dados com um tamanho arbitrário num fluxo (ou stream) de dados, tipicamente em octetos. O TCP parte estes dados em segmentos de tamanho especificado pelo valor MTU. Porém, a circulação dos pacotes ao longo da rede (utilizando um protocolo de encaminhamento, na camada inferior, como o IP) pode fazer com que os pacotes não cheguem ordenados. O TCP garante a reconstrução do stream no destinatário mediante os números de sequência. • Controle de fluxo - O TCP usa o campo janela ou window para controlar o fluxo. O receptor, à medida que recebe os dados, envia mensagens ACK (=Acknowledgement), confirmando a https://pt.wikipedia.org/wiki/L%C3%ADngua_inglesa https://pt.wikipedia.org/wiki/Protocolo_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) https://pt.wikipedia.org/wiki/Camada_de_transporte https://pt.wikipedia.org/wiki/Rede_de_computadores https://pt.wikipedia.org/wiki/Modelo_OSI https://pt.wikipedia.org/wiki/Modelo_OSI https://pt.wikipedia.org/wiki/Transmission_Control_Protocol#cite_note-1 https://pt.wikipedia.org/wiki/Rede_de_computadores https://pt.wikipedia.org/wiki/Internet https://pt.wikipedia.org/wiki/Protocolo_de_Internethttps://pt.wikipedia.org/wiki/TCP/IP https://pt.wikipedia.org/wiki/Camada_de_transporte https://pt.wikipedia.org/wiki/SSH https://pt.wikipedia.org/wiki/FTP https://pt.wikipedia.org/wiki/HTTP https://pt.wikipedia.org/wiki/World_Wide_Web https://pt.wikipedia.org/wiki/Transmission_Control_Protocol#cite_note-:0-2 https://pt.wikipedia.org/wiki/Pacotes_de_dados https://pt.wikipedia.org/wiki/Camada_de_aplica%C3%A7%C3%A3o https://pt.wikipedia.org/wiki/User_Datagram_Protocol https://pt.wikipedia.org/wiki/Lat%C3%AAncia https://pt.wikipedia.org/wiki/Instituto_de_Engenheiros_Eletricistas_e_Eletr%C3%B4nicos https://pt.wikipedia.org/wiki/Transmission_Control_Protocol#cite_note-:0-2 https://pt.wikipedia.org/wiki/Vint_Cerf https://pt.wikipedia.org/wiki/Robert_Kahn https://pt.wikipedia.org/wiki/N%C3%B3s https://pt.wikipedia.org/wiki/Host https://pt.wikipedia.org/wiki/Broadcasting_(rede_de_computadores) https://pt.wikipedia.org/wiki/Protocolo_UDP https://pt.wikipedia.org/wiki/Rede_de_computadores https://pt.wikipedia.org/wiki/Full_duplex https://pt.wikipedia.org/wiki/Octeto https://pt.wikipedia.org/wiki/MTU https://pt.wikipedia.org/wiki/Protocolo_IP recepção de um segmento; como funcionalidade extra, estas mensagens podem especificar o tamanho máximo do buffer no campo (janela) do segmento TCP, determinando a quantidade máxima de bytes aceita pelo receptor. O transmissor pode transmitir segmentos com um número de bytes que deverá estar confinado ao tamanho da janela permitido: o menor valor entre sua capacidade de envio e a capacidade informada pelo receptor. • Controle de congestionamento - Baseado no número de mensagens de reconhecimentos ACK (=Acknowledgement) recebidos pelo remetente por unidade de tempo calculada com os dados do tempo de ida e de volta, ou em inglês RTT (Round Trip Travel), o protocolo prediz o quanto a rede está congestionada e diminui sua taxa de transmissão de modo que o núcleo da rede não se sobrecarregue. Esse tipo de comportamento, a princípio ineficiente, se baseia fortemente na teoria dos jogos - especificamente em jogos simétricos que, dentre várias coisas, difunde a ideia de que se ninguém recua um pouco, para dar passagem aos demais, todos perdem. Funcionamento do protocolo O protocolo TCP especifica três fases durante uma conexão: estabelecimento da ligação, transferência e término de ligação. O estabelecimento da ligação é feito em três passos, enquanto que o término é feito em quatro. Durante a inicialização são inicializados alguns parâmetros, como o Sequence Number (número de sequência) para garantir a entrega ordenada e robustez durante a transferência. Estabelecimento da conexão Para estabelecer uma conexão, o TCP usa um handshake (aperto de mão) de três vias. Antes que o cliente tente se conectar com o servidor, o servidor deve primeiro ligar e escutar a sua própria porta, para só depois abri-la para conexões: isto é chamado de abertura passiva. Uma vez que a abertura passiva esteja estabelecida, um cliente pode iniciar uma abertura ativa. Para estabelecer uma conexão, o aperto de mão de três vias (ou 3 etapas) é realizado: 20. SYN: A abertura ativa é realizada por meio do envio de um SYN pelo cliente ao servidor. O cliente define o número de sequência de segmento como um valor aleatório A. 21. SYN+ACK: Em resposta, o servidor responde com um SYN-ACK. O número de reconhecimento (acknowledgment) é definido como sendo um a mais que o número de sequência recebido, i.e. A+1, e o número de sequência que o servidor escolhe para o pacote é outro número aleatório B. 22. ACK: Finalmente, o cliente envia um ACK de volta ao servidor. O número de sequência é definido ao valor de reconhecimento recebido, i.e. A+1, e o número de reconhecimento é definido como um a mais que o número de sequência recebido, i.e B+1. Neste ponto, o cliente e o servidor receberam um reconhecimento de conexão. As etapas 1 e 2 estabelecem o parâmetro (número de sequência) de conexão para uma direção e ele é reconhecido. As etapas 2 e 3 estabelecem o parâmetro de conexão (número de sequência) para a outra direção e ele é reconhecido. Com isto, uma comunicação full-duplex é estabelecida. Tipicamente, numa ligação TCP existe aquele designado de servidor (que abre um socket e espera passivamente por ligações) num extremo, e o cliente no outro. O cliente inicia a ligação enviando um pacote TCP com a flag SYN activa e espera-se que o servidor aceite a ligação enviando um pacote SYN+ACK. Se, durante um determinado espaço de tempo, esse pacote não for recebido ocorre um timeout e o pacote SYN é reenviado. O estabelecimento da ligação é concluído por parte do cliente, confirmando a aceitação do servidor respondendo-lhe com um pacote ACK. Durante estas trocas, são trocados números de sequência iniciais (ISN) entre os interlocutores que irão servir para identificar os dados ao longo do fluxo, bem como servir de contador de bytes transmitidos durante a fase de transferência de dados (sessão). No final desta fase, o servidor inscreve o cliente como uma ligação estabelecida numa tabela própria que contém um limite de conexões, o backlog. No caso do backlog ficar completamente preenchido a ligação é rejeitada ignorando (silenciosamente) todos os subsequentes pacotes SYN. https://en.wikipedia.org/wiki/Round-trip_delay_time https://pt.wikipedia.org/wiki/Teoria_dos_jogos https://pt.wikipedia.org/wiki/Teoria_dos_jogos https://pt.wikipedia.org/wiki/Jogo_da_galinha https://pt.wikipedia.org/wiki/Handshake https://pt.wikipedia.org/wiki/Full-duplex https://pt.wikipedia.org/wiki/Servidor https://pt.wikipedia.org/wiki/Socket https://pt.wikipedia.org/wiki/Transmission_Control_Protocol#Transfer%C3%AAncia_de_dados_(sess%C3%A3o) Transferência de dados (sessão)[editar | editar código-fonte] Durante a fase de transferência o TCP está equipado com vários mecanismos que asseguram a confiabilidade e robustez: números de sequência que garantem a entrega ordenada, código detector de erros (checksum) para detecção de falhas em segmentos específicos, confirmação de recepção e temporizadores que permitem o ajuste e contorno de eventuais atrasos e perdas de segmentos. Como se pode observar pelo cabeçalho TCP, existem permanentemente um par de números de sequência, doravante referidos como número de sequência e número de confirmação (ACKnowledgement). O emissor determina o seu próprio número de sequência e o receptor confirma o segmento usando como número ACK o número de sequência do emissor. Para manter a confiabilidade, o receptor confirma os segmentos indicando que recebeu um determinado número de bytes contíguos. Uma das melhorias introduzidas no TCP foi a possibilidade do receptor confirmar blocos fora da ordem esperada. Esta característica designa- se por selective ACK, ou apenas SACK. A remontagem ordenada dos segmentos é feita usando os números de sequência, de 32 bit, que reiniciam a zero quando ultrapassam o valor máximo, 231-1, tomando o valor da diferença. Assim, a escolha do ISN torna-se vital para a robustez deste protocolo. O campo checksum permite assegurar a integridade do segmento. Este campo é expresso em complemento para um consistindo na soma dos valores (em complemento para um) da trama. A escolha da operação de soma em complemento para um deve-se ao fato de esta poder ser calculada da mesma forma para múltiplos desse comprimento - 16 bit, 32 bit, 64 bit, etc - e o resultado, quando encapsulado, será o mesmo. A verificação deste campo por parte do receptor é feita com a recomputação da soma em complemento para um que dará -0 caso o pacote tenha sido recebido intacto. Esta técnica (checksum), embora muito inferior a outros métodos detectores, como o CRC, é parcialmente compensada com a aplicação do CRC ou outros testes de integridade melhores ao nível da camada 2, logo abaixo do TCP, como no caso do PPP e Ethernet. Contudo, isto não torna este campo redundante: com efeito, estudos de tráfego revelam
Compartilhar