Então, vamos ver um exemplo mais completo.
Neste exemplo, o host A inicia uma sessão com a porta de origem de 1024 em uma porta de destino de
23, em outras palavras, telnet.
O host A envia 10 bytes de dados e um número de sequência inicial de 10.
O host B confirma o recebimento dos 10 bytes enviando um número
de confirmação de volta para A de 11.
O host B neste exemplo também define seu número de seqüência inicial como 5.
por favor, note também que os números das portas estão invertidos a porta de origem para o tráfego que vai de B para A é 23 e a porta de destino é 1024.
Neste exemplo, porque estamos usando uma janela deslizante,
A pode enviar 250 bytes de dados, por exemplo.
Portanto, observe que o número de sequência é incrementado para 260.
Nos exemplos anteriores, usamos números fáceis no tamanho da janela de 1
ou tamanho da janela de 3, mas observe que, na realidade, os tamanhos das janelas são
definidos com a quantidade de dados que podem ser transmitidos em bytes.
Portanto, isso pode não ser tão fácil de ler quanto as sequências de 1, 2 e 3.
recebimento de dados até a seqüência 5 e, assim, reconhecer o número de seqüência 6.
As portas de origem são trocadas novamente, então
a porta de origem é 1024 e a porta de destino é 23.
Agora, o host B está reconhecendo o número de sequência 261, lembre-se de A enviar 10
bytes e os 250 bytes, ou seja, 260 bytes
de dados.
B está enviando o número de seqüência 6 e mais uma vez os números de porta são invertidos.
É muito importante que você entenda como as portas de origem
e destino funcionam. Então, nessa nota, nada melhor do que mostrar um exemplo do mundo real usando o Wireshark.
Então, vou capturar o tráfego na minha
rede e, em seguida, vou para, por exemplo, o google. com o meu navegador.
Voltarei ao Wireshark e pararei a captura, aqui está um exemplo é a consulta DNS.
Então nós temos o host 10. 0 0 1 que é a
minha máquina de um laptop Dell, consultando o servidor DNS.
Na camada 2, você pode ver que a fonte é minha máquina Dell indo para o roteador Cisco.
Este é um quadro Ethernet 2 e observe o campo type.
Na camada 2, como mencionado, o campo type especifica o protocolo na camada 3.
Neste caso, 0x0800 em hexadecimal especifica que o protocolo da camada 3 é IPv4.
Na camada 3 você pode ver o endereço IP de origem e o endereço IP de destino.
Meu PC eo servidor DNS, você pode ver que isso é IPv4, você pode ver o
comprimento do cabeçalho é de 20 bytes.
DSCP ou Pontos de Código de Serviços Diferenciados não são usados
​​neste exemplo de aviso ECN que tem a ver com notificação
de congestionamento explícita Mencionei isso brevemente quando falamos sobre o cabeçalho TCP. 42 O que eu gostaria que você visse aqui é observar que o protocolo na camada
4 é o UDP que valores em hexadecimal, então 11 em hexadecimal é igual a 17 o número do
protocolo mais uma vez para UDP é 17.
Então, na camada 4, podemos ver que User Datagram Protocol ou UDP está sendo usado.
A porta de origem é 62249, em outras palavras, uma porta dinâmica ou efêmera
que vai para uma porta de destino de 53, ou seja, DNS.
Podemos ver os números das portas mais uma vez e, ao abrir a consulta de
DNS, podemos ver que era uma consulta, procurando por um endereço de host específico.
Aqui temos uma resposta do DNS do servidor DNS para meu host.
Então, mais uma vez, muito rapidamente na camada 2, você pode ver que o campo
type indica o protocolo na camada 3.
Na camada 3, o campo de protocolo nos informa qual protocolo é usado na camada
4 Aqui está outra consulta DNS do meu host para o servidor DNS.
E se abrirmos as informações de consulta do DNS, você verá
que é uma consulta do google. com e é uma consulta
de host, tipo de aviso A, o servidor DNS responde e aviso na resposta, ele
nos dá o endereço IP do google. com Agora aqui está o
aperto de mão de três vias entre minha máquina e o Google.
Observe que a fonte é 10. 0 0 1 e
o destino é esse endereço IP que é o Google.
Observe que a porta de origem é 58313 destinos é 80 em outras palavras, estou abrindo uma conexão da web com um servidor da web.
Abrindo isso, você pode ver mais uma vez os números de porta de origem e destino, mas
observe aqui que o sinalizador que está configurado é SYN.
Então, abrindo isso, você pode ver que todos
os outros sinalizadores ou bit definido como 0, exceto pelo
bit SYN e abrindo isso, você pode ver, estamos tentando configurar uma conexão com o servidor, então temos um
pedido de estabelecimento de conexão mensagem para o servidor.
Nenhum outro sinalizador está definido. Observe que o tamanho inicial da janela é 8192
e a abertura das opções, você pode ver que o MSS ou o Tamanho Máximo do Segmento está configurado para 1460 bytes.
A resposta do Google ao meu computador na camada 4 mostra que a porta de origem é 80 e
a porta de destino é 58313.
Abrindo isso, observe que os sinalizadores definidos são SYN ACK, por isso é uma
segunda parte do handshake de três vias.
Observe que o bit de confirmação está definido e o bit de
sincronização está configurado para abrir, você pode ver que é uma conexão que estabelece reconhecimento do Google.
Observe que a solicitação de tamanho da janela é 5720 e, se abrirmos as opções, observe que o
tamanho máximo do segmento é 1430.
Olhando para a última parte do handshake de três vias,
note que minha máquina conversando com o
Google abrindo o TCP, você pode ver que os sinalizadores definidos são apenas o bit de reconhecimento e o tamanho da janela solicitada. 64350 85 e olhando
para a análise de reconhecimento de sequência, observe que isso
é um reconhecimento.
Voltando ao primeiro passo da trepidação manual de três mãos,
observe que o número de sequência inicial da minha máquina para o Google está definido como 0.
Indo para o cabeçalho TCP real, observe o número de sequência 0.
Os Googles respondem como um número de sequência 0 e o reconhecimento de 1.
Como você pode ver aqui também.
Então eles estão nos informando, o próximo segmento que eles esperam receber é o segmento 1.
Nosso reconhecimento para eles é que estamos enviando o número de sequência 1 e estamos
reconhecendo o número de sequência 1.
Isto é conforme o que discutimos.
Mais tarde, quando o aviso HTTP está sendo recebido, estamos recebendo informações
do Google para o nosso computador TCP e observe aqui,
este é um segmento TCP da Unidade de Dados de Protocolo remontada.
Em outras palavras, isso é um fragmento.
Olhando para o TCP, podemos ver as fontes HTTP e o destino é o nosso número de porta.
Em outras palavras, o Google está enviando tráfego
para nós, observe aqui que o número de
sequência é 2861, o próximo número de sequência é 3798
e o número de confirmação é 944.
então o próximo número de sequência é 3798 indo para a
próxima parte do aviso de
captura, o número de sequência aqui é 3798 e o próximo número de sequência é 5228.
E observe que há um reconhecimento de nossa
máquina para o Google dizendo que esperamos receber 5228.
E então, na próxima captura, você pode ver que o número
de sequência 5228 foi enviado do Google para nós.
O próximo número de sequência é 6658, que é a próxima peça recebida.
O aviso 6658 é o número de sequência recebido. 114 Nosso host está reconhecendo o recebimento disso e
dizendo que o próximo bit de dados a receber é 7894 indo para a
próxima captura, você pode ver que o número de sequência é o que o Google enviou para nós.
Agora, sem aborrecê-lo por mais tempo,
espero que essa captura ofereça um pouco do insight
sobre o que realmente está acontecendo.
A Wirehark se lembra de um aplicativo gratuito que você pode baixar apenas para procurar na
internet, agora eu sugiro
que você capture algum tráfego em sua máquina
para que você possa realmente ver o que está acontecendo no back ground.
Então, o que nós cobrimos?
Nesta seção, examinamos os dois principais protocolos que residem na camada 4.
UDP ou User Datagram Protocol e TCP ou Transmission Control Protocol.
Expliquei números de porta e quais números de porta seriam usados ​​em quais cenários.
Expliquei o handshake de três vias do
TCP que expliquei em janelas e expliquei números de sequência.
Obrigado por assistir!