Podemos
dizer que a função de qualquer rede é simplesmente transportar
informações de um ponto a outro. Pode ser entre dois micros ligados
através de um simples cabo cross-over, ou pode ser entre dois servidores
situados em dois continentes diferentes. Do ponto de vista do sistema
operacional e dos aplicativos, não faz muita diferença.
No
nível mais baixo temos os cabos de rede, que são enquadrados no
primeiro nível do modelo OSI (camada física) e se destinam unicamente a
transportar os impulsos elétricos de um micro a outro. Ao utilizar uma
rede wireless ou cabos de fibra óptica, os sinais são transmitidos
(respectivamente) na forma de sinais de rádio ou luz, mas a função
básica (transportar dados de um ponto a outro) continua a mesma,
independentemente da mídia utilizada.
Em
seguida temos os switches ou hub-switches que utilizamos para
interligar os micros da rede local. Na verdade, o termo "hub-switch" foi
inventado pelos fabricantes para diferenciar os switches mais baratos,
que carecem de funções mais avançadas dos switches "de verdade", que
possuem mais portas e incluem interfaces de administração elaboradas.
O
termo "switch" está mais relacionado ao modo de funcionamento do
aparelho e não ao seu custo ou funções. Um switch é capaz de encaminhar
os frames Ethernet para o destinatário correto, fechando "circuitos"
entre as duas portas envolvidas, enquanto um hub antigo simplesmente
repete os sinais recebidos em todas as portas.
Assim
como as placas de rede, os switches trabalham no nível 2 do modelo OSI
(link de dados), enviando frames Ethernet e endereçando os outros
dispositivos da rede usando endereços MAC ao invés de endereços IP. Só
para efeito de comparação, os hubs "burros" trabalham no nível 1, assim
como os cabos de rede. Eles são meros dispositivos de transmissão, que
não realizam processamento.
Os
frames Ethernet são "envelopes" para os pacotes TCP/IP. O aplicativo
(um navegador, um servidor web, ou qualquer outro aplicativo
transmitindo dados pela rede) envia os dados ao sistema operacional, que
divide o stream em pacotes TCP/IP e os envia à placa de rede. As placas
de rede (que não entendem o protocolo TCP/IP) tratam os pacotes como um
fluxo de dados qualquer e adicionam mais uma camada de endereçamento,
desta vez baseada nos endereços MAC dos dispositivos da rede, gerando o
frame Ethernet que é finalmente transmitido. Ao chegar do outro lado, o
"envelope" é removido e o pacote TCP/IP é entregue.
O
uso dos frames adiciona alguns bytes adicionais a cada pacote
transmitido, reduzindo sutilmente o desempenho da rede. Veja o diagrama
de um frame Ethernet:
A
transmissão de cada frame começa com o envio de 8 bytes, contendo um
preâmbulo e uma sequência de inicialização. Ele serve para avisar outros
micros da rede de que uma transmissão está prestes a começar. Estes 8
bytes iniciais não fazem parte do frame e são descartados pelas placas
de rede depois de recebidos, por isso não aparecem no relatório mostrado
por sniffers de rede, como o wireshark.
O
pacote TCP/IP é incluído dentro do campo de dados, que pode incluir até
1500 bytes por frame. Pacotes maiores do que este valor precisam ser
divididos em fragmentos com até 1500 bytes e enviados usando vários
frames.
Junto
com os dados é transmitido o cabeçalho do frame (14 bytes no total),
que inclui o endereço MAC de destino, endereço MAC de origem e um campo
para o tipo de dados e mais 4 bytes finais, que contém códigos de CRC,
usados (pelas placas de rede) para verificar a integridade do frame
recebido. Este cabeçalho é também chamado de "MAC Header". Ao receber
cada frame, a placa de rede usa os 4 bytes (32 bits) de CRC para
verificar a integridade do frame recebido e, caso ele esteja corrompido
ou incompleto, ela o descarta e solicita sua retransmissão.
Dentro
do pacote TCP/IP temos novos headers, que contém o endereço IP de
origem, endereço IP de destino, porta de origem, porta de destino,
códigos de verificações, número do pacote, campo para inclusão de opções
e assim por diante.
No
total, temos 20 bytes para os headers do protocolo TCP e mais 20 bytes
para os headers do protocolo IP, totalizando 40 bytes de headers por
pacote. Desta forma, temos 1460 bytes de dados em um pacote de 1500
bytes e 536 bytes de dados em um pacote de 576 bytes:
À
primeira vista, pode parecer estranho que sejam incluídos headers
separados para o TCP e o IP, mas a verdade é que os dois são
complementares e por isso não podem ser dissociados. É por isso que
usamos o termo "TCP/IP", como se os dois protocolos fossem uma coisa só.
Os
headers do protocolo IP incluem o endereço IP de origem e de destino,
enquanto os headers do TCP incluem a porta de origem e de destino, por
exemplo. Em resumo, podemos dizer que o IP se encarrega da entrega dos
pacotes, enquanto o TCP se encarrega da verificação de erros, numeração
de portas e tudo mais.
Como
vimos anteriormente, o TCP/IP permite o uso de pacotes com até 64
kbytes, mas o tamanho de pacote mais usado é de 1500 bytes, que
equivalem ao volume de dados que podem ser transmitidos em um único
frame Ethernet.
Em
um pacote de 1500 bytes, temos até 1460 bytes de dados e 40 bytes
referentes aos headers IP e TCP. Arquivos e outros tipos de informações
são transmitidas na forma de sequências de vários pacotes. Um arquivo de
15 KB, por exemplo, seria dividido em um total de 11 pacotes; os 10
primeiros contendo 1460 bytes cada um e o último contendo os últimos 760
bytes. É graças aos códigos de verificação e numeração dos pacotes que
arquivos grandes podem ser transmitidos de forma íntegra mesmo através
de conexões via modem ou links wireless, onde diversos pacotes são
corrompidos ou perdidos. Basta retransmitir os pacotes extraviados ou
danificados quantas vezes for necessário. :)
O
tamanho dos pacotes pode variar também de acordo com o meio de
transmissão usado. No ADSL PPPoE, por exemplo, são utilizados pacotes de
1492 bytes, pois o protocolo usado demanda o uso de 8 bytes adicionais
para o header. Nas conexões discadas, onde a conexão é mais lenta e a
perda de pacotes é mais comum, são geralmente utilizados pacotes de
apenas 576 bytes. Existem ainda casos de pacotes maiores, utilizados em
situações específicas.
Dentro
da rede local, temos um total de 1518 bytes transmitidos para cada
pacote TCP/IP de 1500 bytes, incluindo os 14 bytes do header e os 4
bytes de CRC. Se formos incluir também os 8 bytes iniciais, que contém o
preâmbulo e a sequência de inicialização, o número sobe para 1526
bytes. Considerando que cada pacote contêm apenas 1460 bytes de dados,
temos 66 bytes de overhead no total, o que corresponde a quase 5% do
volume de dados transmitidos.
Em
uma rede local, que trabalha a 100 ou 1000 megabits, isso não faz muita
diferença, mas na Internet isso seria um grande desperdício. Por isso,
os roteadores se encarregam de eliminar estas informações
desnecessárias, retransmitindo apenas os pacotes TCP/IP propriamente
ditos. É por isso que não é possível criar regras de firewall baseadas
em endereços MAC para pacotes vindos da Internet: os endereços MAC fazem
parte das informações incluídas no frame Ethernet, que são descartadas
pelos roteadores.
Por
trabalharem diretamente com endereços IP, os roteadores são enquadrados
na camada 3 do modelo OSI (camada de rede). Basicamente, são roteadores
que cuidam de todo o trafego de dados na Internet. Você pode utilizar
um hub ou switch dentro da sua rede local, mas ao acessar a Internet
você sempre utiliza um roteador, seja um roteador Cisco de grande porte,
seja um modem ADSL ou um micro com duas placas de rede compartilhando a
conexão.
Créditos : http://www.gdhpress.com.br
Nenhum comentário:
Postar um comentário