Antes de começarmos o tutorial em vídeo de hoje, quero agradecer a todos que contribuíram para a popularidade do meu curso no YouTube. Quando o iniciei, cerca de 8 meses atrás, eu não esperava esse sucesso - hoje, 312724 pessoas assistiram minhas lições, eu tenho 11208 assinantes. Eu nunca sonhei que esse empreendimento modesto alcançaria tais alturas. Mas não perderemos tempo e seguiremos imediatamente para a lição de hoje. Hoje preenchemos as lacunas que ocorreram nos últimos 7 tutoriais em vídeo. Embora hoje seja apenas 6 dias, o dia 3 foi dividido em 3 vídeo aulas, então hoje você está assistindo a oitava vídeo aula.
Hoje trataremos de três tópicos importantes: DHCP, transmissão TCP e os números de porta mais comuns. Já falamos sobre endereços IP, e um dos fatores mais importantes na configuração de um endereço IP é o DHCP.

DHCP significa "Dynamic Host Configuration Protocol", um protocolo que ajuda a configurar dinamicamente endereços IP para hosts. Então todos nós vimos essa janela. Quando você clica na opção "obter endereço IP automaticamente", o computador procura um servidor DHCP configurado na mesma sub-rede e envia vários pacotes e solicitações para o endereço IP. O DHCP possui 6 mensagens, das quais 4 são críticas para atribuir um endereço IP.
A primeira mensagem é uma mensagem de descoberta DHCP DISCOVERY. A mensagem de descoberta do DHCP é como uma saudação. Quando um novo dispositivo entra na rede, ele pergunta se um servidor DHCP está presente na rede.
O que você vê no slide parece uma solicitação de transmissão, o código do dispositivo está acessando todos os dispositivos na rede em busca de um servidor DHCP. Como eu disse, essa é uma solicitação de transmissão, para que todos os dispositivos de rede a ouçam.

Se houver um servidor DHCP na rede, ele envia um pacote - uma sentença de OFERTA DHCP. A proposta significa que o servidor DHCP, em resposta à solicitação de descoberta, envia a configuração ao cliente, solicitando que ele aceite um endereço IP específico.

O servidor DHCP reserva o endereço IP, neste caso 192.168.1.2, não fornece, ou seja, reserva esse endereço para o dispositivo. Ao mesmo tempo, o pacote de oferta contém seu próprio endereço IP do servidor DHCP.
Se essa rede tiver mais de um servidor DHCP, outro servidor DHCP, após receber uma solicitação de transmissão do cliente, também oferecerá seu endereço IP, por exemplo, 192.168.1.50. Normalmente, dois servidores DHCP diferentes não estão configurados na mesma rede, mas às vezes isso ainda acontece. Assim, quando uma proposta DHCP é enviada ao cliente, ele recebe 2 propostas DHCP e agora deve decidir qual proposta DHCP deseja aceitar.
Vamos supor que o cliente aceite o primeiro aplicativo. Isso significa que o cliente envia uma solicitação de solicitação de DHCP que diz literalmente: "Eu aceito o endereço IP 192.168.1.2 oferecido pelo servidor DHCP 192.168.1.1".

Após o recebimento da solicitação, o servidor DHCP 192.168.1.1 responde: “OK, eu admito”, ou seja, confirma a solicitação e envia essa confirmação de ACK DHCP ao cliente. Mas lembramos que outro servidor DHCP DHCP reservou um endereço IP de 1,50 para o cliente. Ao receber a solicitação de transmissão do cliente, ele aprende sobre a falha e coloca esse endereço IP de volta no pool para poder atribuí-lo a outro cliente se receber outra solicitação.

Estas são as 4 mensagens críticas que o DHCP troca no início da atribuição de endereço IP. Além disso, o DHCP possui mais 2 mensagens informativas. Uma mensagem informativa é emitida pelo cliente se ele precisar de mais informações do que recebeu na sentença DHCP OFERTA na segunda etapa. Se o servidor DHCP não forneceu informações suficientes na proposta DHCP ou se o cliente precisar de mais informações do que a contida no pacote da proposta, ele solicitará informações adicionais sobre o DHCP. Há outra mensagem que o cliente envia ao servidor - esta é a versão do DHCP RELEASE. Ele diz que o cliente deseja liberar seu endereço IP existente.
No entanto, na maioria das vezes, o usuário se desconecta da rede antes que o cliente consiga enviar o DHCP RELEASE ao servidor. Isso acontece quando você desliga o computador, que realizamos com você. Ao mesmo tempo, o cliente da rede ou o computador simplesmente não tem tempo para informar o servidor sobre a liberação do endereço usado, portanto, o LANÇAMENTO DO DHCP não é uma etapa obrigatória. As etapas necessárias para obter um endereço IP são: descoberta de DHCP, oferta de DHCP, solicitação de DHCP e confirmação de DHCP.
Em uma das lições a seguir, mostrarei como configuramos um servidor DHCP ao criar um pool DNCP. Por pool significa que você está informando o servidor sobre a atribuição de endereços IP no intervalo de 192.168.1.1 a 192.168.1.254. Assim, o servidor DHCP criará um pool, colocará 254 endereços IP nele e poderá atribuir endereços de clientes de rede somente desse pool. Portanto, isso é algo como uma configuração administrativa que um usuário pode fazer.
Agora considere a transmissão do TCP. Não sei se você conhece o "telefone" mostrado na figura, mas, quando criança, usamos latas conectadas com um fio para conversar.

Infelizmente, a geração atual não pode pagar esse "luxo". Quero dizer, hoje as crianças estão na frente da TV desde os 1 ano de idade, jogam PSP, e talvez esse seja um ponto discutível, mas acho que tivemos uma infância melhor, realmente saímos para jogar e brincamos, e você não pode arrancar as crianças de hoje do sofá.
Meu filho tem apenas um ano de idade e eu já vejo que ele é viciado no iPad, quero dizer que ele ainda é muito pequeno, mas me parece que as crianças de hoje já nascem com o conhecimento de como lidar com aparelhos eletrônicos. Então, eu queria dizer que na infância, quando brincávamos, estávamos rasgando latas, e quando as amarramos com um barbante e dissemos algo em uma lata, do outro lado uma pessoa podia ouvir o que estava dizendo, apenas colocando uma lata em seu ouvido . Portanto, isso é muito semelhante a uma conexão de rede.
Hoje, mesmo para transmissão TCP, deve haver uma conexão que deve ser estabelecida antes que a transferência de dados real comece. Como discutimos nas lições anteriores, o TCP é uma transmissão que se concentra no pré-estabelecimento de uma conexão com a rede, enquanto o UDP é uma transmissão sem a necessidade de estabelecer uma conexão. Você pode dizer que o UDP é quando eu jogo a bola, e depende de você se conseguir pegá-la. Você está pronto para fazer ou não, este não é o meu problema, eu vou desistir.
O TCP é mais como conversar com um cara e avisá-lo com antecedência de que você vai jogar a bola, ou seja, é feita uma conexão entre você e só então você joga a bola, por isso é muito provável que seu parceiro esteja pronto para pegá-lo. Assim, o TCP realmente cria uma conexão e começa a realizar uma transferência real.
Considere como ele cria essa conexão. Para criar uma conexão, este protocolo usa um handshake de três etapas. Este não é um termo muito técnico, mas há muito tempo é usado para descrever uma conexão TCP. Um handshake de três etapas é iniciado pelo dispositivo de envio e o cliente envia um pacote com o sinalizador SYN ao servidor.
Suponha que a garota em primeiro plano cujo rosto podemos ver seja o dispositivo A, e a garota em segundo plano cujo rosto não é visível é o dispositivo B. A garota A envia um pacote SYN para a garota B e ela diz: “ótimo, quem- ele quer falar comigo. Então, preciso responder que estou pronto para a comunicação! ” Como fazer isso? Pode-se simplesmente enviar de volta outro pacote SYN e, em seguida, uma confirmação ACK indicando o recebimento do pacote SYN original. Mas, em vez de enviar o ACK separadamente, o servidor forma um pacote comum que contém o SYN e o ACK e o transmite pela rede.

Portanto, no momento, o dispositivo A enviou um pacote SYN e recebeu de volta um pacote SYN / ACK. Agora, o dispositivo A deve enviar ACK ao dispositivo B, ou seja, confirmar que recebeu o consentimento do dispositivo B para estabelecer comunicação. Assim, ambos os dispositivos receberam pacotes SYN e ACK, e agora podemos dizer que a conexão é estabelecida, ou seja, um handshake de três estágios via TCP é implementado.

A seguir, veremos a tecnologia TCP Windowing. Simplificando, esse é o método usado pelo TCP / IP para negociar os recursos do remetente e do destinatário.

Suponha que no Windows estamos tentando transferir um arquivo grande, digamos, 2 GB de tamanho, de uma unidade para outra. No início da transferência, o sistema nos dirá que a transferência de arquivos levará cerca de 1 ano. Mas, alguns segundos depois, o sistema se recuperará e dirá: "Oh, espere um minuto, acho que levará não 6 meses, mas cerca de 6 meses". Passará um pouco mais de tempo e o Windows dirá: "Acho que posso transferir o arquivo em 1 mês". Depois, a mensagem "1 dia", "6 horas", "6 horas", "3 horas", "1 hora", "20 minutos" "," 10 minutos "," 3 minutos. "De fato, todo o processo de transferência de um arquivo levará apenas 3 minutos. Como aconteceu? Inicialmente, quando o dispositivo tentava entrar em contato com outro dispositivo, ele envia um pacote e aguarda confirmação. Se o dispositivo estiver aguardando confirmação por um longo tempo, ele pensa: “se eu tiver que transferir 2 GB de dados nessa velocidade, então demora cerca de 2 anos. "Depois de algum tempo, seu dispositivo recebe um ACK e pensa:" OK, enviei um pacote e recebi um ACK; portanto, o destinatário pode receber 1 pacote. Agora vou tentar enviar a ele 10 pacotes em vez de um. " 10 pacotes e depois de algum tempo recebe uma confirmação de ACK do dispositivo receptor, o que significa que o destinatário está aguardando o próximo pacote 11. O remetente pensa: "excelente, já que o destinatário lidou com 10 pacotes imediatamente, agora tentarei enviá-lo 100 pacotes em vez de dez ". Ele envia 100 pacotes e o destinatário responde que os recebeu e agora aguarda 101 pacotes. Assim, com o tempo, o número de pacotes transmitidos aumenta.
É por isso que você vê uma rápida diminuição no tempo de cópia de arquivo em comparação com o originalmente declarado - isso se deve a um aumento na capacidade de transferir uma grande quantidade de dados. No entanto, chega um momento em que um aumento adicional no volume de transmissão se torna impossível. Suponha que você tenha enviado 10.000 pacotes, mas o buffer do dispositivo do receptor possa receber apenas 9.000. Nesse caso, o receptor envia um ACK com a mensagem: "Recebi 9.000 pacotes e agora estou pronto para receber 9001". A partir disso, o remetente conclui que o buffer do dispositivo receptor tem capacidade para apenas 9000, o que significa que a partir de agora não enviarei mais de 9000 pacotes por vez. Nesse caso, o remetente calcula rapidamente o tempo necessário para transferir a quantidade restante de dados em partes de 9000 pacotes e distribui 3 minutos. Esses três minutos são o tempo real de transmissão. É isso que o TCP Windowing faz.
Esse é um daqueles mecanismos de controle de tráfego em que o dispositivo transmissor ao longo do tempo entende qual é a largura de banda de rede real. Você pode se perguntar por que eles não podem concordar com antecedência sobre qual é a capacidade do dispositivo receptor? O fato é que isso é tecnicamente impossível, porque existem vários tipos de dispositivos na rede. Suponha que você tenha um iPad e sua velocidade de transferência / recepção de dados seja diferente do iPhone, você pode ter diferentes tipos de telefone ou talvez tenha um computador muito antigo. Portanto, todos têm largura de banda de rede diferente.
Portanto, a tecnologia TCP Windowing foi desenvolvida quando a transferência de dados começa em baixa velocidade ou com um número mínimo de pacotes, aumentando gradualmente a janela de tráfego. Você envia um pacote, 5 pacotes, 10 pacotes, 1000 pacotes, 10000 pacotes e abre lentamente essa janela mais e mais até que a "expansão" atinja o valor máximo possível de envio do volume de tráfego em um período específico de tempo. Assim, o conceito de janelas é parte do protocolo TCP.
A seguir, veremos os números de porta mais comuns. A situação clássica é quando você tem um servidor principal, talvez este seja um data center. Inclui um servidor de arquivos, um servidor web, um servidor de email e um servidor DHCP. Agora, se um dos computadores clientes contatar o centro de dados, localizado no meio da imagem, ele começará a enviar o tráfego do servidor de arquivos para os dispositivos clientes. Esse tráfego é mostrado em vermelho e uma porta específica para um aplicativo específico de um servidor específico será usada para transmiti-lo.

Como o servidor sabia para onde deveria ir determinado tráfego? Ele descobrirá a partir do número da porta de destino. Se você observar o quadro, verá que em cada transferência de dados há uma menção ao número da porta de destino e à porta de origem. Você vê que o tráfego azul e vermelho e o tráfego azul são servidores da Web, ambos chegam no mesmo servidor físico, no qual diferentes servidores estão instalados. Se for um data center, ele usa servidores virtuais. Então, como eles sabiam que o tráfego vermelho deveria retornar ao laptop esquerdo com esse endereço IP? Eles sabem disso graças aos números das portas. Se você consultar o artigo da Wikipedia “Lista de portas TCP e UDP”, verá que ele lista todos os números de porta padrão.

Se você rolar esta página, poderá ver o tamanho dessa lista. Ele contém aproximadamente 61.000 quartos. Os números de porta de 1 a 1024 são conhecidos como os números de porta mais comuns. Por exemplo, a porta 21 / TCP é para transmitir comandos ftp, porta 22 para ssh, porta 23 para Telnet, ou seja, para transmitir mensagens não criptografadas. Uma porta 80 muito popular é usada para transmitir dados via HTTP, e a porta 443 é usada para transmitir dados criptografados usando HTTPS, que é semelhante à versão segura do HTTP.
Algumas portas são projetadas para TCP e UDP ao mesmo tempo e outras executam tarefas diferentes, dependendo da conexão usada - TCP ou UDP. Portanto, a porta 80 TCP oficialmente é usada para HTTP e a porta 80 UDP não oficial é usada para HTTP, mas usando um protocolo HTTP diferente - QUIC.

Portanto, os números de porta no TCP nem sempre são projetados para o mesmo que no UDP. Você não precisa aprender esta lista de cor, é impossível lembrá-la, mas precisa conhecer alguns números de porta populares e mais comuns. Como eu disse, algumas dessas portas têm um objetivo oficial, descrito nas normas, e algumas têm um objetivo não oficial, como é o caso do Chromium.
Portanto, esta tabela lista todos os números de porta comuns e esses números são usados para enviar e receber tráfego ao usar aplicativos específicos.
Agora, vamos ver como os dados se movem na rede com base nas poucas informações que conhecemos. Suponha que o computador 10.1.1.10 queira entrar em contato com este computador ou com este servidor, que possui o endereço 30.1.1.10. Sob o endereço IP de cada dispositivo está o seu endereço MAC. Dou como exemplo um endereço MAC com apenas os últimos 4 caracteres, mas, na prática, é um número hexadecimal de 48 bits com 12 caracteres. Como cada um desses números consiste em 4 bits, 12 dígitos hexadecimais representam um número de 48 bits.

Como sabemos, se este dispositivo quiser entrar em contato com este servidor, a primeira etapa do handshake de três estágios deverá ser realizada primeiro, ou seja, um pacote SYN será enviado. Ao criar esta solicitação, o computador 10.1.1.10 indicará o número da porta de origem, que o Windows cria dinamicamente. O Windows seleciona aleatoriamente um número de porta entre 1 e 65.000. Mas como os números iniciais no intervalo de 1 a 1024 são amplamente conhecidos, nesse caso, o sistema considerará números maiores que 25000 e criará uma porta de origem aleatória, por exemplo, sob o número 25113.
Em seguida, o sistema adicionará a porta de destino ao pacote, nesse caso a porta 21, porque o aplicativo que está tentando se conectar a este servidor FTP sabe que deve enviar tráfego FTP.
Além disso, nosso computador diz: "OK, meu endereço IP é 10.1.1.10 e preciso entrar em contato com o endereço IP 30.1.1.10." Ambos os endereços também estão incluídos no pacote, formando uma solicitação SYN, e esse pacote não será alterado até o final da conexão.
Quero que você entenda neste vídeo como os dados se movem pela rede. Quando o computador que envia a solicitação vê o endereço IP de origem e o endereço IP de destino, ele entende que o endereço de destino não está nesta rede local. Esqueci de dizer que estes são todos / 24 endereços IP. Portanto, se você olhar para os endereços IP / 24, entenderá que os computadores 10.1.1.10 e 30.1.1.10 não estão na mesma rede. Assim, o computador remetente da solicitação entende que, para sair desta rede, deve acessar o gateway 10.1.1.1, que está configurado em uma das interfaces do roteador. Ele sabe que deve ir para 10.1.1.1 e conhece seu endereço MAC 1111, mas não sabe o endereço MAC do gateway 10.1.1.1. O que ele esta fazendo? Ele envia uma solicitação de transmissão ARP que todos os dispositivos da rede receberão, mas apenas um roteador com um endereço IP 10.1.1.1 responderá a ele.

O roteador responderá com seu endereço MAC AAAA e os endereços MAC de origem e de destino também serão colocados nesse quadro. Assim que o quadro estiver pronto, antes de sair da rede, será realizada uma verificação de integridade dos dados CRC, que é um algoritmo para encontrar a soma de verificação para detectar erros.
O código CRC redundante cíclico significa que esse quadro inteiro, do SYN ao último endereço MAC, é executado através de um algoritmo de hash, digamos MD5, resultando em um valor de hash. , MD5, .

FCS/CRC, FCS – , CRC. FCS, — CRC, . . , , , , . , , , , FCS CRC, . , , , , .
MAC- : «, MAC- AAAA , », , MAC-.

IP- 30.1.1.10, , .
«» , , 30.1.1.10. , , . 30.1.1.0. , IP- , . «» , 30.1.1.0/24, 20.1.1.2.
, ? , , , . , , , 20.1.1.2. , MAC- , . , ARP, MAC- 20.1.1.2, .
, , MAC-, MAC- BBB MAC- CCC. FCS/CRC .

, 20.1.12, , , , FCS/CRC. «» MAC-, , 30.1.1.10. , . , MAC- , , .

, - SYN-, , , . MAC-, IP- , .
IP-, OSI, .

21, FTP-, SYN , - .
, , , 30.1.1.10 SYN/ACK 10.1.1.10. , 10.1.1.10 ACK, , SYN, ACK .
, — . , , .
Espero que o que você aprendeu com este tutorial seja útil. Se você tiver dúvidas, escreva para imran.rafai@nwking.org ou poste perguntas neste vídeo.A partir da próxima lição, selecionarei três das perguntas mais interessantes do YouTube, que considerarei ao final de cada vídeo. A partir de agora, terei a seção "Melhores perguntas", por isso publicarei a pergunta com seu nome e responderei ao vivo. Eu acho que vai se beneficiar.Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até o verão de graça quando pagar por um período de seis meses, você pode fazer o pedido
aqui .
Dell R730xd 2 vezes mais barato? Apenas temos
2 TVs Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV a partir de US $ 199 na Holanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - a partir de US $ 99! Leia sobre
como criar infraestrutura classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?