Principais protocolos: Etherent, IP, TCP e UDP

Aula 3 · GNU/Linux para Redes de Computadores

Transcrição do áudio

Vimos na aula anterior a questão de endereço, falamos ali sobre endereço IP, endereço McAdwigs e porta. Agora vamos falar sobre protocolos e, naturalmente, os principais protocolos. Vocês têm que lembrar, na verdade, cara, tudo isso que eu falo aqui é superficial. Com detalhes, essa parte teórica, você vai encontrar no curso teórico, que é de graça. Então, vocês viram lá no curso teórico que isso foi criado lá em Onululu, depois isso foi para Dixxherox, isso foi homologado, lógico, não foi a Dixxherox, que homologou isso, como o padrão 802, ou seja, fevereiro de 1980. Vai ser criado um protocolo chamado protocolo Ethernet, que ele é próprio para redes LANs. Ele é péssimo para troncos de comunicação, porque ele é muito grande. Ele pode chegar a 1500, 1500 e poucos bytes. Soma aí, 1500, mais esses pedacinhos aí. É o máximo que ele chegaria. Isso é muito pesado para um tronco. O tronco tem que ser 512 no máximo. Então, se você tem aquele cabo, o Tp, que liga um departamento inteiro, outro departamento inteiro, eu acho que está na hora de você rever o seu infraestrutura, meu amiguinho. Não é porque o cabo é bom, que o protocolo que roda dentro dele é bom para aquilo. Bom, então esse protocolo tem um preâmbulo de 8 bytes para sincronização, o destino e origem, chegando aos 48 bits. 2 bytes ali para tipo. Também hoje em dia você encontra até o label de LAN virtual ali dentro, de VLAN. Logo em seguida você tem um preenchimento. Se você não tem nada de dados para enviar, ele coloca 46 bytes, porque do início ao fim tem que dar 64. Se não desce 64, o que acontece? Tem uma regra que é o seguinte. O primeiro bit que saiu tem que ter chegado no destino para que então o último bit saia. Então você tem que ocupar o canal inteiro. Dizemos que nós temos que ocupar o canal inteiro com o nosso 4. Bom, por isso que existe esse preenchimento de 46 bytes caso não atinge o tamanho de 64 bytes do início ao fim, incluindo todos esses bytes. Logo em seguida eu tenho uma validação se os dados estão errados. Eu não tenho a correção dos dados, por isso que eu utilizado um frame check. É um, como eu posso dizer, repare 4 bytes para validar se 1500 bytes estão certos ou errados. No curso teórico eu explico essa questão. Tem os algoritmos que eu consigo validar como esse, que está certo ou errado. E tem algoritmos que eu consigo corrigir. E temos naturalmente meios em que preciso de um, tem meios de comunicação que eu preciso de outro. Simples. Como o Ethernet cabeado não tem sobre o TPE inclusive, ponta a ponta, nós não temos uma taxa de erro tão elevado, simplesmente validar se está certo ou se está errado já é o suficiente. Então para o quadro do Ethernet. Bom, então nós vimos a questão de endereços, aqui nós temos três computadores, o 9, 2, 6, 8, 50, 2, 1, o 2 e o 3, cada um com seu MAC address. Bom, você viu na teoria, quando vocês dão a teoria, no capítulo de camada de rede, ele é bem categórico lá. A camada 3 oferece um endereço uniforme para qualquer máquina, ou seja, ele está dizendo que por IP eu conseguiria acessar máquinas de dentro da infraestrutura e de fora da infraestrutura. Por um motivo muito simples, o quadro Ethernet é para LAN, ele não é para outra LAN, ele é para LAN que você está. Bom, então nós temos esse problema, olha só o que nós temos que fazer. Antes de eu enviar uma conexão, por exemplo, desculpa, uma solicição de conexão para o banco de dados, MySQL, que está na mesma LAN que o meu serviço HTML, em caso poderia colocar aqui o Apache, eu tenho que fazer uma requisação na rede perguntando qual o MAC address do IP 192, 1, 8, 52, 2. Isso vai por um broadcast na rede, através do endereço ffffffff, 1, 2, 3, 4, 5, 6. 6 duplinhas de f, é 1, para caramba, não é que foi um 48 bits em um, rapide. Então não importa se é um switch, se é uma bridge, ele vai retransmitir para todas as portas. E alguém na rede vai responder para ele, olha, meu MAC address é o 03CA4B2C138A. Essa ação é feita então por um protocolo chamado ARP, então na rede roda o tal do ARP. Bom, o que nós podemos compreender aí? Nós temos que confiar na rede. Existe um envenenamento de ARP, mas isso é um papo para o curso Hacker. O curso Hacker eu mostro a possibilidade de envenenamento, mas vamos acreditar que a rede está perfeita. Então os frames, que lá dentro, lá dentro, lá dentro, lá dentro, lá dentro, tem os dados do MySQL, ele vai então pelo, dentro do frame, pela rede, utilizando o MAC address. Então dentro da LAN ele pede o MAC address da máquina, destino, e então envia por quadro, não por pacote. Uma coisa que você tem que saber, e se um banco de dados do MySQL está fora da minha rede, é por isso que existe o default gateway no Windows e existe a rota default no Linux. Ele vai pegar esse endereço IP, que é da LAN, e que é de um router, e vai pedir o MAC address dele, lógico, utilizando o ARP, e vai mandar esse frame de camada 2 lá para o gateway. Aí o gateway vai pegar aquilo, vai ver que o endereço IP de destino não está na sua rede local, vai mandar para a internet, então aí vai, repare. Quando o destino não está na mesma rede que eu, eu faço a requisição ARP na rede, mas solicitando o MAC address do gateway. Isso é uma questão da prova da Cisco, e por incrível que pareça, como a galera erra essa questão? Ou seja, significa que ele não entendeu a distinção da camada 2 para a camada 3, e muito menos a abrangência de acesso da camada 2 e a abrangência de acesso da camada 3, e naturalmente protocolo ARP. A falta de conhecimento você perde uma questão boba, questão boba boba boba. Um pouco mais acima, então, dessa pilha de protocolos, se chamamos de pilha de protocolos, estamos nos baseando no modelo OZ, nós temos então o protocolo IP que tem o endereço IP. Se for IPv4, então hoje o que nós conhecimos como protocolo IP. Se é o IPv6, o endereço, então chamamos de protocolo IPv6. Muitos sistemas já chamam de IPv4 e IPv6, mas quando o IPv6 foi criado, nos sistemas ninguém tinha imaginado que precisaria de poversão. Então, alguns sistemas têm a versão IPv4 e IPv6, outros sistemas só assim, IP subintent4 e IPv6, que é o novo. Bom, protocolos que permitem um acesso uniforme tanto para redes locais quanto para redes distantes, acabei de explicar essa questão do Gateway, por exemplo. Repare que eu jamais conseguiria alcançar uma máquina remota em outra rede por quadro de camada 2, só mesmo pela camada 3, e aí tem que fazer aquele arpe, é para fora, então peço o arpe do IP do Gateway, é para dentro, então peço o arpe do IP da máquina interna. Endereço que permite se fazer roteamentos, então tem um endereço aqui que permite que nós pudemos fazer endereçamentos e roteamento. Ficou meio estranho, né? É sobrecarga de trabalho. Então, com o protocolo IP, nós conseguimos fazer rotas externas, nós conseguimos fazer rotas para uma rede específica, nós conseguimos fazer rotas para um endereço IP específico ou para uma região. Então, nós podemos, naturalmente, fazer regras muito complexas, atingindo múltiplos alvos com uma única regra. Exemplo, imagino que eu tenha a rede A e a rede B, na minha empresa, então eu tenho um router entre elas, porque elas não se comunicariam, o router está lá. Quando a comunicação chega da rede A para a rede B, o router, ele não precisa de ter uma regra para cada computador na rede B, simplesmente uma regra para aquela rede, então a carta vai, a carta está indo, chegando na rede de destino, a achar máquina adequada. Bom, então esse é o protocolo IP v4, podemos observar aqui que nós temos, então, o endereço de origem ou o endereço de destino de 32 bits, de 32 bits, qual tipo de protocolo nós vamos encontrar, que aí vai ter, que são de datagrama, vocês viram lá. Bom, o tamanho, algum checksum de validação, sempre que tem checksum de validação, checksum é um algoritmo que valida eu. Isso aqui é um checksum, isso aqui é um checksum, só que isso aqui, naturalmente, vem de um livro, então colocou C, F, C, S, aqui colocou checksum. Bom, o protocolo UDP e TCP, ou seja, são protocolos PDU de camada de transporte, essa nomenclatura, NACISC, inclusive PDU e T de transporte. E muito, muito comum você ver uma galera discutindo, o Dp é mais rápido, mas ele é ruim, cara, não existe ruim, não existe bom. Eu costumo dizer que existe uma necessidade, eu tenho opções e aí eu escolho a melhor opção. Por exemplo, transmissão de vídeo, como você está assistindo agora, para esse problema o Dp é muito bom, muito bom. Para uma videoconferência o Dp é muito bom, entre, por exemplo, chamadas em tempo real, o Dp é muito bom. Agora, o TCP é muito bom quando você precisa de um controle durante todo o processo de abertura de conexão, transmissão e finalização. Por isso que você tem número de sequência, você tem acnolids para verificar se o outro lado recebeu ou não, e os famosos flags. O SIN, o FIN, o ARG, o ACK, o URG, um checksan também para validar qualquer possibilidade de erro. Veja que o Dp é mais simples. Tem muitos livros que erroneamente, no meu ponto de vista, é errado dizer que o cabeçado e o TCP é muito maior que o Dp, por isso o TCP é lento. Então o cara não entendeu nada, o cara não entendeu nada. O que acontece? Se você é programador, você vai entender se você não é programador, talvez você vai ter que parar para pensar agora. Sempre que nós criamos mais variáveis em um código, significa que nós vamos ter um algoritmo mais complexo. Eu não criaria uma variável para não usar, eu crio para usar. Então o algoritmo vai ser mais complexo, vai ter mais condições, vai ter mais validações. Bom, podemos então vulgarmente olhar para esses campos e imaginar que são variáveis no seu algoritmo de rede. Olha que interessante. O TCP tem muito mais campos, por exemplo, número de sequência para validar se a sequência está certo ou errado, se chegou fora o número de urgência, o ponteiro de urgência, validação se está errado ou não. Ou seja, esse algoritmo, o código do TCP, ele é mais burocrático. Só para você ter uma noção, nenhum TCP começa assim mandando dados. Você tem que fazer o Handshake de três vias. Já o Dp não, o Dp já começa mandando dados. Nem Handshake de três vias faz, nem validação de nada. Então se você observar, a questão não é um número de bits no cabeçalho que vai dizer que o TCP, o Dp, que é mais rápido, mais lento, é o algoritmo e aprenda você que não é programador. Viu um monte de variável na tela? Esse algoritmo é mais complexo, ele é mais burocrático. Ele vai consumir muito mais tempo de execução. Entendeu? Por isso que eu sou contra alguns conteúdos que tem por aí na internet. Bom, conforme eu falei, só para você ter uma noção de como ele é complexo, eu mando um recorte desse aqui do TCP para a origem para o destino. Eu coloco um número de sequência 1, aí eu coloco o Aqnolid 0, estou mandando, e aí eu flego o campo sim, como legal, sim, igual o resto do 0. Isso vai aqui, do cliente lá. Não tem nenhuma informação. Você está mandando seu DVD da Shakira? Não foi nem um pedacinho ainda, isso é só para abrir a conexão. Então Aqn2 é feita uma validação. O TCP tem um problema, não pode ter duplicata de início de conexão. Então, quem propôs isso foi um cara chamado Tom Wilson, lá em 1990, acetada. Então ele vai fazer uma solicitação passando um número e um flag sim ativo. Opa, então, pera aí. Se o cliente está na rede A e o servidor está na rede B, eu posso fazer uma regra negando qualquer passagem de protocolo TCP com tudo 0 menos o sim da rede A para rede B. Então eu bloquei o início de conexão. Víram como é que nós bloqueamos o início de conexão, ou seja, uma conexão não autorizada de uma rede para outra, é só você pegar se o pacote TCP está passando com o sim ativo, o resto desativado. Nós sabemos que é um pedido de conexão, cara. Da hora, né? Então digamos que a nossa rede não teve nenhuma trava e permitiu. Então, em dois, é primeiro é validado se os dados que estão vindo aqui em número de sequência já não foram utilizados anteriormente, se a conexão já não foi aberta anteriormente, legal, não foi aberta anteriormente. Então eu posso continuar. Aí eu continuo em três aqui. Se eu não pudesse continuar, ou seja, se é uma duplicata, eu retornaria em Nacknolage, ou seja, você vai na aqui, é nota Acknolage, tá? E aí ele vem cá e ele devolve para mim o que, digamos que deu tudo certo, um âmbito é duplicata, então ele retorna o sim, mas o ACK, ele me retorna um Atnolage. Então vamos dar uma volta aqui no nosso quadro aqui. Na volta, então, nesse passo, o sim fica ativo aqui, tá? O Atnolage fica ativo com 1, o resto fica com 0. Aqui vai ter o número de sequência que eu mandei no sim e aqui vai ter o Acknolage, que é uma conta. Imagina tipo assim, é 1 mais 1. 1 mais 1, então eu sei que chegou do outro lado e foi possível compreender, fez um cálculo, me retornou, aí aqui eu olho assim e viro, nossa, legal. Fechou, fechou. Recebi aqui desse lado, verifiquei, registrei na minha tabela que a conexão já foi iniciada então eu retorno o Acknolage mais 1, um cálculo bobo de novo, só pra cá. Então repare que agora nessa passagem o sim vai desativado, o Acknolage vai ativo, o resto vai zero, lógico. E o Acknolage sofre um incremento pra que o outro lado saiba que eu também fui capaz de entender, eu também fui capaz de processar. Só depois desse passo 5, então o cliente começa a mandar o DVD da Shakira pro upload. Só pra vocês terem uma noção. O DVD da Shakira é uma grande brincadeira minha, tá? A grande zoeira minha. Vamos lá, mas vocês entenderam, né? Cara, isso é dar hora demais porque é baseado nisso aqui que nós percebemos algumas coisas. Nós conseguimos fazer regras para impedir o hacker de nos atrapalhar. Nós conseguimos cercar perímetros. Macana, tá? Se estamos trabalhando com modelo TCP e P acima da camada de transporte, temos a camada de aplicação. Então se não estamos trabalhando com modelo TCP, nós temos acima a camada de aplicação. É caso contrário, vocês são em apresentação. E aí olha só que interessante, os protocolos que estão acima lá na camada de aplicação seria FTP, HTTP, SSH, SMTP, POP, Telnet, XMIP e Rc, entre outros protocolos que existem. A função da camada de aplicação é nos prover uma forma como posso dizer assim, fácil e uniforme de acessar serviços da rede. Então eu programador, eu programo acima da camada de aplicação e eu utilizo esses protocolos. Então o espertinho trocou a porta do FTP de 21, que é o padrão para 2121. Então nós podemos fazer uma regra no conteúdo, mas isso pesa um pouco mais nas nossas regras. Então por exemplo o cara trocou aqui a porta de destino que viria 2121, é comum colocar 2121. E aí minha regra não funcionou. Então eu posso sim fazer um filtro por protocolo de camada de aplicação, mas lembrando que se consome um pouco mais. Na próxima aula, vou falar sobre segmentação. Vamos aprender a segmentar uma rede para poder entender como o router fica no meio de dois segmentos dentro de uma empresa, que seria o primeiro passo para você organizar uma rede que seria um grande pandemônio, tudo muito louco lá dentro. Primeiro passo seria colocar um router e fazer segmentação e depois pensar nas regras firewall. Seria ideal se você já tivesse anos atrás projetado tudo isso e a rede tivesse saído do zero assim. Vamos dar uma olhada na próxima aula. Até lá, até mais, tchau.
Voltar ao curso