Tentando entender o fluxo de pacotes IP

2

Estou tendo problemas para entender como os pacotes viajam de uma máquina para outra. Abaixo eu coloquei um exemplo do Computador 1 tentando se conectar ao Computador 2.

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa
Router 1  
IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  
Router 2  
IP: 192.168.2.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  
Computer 2   
IP: 192.168.2.1  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.12  
MAC: 00:00:00:00:00:dd

Se eu conectei do Computador 1 ao Computador 2 e segui o fluxo de um pacote, acredito que o endereço de origem do que as informações deixam no roteador 2 seria 192.168.1.2 e o endereço MAC de origem seria 00:00:00: 00: 00: cc. Pelo que entendi, o destino permanece o mesmo, mas a fonte atualizará conforme passa pelo caminho. Isso está correto ou é algo que eu estou sentindo falta?

    
por Joey 24.07.2014 / 03:07

5 respostas

1

Uau. Isto é um pouco difícil, dado o seu cenário.

Primeiro, o roteador 2 não deve compartilhar uma interface com o roteador 1 que também esteja nas interfaces do cliente.

No seu exemplo, todos os 4 dispositivos compartilham o mesmo segmento da LAN, que, como um aparte, está no intervalo de endereços IP não-roteáveis (edit: across the "Internet") para a família 192.168.x.y.

Uma maneira melhor seria pensar da seguinte maneira:

Computer 1
IP: 192.168.1.100
Subnet: 255.255.255.0
Default Gateway: 192.168.1.1
MAC: 03:00:00:00:00:11

Router 1
IP: 192.168.1.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:22
IP: 192.168.12.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:33

Router 2
IP: 192.168.12.2
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:44
IP: 192.168.2.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:55

Computer 2
IP: 192.168.2.200
Subnet: 255.255.255.0
Default Gateway: 192.168.2.1
MAC: 03:00:00:00:00:66

Ignore o fato de que o MAC lidera com um caractere de 03 caracteres hexadecimais, que é apenas por correção para a rede esnobe por aí. [EDIT] Eu tive que alterá-lo para 0x03 para que ele fosse atribuído localmente e globalmente exclusivo.

Então, o que está acontecendo aqui é: Há um cabo do computador 1 conectado ao roteador 1. Esses dois compartilham a rede 192.168.1.x. Há um cabo do roteador 1 para o roteador 2. Eles compartilham a rede 192.168.12.x. Há um cabo do roteador 2 para o computador 2. Eles compartilham a rede 192.168.2.x.

Em seu artigo original, todos os 4 dispositivos teriam que estar conectados ao mesmo switch para que ele funcionasse ... e nesse caso o Computador 1 teria conversado diretamente com o Computador 2. Nota : para seus assistentes de rede, sei que você pode fazer o roteamento estático para forçar a configuração de rede original a funcionar, mas não é isso que esse usuário está perguntando ....

Agora, vá para sua pergunta específica.

Você está meio correto. O endereço MAC que o Computador 2 vê é o do Roteador 2. No meu exemplo, seria o MAC 03: 00: 00: 00: 00: 55. No entanto, o endereço IP que ele vê é do Computador 1. É assim que o Computador 2 pode responder ao Computador 1. Os endereços IP são, teoricamente, "universalmente únicos".

A maneira como as redes funcionam, dado o seu nível de intenção de conhecimento, é que a camada 2 (datalink / MAC-layer - em um ambiente todo Ethernet / IPv4) aborda a mudança PER HOP. PER HOP é definido como 'transitando em qualquer dispositivo de processamento da camada 3'. Roteadores e computadores quase sempre processam a camada 3. Os switches podem processar a camada 3, mas tendem a deixá-la sozinha.

Assim, quando uma mensagem vai do Computador 1 para o Computador 2, o fluxo se parece com:

AT HOP 1 - Entre o Computador 1 e o Roteador 1

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:11 (Computer 1)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:22 (Router 1 - Interface facing Computer 1)

AT HOP 2 - Entre os roteadores

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:33 (Router 1 - Interface facing Router 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:44 (Router 2 - Interface facing Router 1)

AT HOP 3 - entre o roteador 2 e o computador 2

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:55 (Router 2 - Interface facing Computer 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:66 (Computer 2)

Assim, os endereços da camada de endereço IP (camada 3) permanecem os mesmos em toda a comunicação, mas os endereços da camada de dados (camada 2) mudam sempre que outro dispositivo que processa um endereço de camada3 está envolvido.

Espero que isso ajude. Se ainda for confuso, sinta-se à vontade para enviar uma mensagem de volta e tentarei explicar o subconjunto específico que você está achando difícil.

    
por 24.07.2014 / 03:51
1

Seu exemplo é falho. (Eu vi você editar, ainda está falho.)

No seu exemplo, o roteador 1 e 2 estão na mesma sub-rede (ou seja, eles têm a mesma máscara de sub-rede). Portanto, o Computador 1 NÃO enviará nada do gateway padrão, ele simplesmente enviará o pacote para fora da NIC e esperará que um switch ou a mídia o leve para o Computador 2.

Agora, se você alterar o roteador 2 e o computador 2 para isso:

Router 2
IP: 192.168.2.2

e

Computer 2
IP: 192.168.2.12

[editar por nick mostrado em negrito] então o roteador 2 e o computador 2 estarão ligados ( sua própria sub-rede separada , NOT :) sub-redes separadas , e o exemplo começa a fazer mais sentido.

No entanto, e desde que você não forneceu um diagrama, estou assumindo aqui que você deseja que o tráfego seja movido dessa maneira:

Computador 1 < - > Roteador 1 < - > Roteador 2 < - > Computador 2

O roteador 1 e o roteador 2 não podem estar na mesma sub-rede para que isso funcione. Na verdade, haverá uma terceira rede entre eles, pela qual eles trocam tráfego. (Também é um pouco estranho que uma rota padrão se refira a uma rede privada, normalmente significa "Internet", mas certamente é possível.)

Aqui está o que estou supondo que você está tentando fazer, peço desculpas pela crueza da foto:

Os endereços MAC não se propagam além dos roteadores. O computador 1 deseja enviar um pacote para o computador 2. O computador 2 não está na mesma sub-rede, portanto, o computador 1 o envia para o gateway padrão.

Isso acaba sendo um quadro enviado do MAC do Computador 1 para o MAC do Roteador 1.

Roteadores enviam pacotes e encaminhamento significa copiar de uma interface diferente. Assim, o Roteador 1 verá que o destino do pacote obtido do Computador 1 é destinado ao Computador 2. (Ele precisaria ser programado com uma rota estática ou usar um protocolo como RIP / OSPF para saber que, em uma situação como esta .)

Então, o pacote IP agora tem um MAC de origem do segundo NIC do Roteador 1 e um MAC de destino do primeiro NIC do Roteador 2. E assim por diante até chegar ao Computador 2.

    
por 24.07.2014 / 03:56
0

Você está certo em relação a isso, pois o endereço MAC muda a cada salto, mas os endereços IP da conexão não mudam, a menos que haja uma tecnologia NAT / PAT embutida ou que um proxy de aplicativo esteja em uso.

Note, eu acredito que o endereço para computer2 deve ser algo como 192.168.2.12, ao invés de 1.12. Isso implicaria que o seu pacote não passa pelo roteador2. Eu acredito que você está procurando algo como:

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
LAN IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

WAN IP: 192.168.3.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:b1  

Router 2  
LAN IP: 192.168.2.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

WAN IP: 192.168.3.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:c1 

Computer 2   
IP: 192.168.2.12  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.2  
MAC: 00:00:00:00:00:dd

então temos três redes, o computador da LAN1 está em (.1.X), a rede entre os dois roteadores (.3.X) e a LAN em que o computador2 está ligado (.2.X).

Os endereços MAC são para endereçamento de quadros, então eles estão ligados à implementação de cada LAN. você pode usar o endereço mac :: aa para enviar quadros ao redor da rede Computer1 e Router1 estão conectados, mas se você tentou enviar um quadro para :: dd nesta LAN, ele não alcançará seu destino. Portanto, um endereço mac só é bom na rede que contém um dispositivo com esse MAC.

O endereço IP, no entanto, é feito para passar entre as redes, por isso permanece constante. o pacote é reencapsulado em um novo quadro toda vez que ele cruza um roteador, mas o próprio pacote IP permanece inalterado. isso é importante, porque se o Computer2 no seu cenário receber um pacote de 192.168.1.1 com o MAC :: cc, ele não teria como dizer que ele não veio do roteador e, quando o computador2 respondeu, o roteador2 não teria ideia a quem está respondendo.

então, o pacote que o computador2 recebe tem o IP de origem 192.168.1.11, mas o endereço MAC :: cc.

O NAT / PAT torna isso um pouco mais confuso, na medida em que mais informações são necessárias para tomar decisões de origem / destino, então lembre-se, um cenário com roteadores domésticos reais está um pouco mais completo.

    
por 24.07.2014 / 03:51
0

Supondo que os roteadores não estão fazendo NAT (Network Address Translation. Os endereços de origem e destino permanecerão os mesmos em cada ponto da rede. Se você tivesse apenas um roteador entre os dois hosts, os endereços MAC permaneceriam os mesmos Eu esperaria o mesmo comportamento neste caso.

O programa arp mostrará qual endereço mac é esperado. Em cada computador, execute o comando arp -an (ou no Windows arp -a . Isso exibirá todos os dispositivos locais conhecidos e seu endereço MAC. O tráfego para dispositivos remotos será roteado para o endereço MAC do gateway.

Se a rota entre os dois roteadores for pela Internet, os roteadores serão NAT, o endereço de origem em cada computador será o endereço IP da Internet do roteador oposto e o endereço mac do roteador local. Nesse caso, você não poderá abrir uma conexão entre os computadores usando os endereços listados. Você precisaria se conectar ao endereço IP da Internet do roteador na outra extremidade e precisaria saber para NAT o endereço para o computador desejado.

Se você tiver uma conexão estabelecida (o ssh funciona bem), você poderá usar o comando netstat -nat (ou, no Windows, o comando netstat ) para listar todas as conexões. Você pode filtrar ou varrer a lista para encontrar o endereço da conexão. No Linux usando ssh , o comando who am i listará o endereço remoto do qual você se conectou.

    
por 24.07.2014 / 04:00
0

OUCH. Um roteador não terá apenas um IP. Eu sugiro 'networking first step' por wendell odom.

Você escreve "Pelo que entendi, o destino permanece o mesmo, mas a fonte atualizará à medida que passa pelo caminho."

Não está claro o que você está falando. Você não escreveu muito e o pouco que escreveu foi ambíguo. Se você não pode escrever claramente, então você não vai entender claramente.

Não diga apenas "a fonte" "o destino". Diga especificamente se você quer dizer Endereço IP de origem ou Endereço MAC de origem ou Endereço IP de destino ou Endereço MAC de destino.

O IP de origem e de destino permanecerá o mesmo. (a menos que houvesse NAT ou algo muito incomum, e você não tem isso)

Os endereços MAC (origem e destino) podem mudar. Os roteadores reescrevem os endereços MAC. Embora seus roteadores não estejam realmente configurados corretamente. Veja a foto do ultra para saber como um roteador tem vários NICs, cada um com seu próprio IP em sua própria sub-rede.

    
por 24.07.2014 / 04:16