{"id":604,"date":"2013-10-02T01:14:16","date_gmt":"2013-10-02T04:14:16","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=604"},"modified":"2013-10-02T01:17:14","modified_gmt":"2013-10-02T04:17:14","slug":"a-camada-de-enlace-de-dados","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=604","title":{"rendered":"A camada de enlace de dados"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>Introdu\u00e7\u00e3o<\/b><\/p>\n<div>A fun\u00e7\u00e3o da segunda camada no modelo de refer\u00eancia OSI &#8211; camada de enlace de dados &#8211; \u00e9 converter o fluxo de dados sem formata\u00e7\u00e3o, fornecido pela primeira camada (camada f\u00edsica) em um fluxo de quadros a ser utilizado pela camada de rede.V\u00e1rios m\u00e9todos de enquadramento s\u00e3o utilizados, como a contagem de bits, ou caracteres, e a inser\u00e7\u00e3o de caracteres e flags atrav\u00e9s da inser\u00e7\u00e3o de bits.<\/p>\n<p>Os protocolos que atuam na camada de enlace de dados podem oferecer recursos de controle para retransmiss\u00e3o de quadros (frames) com falhas ou perdidos. Outra fun\u00e7\u00e3o importante da camada de enlace de dados, \u00e9 o controle de fluxo, na qual ela impede que um transmissor (servidor) r\u00e1pido &#8220;afogue&#8221; um receptor lento.<\/p>\n<p>Um dos protocolos mais importantes dessa camada \u00e9 o &#8220;sliding windows&#8221; &#8211; janela deslizante que consegue integrar de forma eficiente, tanto o controle de erros, como o controle de fluxo.<\/p>\n<p>As antigas redes locais de difus\u00e3o, exerciam outra quest\u00e3o fundamental na camada de enlace de dados, que era a de controlar o acesso ao canal compartilhado quando utilizavam ainda o padr\u00e3o 802.3 &#8211; 10BaseX nas chamadas topologias em barramento.<\/p>\n<p>Este problema era resolvido atrav\u00e9s da subcamada especial da camada de enlace de dados, a subcamada MAC &#8211; Controle de Acesso ao Meio.<!--more--><\/p>\n<p>* \u00c9 importante lembrarmos que, apesar deste artigo referir-se exclusivamente \u00e0 camada de enlace de dados, as fun\u00e7\u00f5es de controle de erros e controle de fluxo, fazem parte tamb\u00e9m da camada de transporte.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Servi\u00e7os oferecidos \u00e0 camada de rede<\/b><\/p>\n<div>\n<h1>Transmiss\u00e3o de dados no modelo OSI<\/h1>\n<p>A figura 1 mostra como os dados podem ser transmitidos no modelo OSI. Esse modelo foi baseado em uma proposta desenvolvida pela ISO (Organiza\u00e7\u00e3o de Padr\u00f5es Internacionais) como primeiro passo na dire\u00e7\u00e3o para uma padroniza\u00e7\u00e3o internacional dos protocolos utilizados nas diferentes camadas.<\/p>\n<p>A ideia geral \u00e9 a de que, embora a transmiss\u00e3o de dados seja na vertical (comunica\u00e7\u00e3o real), os protocolos das camadas adjacentes s\u00e3o projetados &#8220;simulando&#8221; uma comunica\u00e7\u00e3o virtual (horizontal).<\/p>\n<p>Quando a camada de transporte emissora recebe uma informa\u00e7\u00e3o da camada de sess\u00e3o, ela anexa um cabe\u00e7alho de transporte e transmite \u00e0 camada de transporte da camada adjacente receptora.<\/p>\n<p>&#8220;Trata-se apenas de um detalhe t\u00e9cnico o fato de que (a camada de transporte) na verdade deve transferir a mensagem para a camada de rede de sua pr\u00f3pria m\u00e1quina.&#8221; [Tanenbaum, 1997]<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1378227645.figura1.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1378227645.figura1.jpg\" width=\"500\" height=\"375\" border=\"0\" \/><\/a><br \/>\n[figura 1] Modelo de refer\u00eancia OS<\/div>\n<p>A finalidade principal da camada de enlace de dados, \u00e9 fornecer servi\u00e7os \u00e0 camada de rede. O mais importante \u00e9 a transfer\u00eancia de dados da camada de rede do host de origem para a camada de rede do host de destino. Para entendermos os servi\u00e7os oferecidos pela camada de enlace devemos considerar a comunica\u00e7\u00e3o virtual ao inv\u00e9s da comunica\u00e7\u00e3o real entre as duas camadas de rede dos equipamentos interligados.<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1378227645.figura2.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1378227645.figura2.jpg\" width=\"500\" height=\"375\" border=\"0\" \/><\/a><br \/>\n[figura 2] Comunica\u00e7\u00e3o real x comunica\u00e7\u00e3o virtual<\/div>\n<p>A camada de enlace de dados pode ser desenvolvida para oferecer diversos servi\u00e7os. Os servi\u00e7os mais frequentes oferecidos pela camada de enlace, s\u00e3o:<\/p>\n<ul>\n<li>Servi\u00e7o sem conex\u00e3o e sem confirma\u00e7\u00e3o.<\/li>\n<li>Servi\u00e7o sem conex\u00e3o com confirma\u00e7\u00e3o.<\/li>\n<li>Servi\u00e7o orientado a conex\u00e3o.<\/li>\n<\/ul>\n<h1>Servi\u00e7o sem conex\u00e3o e sem confirma\u00e7\u00e3o<\/h1>\n<p>A camada de enlace de dados oferece a menor confiabilidade poss\u00edvel, no entanto, \u00e9 o servi\u00e7o em que oferece maior performance. Para a escolha deste tipo de servi\u00e7o, \u00e9 vital uma boa qualidade de transmiss\u00e3o de dados por parte da camada f\u00edsica.<\/p>\n<p>Caso a taxa de erros for baixa, e permitir que a corre\u00e7\u00e3o de eventuais erros seja feita pelas camadas superiores, pode ser uma boa escolha para este tipo de servi\u00e7o na camada de enlace.<\/p>\n<p>Nas aplica\u00e7\u00f5es que exigem alta performance, como transmiss\u00e3o de voz e teleconfer\u00eancia, em que muitas vezes a performance (rapidez) possui mais prioridade do que a qualidade, pode ser uma escolha interessante.<\/p>\n<h1>Servi\u00e7o sem conex\u00e3o com confirma\u00e7\u00e3o<\/h1>\n<p>A confirma\u00e7\u00e3o neste tipo de servi\u00e7o oferecido pela camada de enlace de dados, garante que os quadros recebidos pelo destinat\u00e1rio s\u00e3o &#8220;integros&#8221;, ou seja, n\u00e3o houve qualquer perda ou dano por parte da informa\u00e7\u00e3o presente no quadro.<\/p>\n<p>Esta confirma\u00e7\u00e3o \u00e9 feita atrav\u00e9s de pequenas informa\u00e7\u00f5es ou sinais ACK (ACKnowledge). Caso o servidor (emissor) n\u00e3o receba esta confirma\u00e7\u00e3o ACK por parte de algum quadro, o emissor pode resolver reencaminhar o quadro correspondente, garantindo, portanto, a recep\u00e7\u00e3o \u00edntegra e completa de todos os quadros transmitidos.<\/p>\n<p>Uma falha deste tipo de servi\u00e7o oferecido pela camada de enlace de dados, em rela\u00e7\u00e3o a um servi\u00e7o com conex\u00e3o, seria quanto \u00e0 numera\u00e7\u00e3o dos quadros. Imagine uma situa\u00e7\u00e3o em que ocorra um erro ou perda por parte da confirma\u00e7\u00e3o (ACKnowledge) e o emissor resolva retransmitir o quadro novamente, como os quadros n\u00e3o s\u00e3o numerados, o receptor ficaria impossibilitado de identific\u00e1-lo e descart\u00e1-lo.<\/p>\n<p>Este tipo de servi\u00e7o \u00e9 muito utilizado em aplica\u00e7\u00f5es que exigem alto desempenho, mas a taxa de ru\u00eddo no meio f\u00edsico de transmiss\u00e3o \u00e9 muito alta.<\/p>\n<h1>Servi\u00e7o orientado a conex\u00e3o<\/h1>\n<p>Este tipo de servi\u00e7o oferecido pela camada de enlace \u00e9 dividido em tr\u00eas etapas. Neste servi\u00e7o, as m\u00e1quinas de origem e destino, estabelecem uma conex\u00e3o antes dos dados serem transmitidos: na primeira etapa \u00e9 estabelecido uma troca inicial de informa\u00e7\u00f5es entre as duas camadas de enlace atrav\u00e9s de vari\u00e1veis e contadores para controlar quais quadros foram recebidos e quais n\u00e3o foram recebidos.<\/p>\n<p>Ap\u00f3s esta troca de informa\u00e7\u00f5es, os quadros s\u00e3o transmitidos. E, novamente, uma outra troca de informa\u00e7\u00f5es a libera\u00e7\u00e3o de vari\u00e1veis e buffers para o encerramento da conex\u00e3o.<\/p>\n<p>A partir da abertura de uma conex\u00e3o, a camada de enlace do emissor passa a enumerar todos os quadros encaminhados, fazendo com que eles sejam recebidos uma \u00fanica vez e na ordem correta, impedindo assim, a retransmiss\u00e3o de m\u00faltiplos quadros no caso de uma confirma\u00e7\u00e3o perdida.<\/p>\n<p>Outra vantagem do servi\u00e7o orientado \u00e0 conex\u00e3o, \u00e9 o controle de fluxo de informa\u00e7\u00f5es entre emissor, receptor e os roteadores intermedi\u00e1rios que participam da comunica\u00e7\u00e3o.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Enquadramento<\/b><\/p>\n<div>Como vimos na introdu\u00e7\u00e3o, umas das principais finalidades da camada de enlace de dados \u00e9 oferecer servi\u00e7os \u00e0 camada de rede. A principal fun\u00e7\u00e3o da camada f\u00edsica, \u00e9 receber e transmitir um fluxo de bits brutos e tentar lev\u00e1-los ao seu destino, mas a camada f\u00edsica n\u00e3o consegue &#8220;garantir&#8221; que esse fluxo de bits esteja livre de erros.Neste caso surge outra fun\u00e7\u00e3o primordial da camada de enlace que \u00e9 detectar os erros, caso existam e corrigi-los. Uma das pr\u00e1ticas mais utilizadas pela camada de enlace de dados \u00e9 dividir o fluxo de bits em quadros e verificar a sua integridade atrav\u00e9s de algoritmos matem\u00e1ticos chamados\u00a0<em>checksums<\/em>.<\/p>\n<p>Um dos m\u00e9todos utilizados para fazer esse enquadramento, \u00e9 a utiliza\u00e7\u00e3o de intervalos entre os quadros, mas a probabilidade de que esses intervalos sejam alterados \u00e9 muito grande, pois a maioria das redes de comunica\u00e7\u00e3o de dados n\u00e3o oferecem qualquer garantia quanto a este recurso. Por isso, outros m\u00e9todos foram criados.<\/p>\n<p>Nesta parte do artigo veremos os principais m\u00e9todos de enquadramento, como:<\/p>\n<ul>\n<li>Contagem de bits ou caracteres.<\/li>\n<li>Inser\u00e7\u00e3o de caracteres iniciais e finais (character stuffing).<\/li>\n<li>Assinatura &#8211; flags iniciais e finais, com inser\u00e7\u00e3o de bits (bits stuffing).<\/li>\n<\/ul>\n<h1>Contagem de bits ou caracteres<\/h1>\n<p>Este \u00e9 o mecanismo mais simples utilizado para gerar o quadro, o protocolo de enlace do receptor conta o n\u00famero de bits recebidos a partir do in\u00edcio do quadro, fechando o quadro quando o n\u00famero total de bits for alcan\u00e7ado.<\/p>\n<p>Embora seja um m\u00e9todo simples, ele pode falhar em caso de problemas de sincronismo, pois qualquer falha de contagem, impedir\u00e1 n\u00e3o s\u00f3 a recep\u00e7\u00e3o do quadro como a dos quadros posteriores.<\/p>\n<p>Mesmo assim, este m\u00e9todo \u00e9 ainda utilizado como no caso do Ethernet &#8211; protocolo da camada f\u00edsica &#8211; que utiliza esse mecanismo de contagem para identificar o limite final de cada quadro.<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/1378743831.figura3.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_1378743831.figura3.jpg\" width=\"500\" height=\"375\" border=\"0\" \/><\/a><br \/>\n[Figura 3] Contagem de caracteres<\/div>\n<h1>Inser\u00e7\u00e3o de caracteres iniciais e finais<\/h1>\n<p>Este m\u00e9todo de enquadramento resolve, de alguma forma, o problema de sincroniza\u00e7\u00e3o ap\u00f3s um erro, pois cada quadro come\u00e7a com a sequ\u00eancia dos caracteres ASCII DLE STX e termina com a sequ\u00eancia dos caracteres DLE ETX.<\/p>\n<p>O significado das siglas s\u00e3o:<\/p>\n<ul>\n<li>DLE \u2192 Data Link Escape<\/li>\n<li>STX \u2192 Start of TeXt<\/li>\n<li>ETX \u2192 End of TeXt<\/li>\n<\/ul>\n<p>A fun\u00e7\u00e3o do caractere STX &#8211; (Start of TeXt) \u00e9 delimitar o inicio dos quadros, j\u00e1 o caractere ETX &#8211; (End of TeXt ) \u00e9 delimitar o final de cada quadro. Assim, caso o destinat\u00e1rio perca as fronteiras entre os quadros, ele ter\u00e1 que localizar a sequ\u00eancia dos caracteres DLE STX ou DLE ETX, para saber se os quadros est\u00e3o no in\u00edcio ou se est\u00e3o no fim.<\/p>\n<p>Uma t\u00e9cnica muito utilizada neste tipo de enquadramento \u00e9 a character stuffing, na qual a camada de enlace de dados do emissor, adiciona um caractere ASCII DLE antes de cada caractere DLE, presente acidentalmente nos dados a serem transmitidos.<\/p>\n<p>A camada de enlace do receptor remove a sequ\u00eancia DLE antes dos dados serem passados para a camada de rede, assim \u00e9 poss\u00edvel distinguir um enquadramento DLE STX ou DLE ETX de uma sequ\u00eancia de caracteres contidas nos dados do emissor, como: dados bin\u00e1rios e n\u00fameros com ponto flutuante com base na presen\u00e7a ou aus\u00eancia de uma sequ\u00eancia ASCII DLE. As sequ\u00eancias DLE dos dados ser\u00e3o sempre duplicadas.<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/figura4.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_figura4.jpg\" width=\"500\" height=\"345\" border=\"0\" \/><\/a><br \/>\n[Figura 4]<\/div>\n<p>Fluxo de dados antes do processo de inser\u00e7\u00e3o (stuffing), depois do processo de inser\u00e7\u00e3o e depois do processo de remo\u00e7\u00e3o (destuffing).<\/p>\n<h1>Assinatura<\/h1>\n<p>Com a evolu\u00e7\u00e3o das redes de comunica\u00e7\u00e3o de dados, a dificuldade de manter um mecanismo de enquadramento utilizando caracteres do tipo ASCII, se tornaram cada vez maiores, surgindo novas t\u00e9cnicas de enquadramento de dados.<\/p>\n<p>Uma delas, \u00e9 a assinatura atrav\u00e9s do mecanismo de flags iniciais e finais, utilizando a t\u00e9cnica de inser\u00e7\u00e3o de bits (bits stuffing).<\/p>\n<p>Este m\u00e9todo funciona atrav\u00e9s da utiliza\u00e7\u00e3o de sequ\u00eancias especiais (assinatura) de bits no in\u00edcio e final de cada quadro. Atrav\u00e9s da identifica\u00e7\u00e3o destas sequ\u00eancias pelo receptor, os quadros s\u00e3o delimitados.<\/p>\n<p>No caso da presen\u00e7a dos bits de assinatura dentro dos campos normais do quadro, o protocolo do transmissor insere um bit 0 (zero), impedindo a confus\u00e3o com a sequ\u00eancia de bits da assinatura.<\/p>\n<p>No receptor, neste exemplo, ser\u00e1 retirado o bit 0 a cada cinco bits 1, restaurando assim, a mensagem original. A assinatura (01111110) \u00e9 inserida no final da montagem do quadro pelo transmissor, e retirada pelo receptor antes do processo de an\u00e1lise da integridade do quadro.<\/p>\n<p>O m\u00e9todo por assinatura \u00e9 bastante comum, sendo utilizado por diversos protocolos, como: Frame Relay, HDCL e o Ethernet, que utiliza esse mecanismo para marcar o in\u00edcio dos quadros.<\/p>\n<p>\u00c9 importante notarmos que, tanto a inser\u00e7\u00e3o de bits como a inser\u00e7\u00e3o de caracteres, \u00e9 um processo transparente para a camada de rede de ambos os computadores, exatamente como foi comentado sobre o m\u00e9todo de comunica\u00e7\u00e3o virtual utilizado pelo modelo de refer\u00eancia OSI, na qual o programador dos protocolos das camadas adjacentes n\u00e3o se preocupa com as camadas inferiores &#8220;imaginando&#8221; uma comunica\u00e7\u00e3o direta fim-a-fim.<\/p>\n<div><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/figura5.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_figura5.jpg\" width=\"500\" height=\"286\" border=\"0\" \/><\/a><br \/>\n[Figura 5] Inser\u00e7\u00e3o de bits &#8211; bits stuffing<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Controle de erros e fluxo<\/b><\/p>\n<div>\n<h1>Controle de erros<\/h1>\n<p>Como vimos, a camada f\u00edsica transmite diretamente os conjuntos de bits ao receptor, sem se preocupar com poss\u00edveis erros, ou aus\u00eancia de bits, nos conjuntos originalmente entregues \u00e0 camada f\u00edsica do transmissor.<\/p>\n<p>Realmente, a camada f\u00edsica n\u00e3o possui nenhum mecanismo que possa corrigir eventuais meios de comunica\u00e7\u00e3o. Para resolver este problema em um sistema de transmiss\u00e3o de dados, \u00e9 necess\u00e1rio utilizar um mecanismo de an\u00e1lise dos dados recebidos. Esse mecanismo de an\u00e1lise \u00e9 poss\u00edvel se utilizarmos parte dos dados recebidos para verificar e conferir o conjunto completo dos dados.<\/p>\n<p>O fato de estar mais pr\u00f3ximo da camada f\u00edsica, a fun\u00e7\u00e3o de corrigir poss\u00edveis erros de transmiss\u00e3o e permitir certa redund\u00e2ncia nos dados recebidos, est\u00e1 atribu\u00eddo \u00e0 camada de enlace de dados. Outro papel importante desempenhado por esta camada, \u00e9 a detec\u00e7\u00e3o e corre\u00e7\u00e3o de erros, muito utilizado nos servi\u00e7os com confirma\u00e7\u00e3o.<\/p>\n<p>Para fazer o controle de erros, a camada de enlace utiliza dois m\u00e9todos: a retransmiss\u00e3o ou a corre\u00e7\u00e3o dos erros:<\/p>\n<ol>\n<li>O primeiro m\u00e9todo utiliza a retransmiss\u00e3o dos dados pelo emissor quando forem detectados os erros.<\/li>\n<li>E o segundo m\u00e9todo, utiliza a transmiss\u00e3o de c\u00f3digos especiais junto aos dados transmitidos.<\/li>\n<\/ol>\n<p>Esses c\u00f3digos conseguem corrigir os dados eventualmente defeituosos sem a necessidade de retransmiss\u00e3o por parte do transmissor dos dados.<\/p>\n<p>Ambos os m\u00e9todos encontram problemas muito complexos, como a perda de conjuntos completos de dados, pois neste caso n\u00e3o h\u00e1 como detectar a exist\u00eancia de erros, porque parte dos dados desaparecem por completo no trajeto entre transmissor e receptor.<\/p>\n<p>Cronometrar o tempo m\u00e1ximo para a confirma\u00e7\u00e3o de recebimento dos quadros pelo receptor, \u00e9 uma forma de solucionar casos como estes, pois o receptor n\u00e3o enviar\u00e1 nenhuma confirma\u00e7\u00e3o devido a aus\u00eancia dos quadros perdidos durante a conex\u00e3o.<\/p>\n<p>Um outro problema muito comum, \u00e9 quanto \u00e0 ordena\u00e7\u00e3o na chegada dos quadros, caso ocorra uma falha de confirma\u00e7\u00e3o, o receptor poder\u00e1 encontrar dificuldades para descartar os quadros repetidos que ser\u00e3o entregues \u00e0 camada de rede.<\/p>\n<p>Enfim, para solucionar todos estes problemas quanto aos erros de comunica\u00e7\u00e3o, a camada de enlace de dados implementa alguns algoritmos matem\u00e1ticos, como: paridade, checksum e o c\u00f3digo polinomial ou CRC (C\u00f3digo de Redund\u00e2ncia C\u00edclica). Mas devido \u00e0 extens\u00e3o de cada um destes assuntos, eles s\u00f3 poder\u00e3o ser comentados em um pr\u00f3ximo artigo.<\/p>\n<h1>Controle de fluxo<\/h1>\n<p>Outro papel importante exercido pela camada de enlace de dados \u00e9 o controle de fluxo, que nada mais \u00e9 do que a capacidade do receptor de controlar o fluxo de informa\u00e7\u00f5es recebidas do transmissor, fazendo o tratamento das informa\u00e7\u00f5es recebidas sem erro.<\/p>\n<p>Em um ambiente heterog\u00eaneo como a Internet, \u00e9 muito comum um servidor mais r\u00e1pido e com uma largura de banda maior do que o receptor, &#8220;sufocar&#8221; um cliente que, al\u00e9m de possuir uma m\u00e1quina mais lenta, pode estar sobrecarregada com outros processos simult\u00e2neos.<\/p>\n<p>J\u00e1 em um ambiente homog\u00eaneo como as redes locais (Ethernet), poder\u00edamos argumentar:<\/p>\n<p>&#8211; Haveria a necessidade deste controle por parte da camada de enlace de dados? A resposta \u00e9 sim.<\/p>\n<p>Por causa da exist\u00eancia de colis\u00f5es de pacotes de dados, devido \u00e0 exist\u00eancia de m\u00faltiplos transmissores com dados a serem encaminhados.<\/p>\n<p>Geralmente, o controle de fluxo \u00e9 estabelecido no momento do estabelecimento da conex\u00e3o. O controle de fluxo consegue determinar a quantidade de dados que pode ser transmitida, a necessidade do recebimento da confirma\u00e7\u00e3o de um quadro antes da transmiss\u00e3o do outro, e o que fazer, caso a confirma\u00e7\u00e3o do quadro n\u00e3o chegue ou ocorrer erros durante a transmiss\u00e3o dos quadros.<\/p>\n<p>Estes e outros detalhes s\u00e3o abordados quando estudamos alguns dos protocolos de enlace, como os protocolos Simplex (stop-and-wait e canais com ru\u00eddo), os protocolos utilizados em confirma\u00e7\u00f5es no sentido contr\u00e1rio (Piggybacking e Pipeline), al\u00e9m de outros como Sliding Window e Go-Back-N. Mas devido \u00e0 extens\u00e3o e profundidade do assunto, poderemos coment\u00e1-los num pr\u00f3ximo artigo.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Conclus\u00e3o<\/b><\/p>\n<div>Acho que este artigo mostrou, de forma muito simples e clara, a import\u00e2ncia da camada de enlace de dados, n\u00e3o apenas para o controle de erros e de fluxo atrav\u00e9s dos diferentes protocolos de enlace, mas tamb\u00e9m no suporte, tanto para recep\u00e7\u00e3o como para transmiss\u00e3o de informa\u00e7\u00f5es, para a camada imediatamente acima a camada de rede.No modelo de refer\u00eancia OSI (Open Systems Interconnection) vimos que, apesar dos protocolos serem programados visando uma comunica\u00e7\u00e3o virtual (fim-a-fim), outra fun\u00e7\u00e3o importante da camada de enlace, \u00e9 a de oferecer a integridade das informa\u00e7\u00f5es vindas tanto da camada de rede adjacente, como tamb\u00e9m oferecer a integridade das informa\u00e7\u00f5es para as camadas adjacentes superiores, como: transporte, sess\u00e3o, apresenta\u00e7\u00e3o e aplica\u00e7\u00e3o.<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o A fun\u00e7\u00e3o da segunda camada no modelo de refer\u00eancia OSI &#8211; camada de enlace de dados &#8211; \u00e9 converter o fluxo de dados sem formata\u00e7\u00e3o, fornecido pela primeira camada (camada f\u00edsica) em um fluxo de quadros a ser utilizado pela camada de rede.V\u00e1rios m\u00e9todos de enquadramento s\u00e3o utilizados, como a contagem de bits, ou [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[42,51,68],"tags":[340,338,341,339],"class_list":["post-604","post","type-post","status-publish","format-standard","hentry","category-leitura-recomendada","category-linux-linuxrs","category-redes-2","tag-camada","tag-camada-de-enlace","tag-enlace","tag-explicacao-das-camadas-de-enlace"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=604"}],"version-history":[{"count":2,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/604\/revisions"}],"predecessor-version":[{"id":609,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/604\/revisions\/609"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}