quarta-feira, 5 de janeiro de 2022

Ergue-se um novo paradigma na internet

A demanda atual de conteúdo na internet envolvendo voz e vídeo por aplicativo, stream de filmes e séries, mineração e sistema de criptomoedas em sistemas distribuídos, está levando a internet como conhecemos baseada na arquitetura TCP/IP a exaustão. Faz tempo, remendos vem sendo feitos  para que o IP consiga lidar com mudanças no perfil da internet dos últimos anos. Mobilidade e segurança não são fortes desta plataforma e problemas de escalabilidade tornam ainda mais evidentes as limitações. O uso de técnicas como NAT e o upgrade para v6 não são suficientes para suprir as demandas de serviços no cenário atual. 

Na contrapartida, surge uma nova abordagem para a internet chamada ICN, do inglês Information Centric Network. Nesta abordagem, a demanda de tráfego é dada pelo conteúdo procurado em vez de centrar nos hosts que o detém. Isso facilita a implementação em cenários de mobilidade. Além disso, a mais promissora das arquiteturas neste paradigma chamado NDN, do inglês Named-data Network, possui segurança intrínseca nos dados, e escalabilidade nativa, visto que o nome do conteúdo é quem determina o tráfego. NDN já possui um cenário de testes com 36 sites espalhados pelo mundo e um deles fica aqui na Bahia, na UFBA. Pesquise mais sobre NDN em named-data.net.

quarta-feira, 31 de março de 2021

Falando em armazenamento e vazão.

 Como profissionais de redes e tecnologia, nós nos deparamos com tantos jargões e terminologias que às vezes  não percebemos o real significado deles. Uma nuance importante que por vezes os profissionais de tecnologia não conhecem é a terminologia de medida para armazenamento ou carga, e vazão, tambem conhecida como troughput. O armazenamento diz respeito a capacidade de uma memória seja de massa ou randômica, ou até mesmo a transferência de um arquivo pela rede, em termos de tamanho do conteúdo, e medimos em XB ou XBytes, sendo o X substituído pela grandeza conveniente, kilo, mega, giga etc. Então, um episódio de game of thrones por exemplo, tem 1.8GB, ou 1.8 gibabytes, note GB letras maiúsculas. Neste contexto, se você possui um plano de celular de 8GB, você conseguiria baixar ou assistir no streaming este episódio cerca de 4 vezes. Já a medida xbps ou bits por segundo, nos informa a velocidade ou vazão de dados na rede. Leia-se x por kilo, mega, giga ou tengiga etc com letras minúsculas, e, então, temos megabits por segundo ou mbps a medida da velocidade, vazão ou troughput da rede. Se sua rede tem velocidade de 100mbps você baixaria o eppisódio acima em cerca de 18 segundos. Se seu 4G for turbinado e vocẽ quiser gastar estes dados móveis mesmo, você baixará este episódio em cerca de 3 minutos. Então, agora você não vai mais sair falando por aí que velocidade dos seus dados móveis é 8GB ok? E nem que a internet de sua casa é 120GB. Velocidade em bps e carga ou armazenamento é Byte.

Abraço e até o próximo post!

quarta-feira, 24 de março de 2021

SSTORE5 - Loja de acessórios de celulares e informática

 Tenho uma dica para você que gosta de tecnologia. Acessórios de computadores, notebooks, celulares e tablets com frete grátis para toda Salvador, garantia e preço baixo. Se você acessar a loja, diga que viu a propaganda no meu blog e ganhe mais 10% de desconto acumulativo ao desconto de inauguração da loja. São até 40% de desconto. Tem HD, SSD, SDCARD, Pendrives, Carregadores de celulares, cabos usb, fones de ouvido bluetooth e com fio, kits de teclado e mouse etc. Click no link aqui em baixo e conheça.

https://sstore5.lojavirtualnuvem.com.br

sábado, 2 de janeiro de 2021

Emprego das PDU's corretas no dia-a-dia do engenheiro de redes

No dia-a-dia de profissional de redes trabalhamos com tipos de "pacotes" de diferentes protocolos, que atuam em diferentes camadas do modelo de referência OSI da ISO. Por exemplo, quando trabalhamos com protocolo ethernet, estamos trabalhando com um protocolo da camada 2 do modelo OSI, e assim, chamamos de frame ethernet. Cada camada por onde os dados trafegam na rede possui uma unidade própria chamada de PDU ou protocol data unit que genericamente dizemos ser um pacote. Porém, no ambiente de tratamento de falhas ou de desenho de redes, cada PDU possui o seu próprio nome, a saber:

#camada física: bit

#camada de enlace: frame ou quadro

#camada de rede: pacote

 #camada de transporte: datagrama ou segmento 

#camadas superiores: dados ou mensagens 

Portanto, um browser requisita ou envia dados por ser inerente a camada de aplicação, um aplicativo de e-mail ou chat, envia e recebe mensagens pelo mesmo motivo. Temos frames ethernet ou frame relay ou em outro protocolo link layer. Já os protocolos de roteamento e roteados como OSPF e IP enviam pacotes, enquanto que TCP e UDP tem segmentos ou datagramas. 

Agora você pode usar a PDU correta ao tratar incidentes de rede, e de quebra domina mais um skill para o CCNA.

Até a próxima!









segunda-feira, 26 de outubro de 2020

Divisão e Conquista e Algorítimo Merge-Sort parte 2

Vimos que o número total de elementos a serem intercalados neste passo é r-p+1 e que este também é o tempo levado pelo procedimento MERGE. agora o algorítimo sugerido a seguir faz este procedimento de organizar de forma crescente os subconjuntos de cartas que já estão ordenadas.


MERGE(A, p, q, r)

1    n1= q - p + 1

2    n2= r - q 

3    sejam L[1..n1 + 1] e R[1.. n2 + 1] novos arranjos

4    for i = 1 to n1

5        L[i] = A[p + i - 1]

6    for j = 1 to n2

7        R[j] = A[q + j]

8    L[n1 + 1] = z

9    R[n2 + 1] = z

10    i = 1

11    j = 1

12     for     k = p to r

13        if L[i] <= R[j]

14            then  A[k] = L[i]

15                    i = i + 1

16            else A[k] = R[j]

17                    j = j + 1

    

O algorítimo acima funciona assim: linhas 1 e 2 calculam as extensões dos subarranjos a serem organizados. A linha 3 cria mais dois Arranjos que recebem os L e R. Na linha 4 e 5 copia o Arranjo A[ p .. q]  em L[1 .. n1] e as 6 e 7 faz o mesmo para A[ q + 1 .. r] em  R[1 .. n2]. As linhas 8 e 9 possuem uma nuance interessante. Aplica-se aqui uma carta de nome z que é um marcador indicando uma carta de valor infinito que já não precisa ser ordenada. Estas cartas são colocadas nas extremidades dos arranjos L e R. De 10 a 17 os r - p + 1 passos básicos são executados. 

No próximo post vamos fazer a análise da corretude deste algorítimo e depois implementar o MERGE-SORT de fato, introduzindo a recursividade. Até lá!


Algoritmos / Thomas H. Cormen... [et al.] ; [tradução Arlete Simille Marques]. - Rio de Janeiro : Elsevier, 2012. il.
Tradução de: Introduction to algorithms, 3rd ed.
Cap 2.



domingo, 20 de setembro de 2020

Divisão e Conquista e algorítimo Merge-Sort part1

Até aqui, no algorítimo Isertion-Sort usamos uma técnica de projeto de algorítimo chamada incremental, e provamos sua funcionalidade usando a técnica de invariante do laço. Para o algorítimo Merge-Sort usaremos uma técnica chamada de Divisão e Conquista. Esta técnica usa no geral, a recursividade, um método em que o algorítimo chama a si mesmo durante a solução de um problema. A divisão e conquista consiste em dividir o problema em instancias cada vez menores a ponto de ele se tornar bem simples. Após isso, o algorítimo recorre recursivamente a si mesmo pela solução destes pequenos problemas resultantes. No fim, ele combina as mini-soluções em uma solução grande para o problema original. A seguir, veja os três passos para a aplicação da técnica da divisão e conquista:

Dividir: o problema é dividido em subproblemas cada vez menores até se tornarem simples de resolver

Conquista: O algorítimo resolve o problema recursivamente, ou se o problema é pequeno o bastante, resolve direto.

Combinar: as soluções dos subproblemas são combinadas para formar a solução do problema original.

O algorítimo Merge-Sort segue à risca este paradigma. Ele Divide a sequencia a ser ordenada de n elementos em subsequências de n/2 cada, executando o passo da DIVISÃO. Depois segue ordenando as subsequencias recursivamente utilizando a intercalação, o que configura o passo da CONQUISTA. Por último o passo da COMBINAÇÃO que é conseguida intercalando as subsequências de forma a gerar a resposta ao problema original.

A recursividade deixa de existir quando a sequencia tiver cumprimento 1(ou seja, ordenada por si só). O passo mais importante no Merge-Sort é o da combinação onde recorremos ao processo MERGE(A,p,q,r) em que A é um arranjo e p,q,r são índices de enumeração onde p=<q<r partindo da premissa que A[p...q] e A[q+1...r] já estão ordenados. À partir disso, forma-se um único sub-arranjo ordenado que ficará no lugar de A[p...r]. Este procedimento leva um tempo teta(n) onde n= r-p+1. 

No próximo post, o algoritmo MERGE. Até lá!



Algoritmos / Thomas H. Cormen... [et al.] ; [tradução Arlete Simille Marques]. - Rio de Janeiro : Elsevier, 2012. il.
Tradução de: Introduction to algorithms, 3rd ed.
Cap 2.




quinta-feira, 6 de agosto de 2020

Ordem de crescimento

Você percebeu que algumas abordagens abstrativas foram usadas para simplificar a análise do Insertio-Sort. Os custos reais foram substituídos por custos abstratos definidos pelas constantes ci. Depois até mesmo estas constantes foram desprezadas porque elas nos davam mais detalhes do que, de fato, precisávamos. Então expressamos o tempo de pior caso como an²+bn+c para constantes a, b e c que dependem dos custos abstratos ci. Porém, ao ignorarmos inclusive este custo abstrato, facilitamos ainda mais a estimativa T(n). Mais uma abstração simplificadora é feita aqui, e definimos assim o que chamamos de taxa de crescimento ou ordem de crescimento. Neste caso, consideramos apenas o primeiro termo an² ou seja, o termo mais significativo, pois os termos de ordem mais baixa são insignificantes para grandes valores. Ignoramos a constante inicial pois não pesa nos cálculos de crescimento. Com toda esta abstração da matemática envolvida, afirmamos que a ordem de crescimento do algorítimo de ordenação por inserção, tem um tempo de execução teta de n ao quadrado e se representa ø(n²). 
ps.: entenda esse simbolo como a letra teta. Meu notebook não tem. 
No futuro, vamos estudar essa notação com mais cuidado. No memento, queremos apenas entender que para comparar a eficiência de um algorítimo com outro, usamos o tempo de execução como parâmetro. Assim, se um algorítimo tem o tempo de execução na ordem ø(n²) e o outro ø(n), então, o segundo algorítimo tem melhor eficiência. Essa ideia será usada quando terminarmos de analisar a complexidade do algorítimo Merge-Sort para definirmos o mais eficiente na tarefa de ordenação.

Algoritmos / Thomas H. Cormen... [et al.] ; [tradução Arlete Simille Marques]. - Rio de Janeiro : Elsevier, 2012. il.
Tradução de: Introduction to algorithms, 3rd ed.
Cap 2.


 

quarta-feira, 5 de agosto de 2020

Complexidade de pior caso Insertion-Sort - Parte2

O pior caso resulta de quando o arranjo A está totalmente invertido ou em ordem decrescente. Neste caso a linha 4 será executada tanto quanto for o comprimento do arranjo A menos um, ou seja, j vezes porque neste caso, A[i] > k levando a execução das linhas 5 e 6 j - 1 vezes. Disto resulta o somatório de j=2 até n(j) = [n(n + 1)/2]-1 para a linha 4 e j=2 até n(j-1) = n(n-1)/2 para as linhas 5 e 6. Substituindo na nossa fórmula encontrada no post passado e ignorando a constante que é a mesma e sabemos agora não alterará o que queremos saber, que é complexidade da função, temos:

T(n)= n + (n-1) + (n-1) + [n(n+1)/2]-1 + [n(n-1)/2] + [n(n-1)/2 + (n-1) = 3n^2 + 7/2n - 4 
que é uma função quadrática ou do segundo grau. Assim, a complexidade de pior caso deste algorítimo é de quadrática. A complexidade do caso médio não nos interessa a esta análise e normalmente não é utilizada. No próximo post, evoluímos desta fórmula para uma notação mais simples, a ordem de crescimento da função.

1-            for j = 2 to A.comprimento                                    c1  n

2-                k = A[ j ]                                                             c2 (n-1)

3-                i = j - 1                                                                c3 (n-1)

4-                while i > 0 e A[ i ]> k                                         c4 [n(n+1)/2]-1

5-                        A[ i + 1] = A[ i ]                                         c5 [n(n-1)/2]

6-                         i = i - 1                                                       c6 [n(n-1)/2]

7-                A[ i + 1 ] = k                                                       c7 (n-1)





Algoritmos / Thomas H. Cormen... [et al.] ; [tradução Arlete Simille Marques]. - Rio de Janeiro : Elsevier, 2012. il.
Tradução de: Introduction to algorithms, 3rd ed.
Cap 2.


 









sábado, 1 de agosto de 2020

Ordenação Insertion-Sort parte 2 - complexidade de melhor caso

Medimos a complexidade na unidade tempo de execução na maioria das vezes. Em algorítimos como o Insertion-Sort esse tempo de dois fatores: O tamanho da entrada e a ordenação desta entrada. Para ordenar 3 números exige-se um tempo menor do que para ordenar 100. Da mesma maneira, a ordenação destes mesmos números em ordem decrescente leva mais tempo do que se apenas uma parte estiver desordenada. Na análise a seguir, admitamos a constante c em cada linha do pseudo-código como constante de tempo em função da quantidade n de vezes em que esta linha é executada. Daí somamos as resultantes para determinar o tempo de execução. Esta fórmula encontrada será usada para definir uma notação simples para comparar a eficiência de um algorítimo com outro:

linha do pseudo-code                                 constante c de Tempo e número n de vezes da execução

1-            for j = 2 to A.comprimento                                    c1  n

2-                k = A[ j ]                                                             c2 (n-1)

3-                i = j - 1                                                                c3 (n-1)

4-                while i > 0 e A[ i ]> k                                         c4 [n(n+1)/2]-1

5-                        A[ i + 1] = A[ i ]                                         c5 [n(n-1)/2]

6-                         i = i - 1                                                       c6 [n(n-1)/2]

7-                A[ i + 1 ] = k                                                       c7 (n-1)

Associamos ao c o número da linha por razões didáticas. A soma destas linhas é igual ao tempo de execução do algorítimo T(n)

T(n)= c1n + c2(n-1) + c3(n-1) + c4[n(n+1)/2]-1 + c5[n(n-1)/2] + c6[n(n-1)/2 + c7(n-1) 

percebe-se que o tempo de ordenação fica amarrado ao tamanho da entrada n e eventualmente à sua ordenação. Observe que para uma entrada hipoteticamente totalmente ordenada resulta no que chamamos de melhor caso. Vemos que na linha 4 o valor A[i] será <= k e neste caso nunca entraremos no laço, por consequência, esta linha será executada (n-1) vezes e as linhas 5 e 6 não serão executadas. Portanto, T(n)= c1 + c2(n-1) + c3(n-1) + c4(n-1) + c7(n-1)=
= (c1 + c2 + c3 + c4 + c7)n - (c2 + c3 + c4 + c7)  o que nada mais é que uma função de primeiro grau an+b para duas constantes a e b. Em resumo, o tempo de execução do melhor caso é T(n)=an+b.
A seguir, próximo post, análise do pior caso

Algoritmos / Thomas H. Cormen... [et al.] ; [tradução Arlete Simille Marques]. - Rio de Janeiro : Elsevier, 2012. il.
Tradução de: Introduction to algorithms, 3rd ed.
Cap 2.

quinta-feira, 23 de julho de 2020

Algorítimo de ordenação Insertion-Sort

Seguindo o assunto da análise de complexidade de algorítimos, vamos começar analisando um problema clássico que é o de ordenar números naturais de um determinado arranjo de entrada em um arranjo semelhante, entretanto, ordenado de forma crescente. Existem várias abordagens clássicas que solucionam esse problema, mas, precisamos aqui de apenas duas para poder analisar as suas complexidades e estabelecer o "melhor" neste caso.  Inicialmente vamos ver o algorítimo que faz isso por inserção. Ele se chama Insertion-Sort. O problema a ser resolvido é: dado um arranjo A[ a1, a2, a3 ... an ] organizar o arranjo A de forma que A[a1 < a2  < a3 < .... < an]. Segue o pseudo-código de um dos algorítimos que se propõem a realizar esta tarefa:

1-            for j = 2 to A.comprimento
2-                k = A[ ]
3-                i = j - 1
4-                while i > 0 e A[ ]> k
5-                        A[ i + 1] = A[ ]
6-                         i = i - 1
7-                A[ i + 1 ] = k


Este algorítimo começa com o índice j assumindo o valor 2 inicialmente, uma vez que a primeira posição no array já está ordenada. A variável k guarda o valor da posição que está sendo ordenada. O valor do índice i é empurrado uma posição de cada vez para a direita desde que ele seja maior que 0 e seu valor no arranjo maior que a varável k o que implica ser maior que j já que nesta altura da execução k = j
fig.:           i  j 
           1,2,3,4,5
      A [5|4|7|9|2]
A corretude (funcionamento correto) deste algorítimo pode ser comprovada aplicando uma técnica semelhante a indução matemática chamada de invariante de laço (loop invariant) com a qual demonstramos o funcionamento do algorítimo. Os passos da invariante de laço são três:

1- Inicialização: Onde a propriedade é verdadeira antes da primeira iteração
2- Manutenção: Se é verdadeiro antes da primeira iteração, será verdadeiro antes da próxima iteração
3- Término: Quando o loop acaba, a invariante nos fornece o resultado do loop, uma propriedade útil.

Observe no algorítimo que a primeira propriedade está comprovada pois se j = 1, o arranjo 1 até j está ordenado pois só tem um componente que é ele mesmo. A manutenção também é verdade por hipótese, uma vez que é verdade antes da primeira iteração. Agora, executando j a partir do índice 2 mostramos que o loop funciona quando ele retorna um valor útil indicando o término com sucesso. A invariante de laço é usada para provar algorítimos iterativos, porém, quando tratamos de algorítimos recursivos, como o próximo que veremos, o merge-Sort, usamos de fato, a indução matemática para mostrar que a função recursiva funciona. No próximo post, continuamos a análise verificando a complexidade do mesmo.

Algorítimos, Cormen, et al, 2012 3ed. capítulo 2.

quarta-feira, 15 de julho de 2020

O que é análise de complexidade de um algorítimo?

Propomos um algorítimo com a finalidade de resolver problemas do mundo real. Porém, não é raro haver várias propostas de algorítimos para resolver o mesmo problema. E aí neste caso, qual o melhor algorítimo? Então buscamos mensurar a quantidade de recursos que um algorítimo precisa para funcionar. Recursos de processamento, memória e às vezes, largura de banda são os que primeiro nos vêm à mente. No entanto, quando analisamos um algorítimo é muito importante analisa-lo levando em conta o tempo de computação. No modelo de computação genérico temos instruções pré-definidas como instruções de soma, subtração, divisão, multiplicação, desvio condicional, carregamento, cópia e muitas outras. Cada instrução dessa leva um tempo constante para ser realizada. Mas, há algumas tarefas que precisam ser construídas, como por exemplo a ordenação de números naturais. Para isso precisamos construir um algorítimo que realize a tarefa com as operações que a máquina já contempla. Dessa forma, vários modos de realizar a mesma tarefa surgem, e analisar a complexidade de cada solução se torna necessário para eleger a mais aplicável aos recursos disponíveis. No próximo post trarei um problema de ordenação e uma solução para ele. A partir daí, iremos analisar esta proposta e determinar a sua complexidade. Depois vamos verificar outra proposta, com uma abordagem diferente, analisar sua complexidade, e inferir qual o mais eficiente. Inicialmente, o faremos de uma forma generalista, e depois usando ferramentas luxuosas de medida de complexidade, tratando o algorítimo como um modelo matemático de solução de problemas.

Algorítimos, Cormen, et al, 2012 3ed. capítulo 2.  

terça-feira, 7 de julho de 2020

Redes Centradas na Informação - Uma nova abordagem para a internet

A pilha de protocolos TCP/IP é uma das maiores invenções da humanidade. Ela é o principal pilar sustentador da internet, ou seja, a internet do modo como conhecemos hoje só é possível por causa destes protocolos. Com sua capacidade indiscutivelmente incrível de rotear pacotes entre redes atribuída ao IP, seus protocolos de transporte que satisfazem tanto aplicações que exigem confirmação, como as que não possuem esta exigência, este protocolo atende bravamente demandas importantes de dados, vídeo e voz, mesmo sendo projetado numa época em que algumas dessas demandas não existiam ou tinham uma magnitude imensamente menor. Por outro lado, estas mesmas demandas crescentes, vem clamando por ajustes cada vez mais exaustivos para essa pilha de protocolos idosa. Além da escassez de endereços cuidada paliativamente pelo NAT, a dificuldade de mobilidade, necessidade de sistemas de conversão e resolução, esquema de segurança frágil, detre outros, trazem à tona a necessidade de se pensar em substituir esta arquitetura.
O paradigma ICN, Information Centric Network, principalmente, em sua implementação mais conhecida a NDN, named-data network é uma das abordagens mais promissoras. Saiba mais em https://named-data.net

sábado, 4 de julho de 2020

Identificando a Classe do endereço IP pelo primeiro octeto

As faixas de endereços IPv4 são divididas em classes. A classe do endereço ajudou muito a seccionalizar o uso destes endereços. Claro que hoje em dia esse conceito não assume a importância que assumia antigamente, e provavelmente, a importância das classe A, B e C não detém tanta relevância. Porém, as classes D e E ainda identificam ranges de endereço de uso especial ainda muito aplicáveis e de grande relevância. Abaixo uma tabela com os ranges em decimal e suas classes:


Classe    Range de Endereços                         

A           0.0.0.1 - 126.255.255.255
B           128.0.0.0 - 191.255.255.255
C           192.0.0.0 - 223.255.255.255
          224.0.0.0 - 234.255.255.255   multicast
E            240.0.0.0 - 255.255.255.254  reservado para testes IETF  

Uma forma rápida de identificar estes ranges é considerando estes números em binário. Existe uma regra chamada regra do primeiro octeto com a qual podemos identificar qual a classe do endereço facilmente:

Na classe A o primeiro bit é o 0
Na classe B os primeiros dois bits são 10
Na classe C os primeiros três bits são 110
Na classe D os primeiros quatro bits são 1110
Na classe E os primeiros cinco bits são 11110





quinta-feira, 2 de julho de 2020

Como o NAT direciona pacotes para o host correto na rede interna?

O protocolo TCP/IP é inquestionavelmente a pilha de protocolos mais usada no mundo. Essa maravilhosa invenção tornou possível a internet do modo como a conhecemos. De fato, escalonável, confiável e robusto este vovô parece imbatível ao passar dos anos. Porém, ele precisou de alguns remendos em sua trajetória. Devido aos 32 bits de endereçamento, ele é limitado no seu número de dispositivos endereçáveis. Muitas ações foram adotadas para poder retardar a exaustão completa do número de endereços. A separação de endereços públicos e privados foi uma delas. E é sobre isso que de que se trata o NAT. Network Address Translate é um artifício para que muitas máquinas em uma LAN usando endereços privados possam acessar a internet através de poucos ou até mesmo um único endereço público de WAN. No modo mais tradicional, um único endereço publico fornecido dinamicamente pela operadora pode carregar solicitações de vários hosts de uma rede privada. Isso é chamado de NAT overload ou Port Address Translate. Desse modo, por exemplo, uma rede privada com 14 hosts em um range 192.168.0.0/28 pode acessar a internet saindo por um endereço público apenas, digamos 200.2.2.1. Mas, daí surge uma questão: se todos os hosts estão acessando a internet pelo mesmo IP privado, como o roteador com NAT sabe de quem é determinado pacote de resposta? A solução está nas portas. Não é apenas a camada de transporte que usa portas. Além das portas típicas UDP/TCP, temos as portas lógicas do IP. Ou seja, quando um pacote sai para a internet através de um roteador NAT, ele registra a porta pela qual o dado será encaminhado como resposta, e daí, o nome Port Address Translate. Veja a tabela a seguir: 

R1# show ip nat translations
Pro Inside global           Inside local            Outside local         Outside global
udp 200.2.2.1:53427  192.168.0.6:53427      74.200.84.4:53        74.200.84.4:53
udp 200.2.2.1:53427  192.168.0.6:53427      195.170.0.1:53        195.170.0.1:53
tcp 200.2.2.1:53638   192.168.0.6:53638      64.233.189.99:80    64.233.189.99:80
tcp 200.2.2.1:57585   192.168.0.7:57585      69.65.106.48:110    69.65.106.48:110
tcp 200.2.2.1:57586   192.168.0.7:57586      69.65.106.48:110    69.65.106.48:110

Na exibição do comando acima vemos o host 192.168.0.6 usar a porta 53638 para acessar um serviço na internet através do IP público 200.2.2.1 que é o endereço de WAN do roteador onde está aplicado a NAT overload. Na mesma rede privada o host 192.168.0.7 usa a porta 57585 para acessar pelo mesmo IP público outro serviço na internet. Quando o pacote retorna, o host de destino é identificado à partir desta porta, assim, um único endereço válido na internet é usado por vários hosts não válidos para tráfego.




Dominando o inglês do CCNA 2.

Seguem mais algumas palavras que compõem o vocabulário majoritário dos exames CCNA. 5 minutos. 


advertise propagar
afford proporciona
affords oferece
against contra
agreement concordar, de acordo
also tambem
althoug embora
amounts muitos
appears aparece
arrives chega, alcança
behavior comportamento
better melhor que
borrow empresta
bound compelir
broader amplo
carry carrega
comes vem
convey transmitir
cope lidar
copper cobre
covers cobrir
descouraged desencorajado
duty dever
each cada
ensure garantir
environment ambiente
fee taxa
few pouco
gather recolher
greatly grandemente
however contudo
improve melhorar
incur provável
intented pretendido
issues questão, problema
kept guardado
least menos
led conduzido
matter não importa
means meios
might pode
often frequente
overall geralmente
paid pago
procedural processo
reclaim recuperar
relies confiável
relinquishes renunciar
several muitos, vários
streamlined simplificado
taken ocupado
thus portanto
treatment tratamento
undergo submeter
wasted desperdício
were foi, era
whose cujo

quinta-feira, 25 de junho de 2020

Dominando o inglês do CCNA

O exame de certificação CCNA é uma prova considerada difícil tecnicamente porque envolve muitas questões teóricas. Na verdade, ser reprovado em uma primeira tentativa é muito comum. Para muitos no entanto, o conhecimento técnico não é o único obstáculo. Como a prova atualmente não existe em português - isso mesmo! Já tivemos exames CCNA em português, mas, o português das provas mais atrapalhavam do que ajudavam, então, os candidatos acabavam optando por fazer em inglês mesmo, isto, quando não faziam em português e se davam mal. Fato é que saber inglês é ferramenta necessária para passar no exame. Se você tem dificuldade com inglês, mas, pelo menos tem aquele famoso basicão de pronomes, artigos e verbo To be, boa notícia! Você pode passar no exame mesmo assim. Porque eu tenho tanta certeza disso? Porque eu também tenho dificuldades com o idioma, mas, passei no CCNA em inglês. Dica importante: estude em português e em inglês. Estude exemplos de questões em inglês e em português. Depois de um tempo, estude só em inglês. Primeiro vamos entender que não é preciso uma tradução literal para sacar o âmago da questão que você está resolvendo. Para isso, vou passar nos próximos posts uma gama de palavras e expressões mais encontradas na literatura do exame, ou seja, um vocabulário de inglês técnico para o CCNA. Dividirei em postagens para seguir com a filosofia de 5 minutos, obedecendo o lema CISCO de pouco+pouco+pouco=muito. Também, iremos analisar algumas questões para você entender qual é a dica. 

Obs.: 1- não irei colocar o vocabulário em ordem alfabética porque dá trabalho - risos, e brincadeiras à parte não importa para o nosso objetivo. 2- não discutirei regras gramaticais (nem teria como), estas são dicas práticas de entendimento. 3- Colocarei as ideias no contexto do CCNA. 4- Não preciso dizer que não sou professor de inglês, longe disso, apenas coloco aqui uma técnica útil na compreensão das questões do EXAME. 5- O vocabulário que estou colocando aqui é a íntegra das minhas anotações no material de estudo.

But (mas), However (no entanto, contudo), Otherwise (senão), Although (embora), Unless ( a não ser que), Instead (em vez ), Against (contra), Rather (antes, em vez), Otherwise (de outra forma), On the other hand ( por outro lado), Among (entre uma coisa e outra): todas estas palavras, na maioria, conjunções adversativas, indicam um pensamento contraposto, um argumento adverso.  

And so on ( por aí vai), Beyond (além), Thus (assim), Therefore (portanto), Such (tais), Whose (cujo), So (então): estas são palavras explicativas e conclusivas, ajudam a endossar o pensamento.

Whath/Which (o que/qual), How (como), When(Quando), While(enquanto). Normalmente as questões se inicial com alguma destas palavras. Fica a dica!

That (aquele), This (isto), Them(eles), There (há)

Improve (melhorar), Increase (almentar), Decrease (diminuir)Lower (mais baixo), Slower (mais lento), Faster (mais rápido), Issue (questão, problema), Either (ideia de opção), Whether | if (condicional), Behind (atrás), Belong (ideia de pertencer), Become (ideia de se tornar), Behavior (comportamento), Approach (Abordagem), Statement (sentença ou texto), Do (fazer, auxilia verbos em perguntas), Make (fazer), Perform | Play (fazer, executar), Can (pode), Want (Quer). Perceba que estas palavras irão aparecer muito nas questões.

Agora vamos aos exemplos:

How can you manually configure a switch so that it is selected as the root Switch? 

Como voce pode configurar um switch manualmente como ROOT Switch? - É uma questão de spanning-tree. Observe que você não precisa traduzir tudo porque os termos "configure, manually e Root switch" são intuitivos. Algumas palavras em inglês chamadas de cognatos tem o mesmo sentido em português, outras nem vale a pena traduzir, porque já fazem parte do nosso leque de T.I como switch por exemplo. 

A. increase the priority number (aumenta o valor do "priority number") 
B. lower the port priority number (baixa o "priority number" da porta)
C. lower the priority number (baixa o "priority number" )
D. increase the port priority number (aumenta o "priority number" da porta)
Observe que "priority number" nem precisa traduzir, porque os livros em português irão trazer este termo, e você provavelmente já chama assim. 
Answer: C aqui você deduz o que é answer (resposta)

Percebeu como é fácil? Próximo post trago mais dicas e mais vocabulário.





terça-feira, 23 de junho de 2020

Entenda a estrutura do endereço IP

O protocolo IP é o protocolo padrão da internet. Ele torna possível todas as comunicações existentes na rede como a conhecemos hoje. Mas, há uma nuance muito importante e às vezes pouco entendida, que é o seu esquema de endereçamento. O endereço IP é composto de quatro campos de 8 bits chamados de octetos. Portanto, 4 octetos separados por pontos. Ex.: 192.168.0.128 em decimal. Porém, na verdade, este endereço é lido pelos roteadores no sistema de numeração binário 11000000.10101000.00000000.10000000 o que dá a possibilidade de endereçar 2^32 dispositivos, cerca de 4096 milhões. Acontece que seria quase impossível administrar a entrega de pacotes numa rede com tantos dispositivos dadas as características de comunicação de uma rede IP. Então entra a ideia de redes e sub-redes. Desse modo, além dos endereços de hosts temos também as máscaras de sub-rede, que são indicadas por números como esse 255.255.255.0 que em binário fica 11111111.11111111.11111111.00000000 
A combinação dos zeros e 1s do campo endereço com os zeros e 1s do campo máscara de sub-rede indica em qual rede determinado dispositivo como computador ou smartphone se encontra, na maioria das vezes fazendo uma determinação até mesmo geográfica, sendo que os 1s na máscara indicam a rede e o campo com os zeros são reservados para endereçar o host. No exemplo acima, os hosts são determinados pelos últimos 8 bits, sendo possível endereçar 2⁸, ou seja, 256 endereços. Podemos fazer uma analogia com endereços no sistema postal. Parte do endereço indica a cidade, bairro, rua, e por último número da casa ou apartamento. Neste processo, vale também informar que quando todos os bits  de host estão setados em zero, este endereço é um endereço de rede e não é atribuído a um host. Podemos pensar neste número como um CEP que indica a rua toda. Do mesmo modo, se todos os bits neste campo, estão setados em 1, este endereço é chamado endereço de broadcast, o que indica que o pacote será visto por todos os dispositivos desta rede. 

O que é notação CIDR?

Você já deve ter ouvido um colega ou professor dizer que uma máscara de rede é /24 ou /32 e por aí vai. Isto é a notação CIDR (lê-se sáider). CIDR é Classless inter-domain Routing (Roteamento inter-domínio independente de classe). Não vamos discutir aqui o funcionamento do CIDR porque foge da proposta que é entender a notação.  Quando ouvimos que uma máscara de rede é barra /x apenas quer dizer que estamos indicando o número de bits da máscara de sub-rede setados em 1, ou seja, que indicam a porção rede do endereço IP. Desta forma, temos por exemplo uma máscara muito usada em redes de classe C 255.255.255.0 pode ser dita /24 isso porque ao converter os octetos em binário ficamos com o seguinte número 11111111.11111111.11111111.0, contando os bits ligados vemos que são 24. Se a máscara fosse
255.255.255.192, então, diríamos que ela é /26 pois 11111111.11111111.11111111.11000000. Não é simples?

segunda-feira, 22 de junho de 2020

Como funciona o Handshake 3-way do protocolo TCP

A pilha de protocolos TCP/IP usa como protocolo de transporte (ver modelo OSI ou DoD TCP/IP) dois  protocolos, a saber, o TCP e o UDP. Basicamente os dois diferem entre si pelo overhead adicionado à comunicação. Mas, esse é um outro assunto. Portanto, vamos nos concentrar apenas no TCP. O TCP é um protocolo orientado à conexão, e por isso, se utiliza de uma técnica chamada de 3-way handshake para fechar comunicação com o host remoto. A figura abaixo ilustra um resumo desta técnica:
TCP 3-Way Handshake (SYN, SYN-ACK,ACK)

Observe que o cliente, host X, envia ao servidor uma solicitação de conexão chamada SYN (sincronização) e espera dele um ACK (reconhecimento) indicando a recepção do datagrama. Chamamos este SYN ou ACK de flag. No momento em que o servidor responde, retorna neste datagrama o flag ACK indicando que recebeu o SYN inicial do cliente, e já aproveita para enviar o SYN dele solicitando o ACK do cliente. Isto se chama handshake em três vias. Observe que quando o cliente recebe o SYN+ACK do servidor, ele responde com ACK o que torna a comunicação à partir daí sempre sincronizada independente do tamanho da janela de dados estabelecida. Para garantir que cada flag recebido seja o correto, ou seja, não tenha sido perdido, o flag é acompanhado por um número e conferido na ponta remota como o número + 1 também ilustrado na figura. Isso justifica em parte o nome do protocolo TCP - Transmission Control Protocol. A outra justificativa veremos depois, que o janelamento (windowing). 

domingo, 21 de junho de 2020

Compreenda a sumarização de redes

O que é sumarização de redes? Você já deve estar familiarizado com a estrutura de endereços e máscaras do protocolo IP. Em resumo, temos quatro octetos para determinar o endereço e quatro octetos que determinam a máscara. A máscara determina a porção do campo de endereço que pertence à rede e a porção que pertence ao host. Na máscara de sub-rede a porção de bits setados em 1 indicam a parte que identifica a rede e os zeros a identificação do host. Ou seja, na máscara 11111111.11111111.11111111.11000000 contando à partir do octeto mais à esquerda, temos os primeiros 26 bits setados em 1 que indicam a sub-rede. Os último 6 bits setados em zero são os que determinam o host. Assim, no endereço 11000000.10000001.11111111.11011111 temos os primeiros 26 bits indicando a rede e os últimos 6, o host, o que concluímos comparando o primeiro octeto da máscara, com o primeiro do endereço, e o segundo com o segundo, e assim por diante. Se convertemos para decimal a máscara acima fica 255.255.255.192 e o host  192.129.255.223. Como a porção de host são 6 bits, então, temos uma rede com 64 endereços possíveis que começam com 192.129.255.192 (endereço de rede) até 192.129.255.255 (endereço de broadcast). Portanto, com 62 endereços que podem ser usados por um host. 
Observe que o endereço 192.129.255.188 não faz parte desta rede, pois a mesma começa em 192. Por isso este endereço possui outro endereço de rede 192.129.255.128. Nesta situação os roteadores da rede tem que ter  uma entrada para cada uma destas redes existentes. Pense no contexto da internet. Imagina quantas redes? Existem situações que precisamos diminuir a quantidade de entradas em tabelas de roteamento principalmente de roteadores BGP da internet. Neste caso, usamos o artifício da sumarização, que nada mais é do que trazer o último bit que indica rede mais para trás. Neste caso, setamos apenas 1 bit no ultimo octeto da máscara, ficando com 7 bits de host. Assim, a máscara fica 255.255.255.128 e as redes 192.129.255.128 e 192.129.255.192 são cobertas por uma única rota. Ao passo que vamos diminuindo os bits da porção rede, vamos aumentando a quantidade de hosts cobertos por esta máscara, o que nos permite diminuir o número de rotas para redes anunciadas na tabela de roteamento. Agora em vez de duas redes, temos apenas uma que SUMARIZA as duas.  

Ergue-se um novo paradigma na internet

A demanda atual de conteúdo na internet envolvendo voz e vídeo por aplicativo, stream de filmes e séries, mineração e sistema de criptomoeda...