Entendo que os dados são transmitidos pelo modelo OSI e depois na camada física são transportados como bits pelos cabos de rede. Mas estou confuso exatamente onde as camadas estão acontecendo (no PC, no roteador etc?). Os processos nas camadas 7-2 acontecem em um PC antes dos dados saírem dos cabos conforme a camada 1? Isso não parece certo, como eu sei que os switches operam na camada 2 e os roteadores na camada 3. Mas então os dados já não precisavam sair dos cabos para chegar ao switch ou roteador? Obrigado :-)
tl; dr Muitos dispositivos diferentes podem encontrar vários níveis OSI. Qualquer que seja o ponto final que esteja solicitando algo de um protocolo da camada 7 (como HTTP), usará todas as 7 camadas antes de colocá-lo na conexão. Nós intermediários, como roteadores e switches, podem usar apenas as três primeiras camadas, firewalls ou aceleradores de WAN podem afetar a camada 4, os balanceadores de carga também fazem coisas interessantes.
Se você estiver interessado em uma resposta mais detalhada, veja abaixo - tentei (?) Manter a simplicidade e usar um exemplo do mundo real.
Quais camadas encapsulam os dados dependem do que os gera. Em geral, o desencapsulamento acontecerá apenas para o que é relevante para o local atual dos dados na rede (em um roteador, em um host etc.)
Com isso, quero dizer, se eu sou um roteador, não me importo que exista uma solicitação HTTP oculta neste pacote se tudo o que estou tentando fazer é rotear o tráfego pela Camada 3 - apenas removerei cabeçalhos suficientes para obtenha o que eu preciso, faça meu trabalho e passe para o próximo pacote.
Todos nós usamos a Internet todos os dias de alguma forma, então aqui está como será uma solicitação HTTP típica, levando em consideração o modelo OSI. Por uma questão de simplicidade, podemos assumir que a rede está disponível e não há problemas.
[Camada 7] Seu PC / servidor gerará uma solicitação HTTP GET para enviar para o servidor da web especificado. Nesse caso, estamos falando de google.com. Portanto, se você olhar acima, temos a solicitação GET, que é considerada "dados". HTTP é um protocolo de camada 7, vamos adicionar esse cabeçalho. Como não há mais nada a fazer nessa camada, vamos passar para a camada 6.
[Camada 6] Podemos pensar na camada 6 como a formatação dos dados, para um site nada realmente vai acontecer aqui, mas um administrador / desenvolvedor / engenheiro pode fazer algo com isso, se assim o desejar. Nosso PC / servidor ainda adicionará um cabeçalho na parte superior do cabeçalho da camada 7 (HTTP) e o enviará para a camada 5.
[Camada 5] Neste ponto, porque nosso PC / servidor sabe que estamos tentando entrar em contato com um servidor da web, precisamos fazer essa solicitação em um formato que o aplicativo como um todo possa entender, para isso usamos uma API (Application Program Interface) . É isso que gerencia a sessão de aplicativos , para que o servidor web saiba de que "fluxo" os dados fazem parte. Vamos adicionar nosso cabeçalho da camada 5 e passá-lo para a camada 4.
[Camada 4] Os engenheiros de rede se preocupam com todos os dados, mas é aí que começa a ficar muito específico para nós. A camada 4 é a nossa camada de transporte; é aqui que decidimos como nossos dados chegam, não o caminho, mas como - isto é, TCP ou UDP. Nesse caso, nosso PC / servidor precisa estabelecer uma conexão com o servidor da web. Vou pular algumas coisas para simplificar, mas é aqui que o seu aperto de mão típico de três vias TCP acontece. Encapsulamos o que temos atualmente em um cabeçalho TCP, que contém itens como números de porta de origem e destino, números de sequência e de reconhecimento e informações de janelas TCP.
[Camada 3]Aqui está a outra camada com a qual realmente preocupamos os engenheiros, a camada de rede. É aqui que os pacotes são endereçados aos seus destinos; precisamos de endereços IP para chegar aos locais em uma rede. Nosso PC / servidor adicionará seu endereço IP de origem e destino. Os pacotes não apenas chegarão ao destino certo, mas esse ponto de extremidade usará nosso endereço IP de origem para enviá-lo de volta para nós quando precisar enviar dados de qualquer tipo. Agora, algo a ser observado aqui é que mesmo os PCs / servidores podem ter várias interfaces, portanto, precisamos enviar os dados para o local correto. Nosso PC / Servidor terá uma tabela de roteamento como os roteadores, normalmente se você é um host de algum tipo, seus pacotes serão roteados para o gateway padrão na esperança de saber como levar o pacote ao seu destino. Vamos adicionar esse cabeçalho IP e entregá-lo à camada de enlace de dados.
[Camada 2] Nossa placa de interface de rede (NIC) do PC / Servidor não sabe falar IP sozinha, por isso usa endereços MAC (controle de acesso à mídia) para mover esses dados. Seu PC / servidor terá entradas ARP para cada IP possível, portanto, nesse caso, terá uma entrada para o gateway padrão. O endereço IP dos seus gateways se correlacionará com um endereço MAC de destino. Então, vamos adicionar nosso cabeçalho L2 ao endereço MAC de destino, esse cabeçalho também contém o endereço MAC da NIC do PC / Servidor como fonte. Agora, temos tudo o que precisamos para colocar esses dados no fio como bits.
[Camada 1] Como você mencionou na sua pergunta, é aqui que os dados fluem pelo fio, é onde vemos os 1 e 0 brutos. Agora não há um cabeçalho da camada 1 em si; se você olhar o diagrama na camada 2, verá isso. Os dados que estão até agora com todos os cabeçalhos de L7 até L2 serão convertidos para os 1 e 0.
Agora temos bits no fio, a caminho do seu roteador de gateway. Até esse momento, seu PC / servidor executou TODO o trabalho que encapsulava os dados vinculados ao servidor da web google.com.
[Camada 1] Agora seu roteador de gateway recebe os 1 e 0. A NIC (interface) no roteador obtém esses dados e basicamente diz "Não faço ideia de como ler isso!" e traz para a camada 2 para que possa ler os dados.
[Camada 2] O roteador do gateway agora inspeciona o quadro L2 e diz "ok, legal, você veio deste MAC, limpo. Vejo que o seu MAC de destino foi definido como meu endereço MAC, por isso estou autorizado a continuar fazendo o trabalho. desencapsule o cabeçalho L2 para que ele possa dar uma olhada no cabeçalho IP (camada 3).
[Camada 3] Seu roteador de gateway examinará o endereço IP de origem e destino agora. Ele diz: "Ok, você veio dessa fonte, legal. Seu destino é esse endereço IP. Hmm, eu não sou dono desse endereço IP, mas sei quem é." Ele pesquisará uma rota para o endereço IP de destino (google.com) em sua tabela de roteamento e usará essa entrada.
Depois de tudo isso, o mesmo processo geral se repete. Ele verificará qual interface ele precisa enviar o pacote, usará o endereço MAC da interface, transformará em bits e o enviará. O próximo roteador fará a mesma coisa e assim por diante. Em geral, esses pacotes serão removidos apenas de volta para a camada 7 quando chegarem ao seu destino final. Como mencionei antes, os roteadores se preocupam apenas em levar os pacotes ao seu destino; portanto, eles se importam apenas com a Camada 3; portanto, não haverá motivos para examinar mais nada além do que é necessário para obter para essa informação. Portanto, ele verá informações L1 / L2 / L3, mas nada mais.
Eventualmente, os dados chegarão ao servidor da web de destino e, nesse ponto, os dados terão suas camadas externas reduzidas até o cabeçalho HTTP para o servidor da web ler e fazer o que for necessário para processar essa solicitação.
NOTA: É justo mencionar que outras coisas podem interferir no comportamento típico (firewalls, NAT / PAT, ACLs etc.). Mas é melhor ter uma compreensão muito sólida de onde todo o encapsulamento e desencapsulamento está ocorrendo para entender como isso afeta a rede e o tráfego.
Em relação à camada 1, preâmbulos, seqüências de início de quadro, cabeçalhos de detecção de colisão e similares não seriam considerados um "cabeçalho" de nível 1?
Nanofarad
Isso também é muito, muito útil - obrigado por ter feito todo esse problema!
Fibie
Essa é a coisa gloriosa que eu queria que minha resposta fosse. Estou direcionando meu pessoal do HellDesk para isso!
Smithers
3
As camadas podem acontecer em vários dispositivos, em vários níveis. Quando ele atinge meu firewall, por exemplo, ele volta para a Camada 4 para verificar as portas TCP em minhas ACLs. Em seguida, reorganiza os dados na Camada 1 - e, se estou fazendo NAT / PAT, até modifica esses dados! , ou não tão profundo.
As camadas do modelo OSI são mais para pensar sobre as coisas. Pode - ou não - necessariamente estar acontecendo precisamente. Algumas coisas acontecem em várias camadas. Um tipo de "pensar nas coisas" é a programação. Em termos vagos, gerais, cada camada é tratada de forma independente e pressupõe que as camadas abaixo / acima estejam funcionando corretamente.
Mas, por mais útil que seja para pensar nas coisas, por mais que seja usado para programar e processar dados, não esqueça que, no final, nas palavras de Monty Python, "é apenas um modelo".
Muito obrigado! Excelente explicação; muito claro. Isso é meio que eu tinha em minha cabeça .... coisas zigging cima e para baixo as camadas, dando um visual, como a tela de um monitor de freqüência cardíaca que você vê na esses shows médicos ;-)
As camadas podem acontecer em vários dispositivos, em vários níveis. Quando ele atinge meu firewall, por exemplo, ele volta para a Camada 4 para verificar as portas TCP em minhas ACLs. Em seguida, reorganiza os dados na Camada 1 - e, se estou fazendo NAT / PAT, até modifica esses dados! , ou não tão profundo.
As camadas do modelo OSI são mais para pensar sobre as coisas. Pode - ou não - necessariamente estar acontecendo precisamente. Algumas coisas acontecem em várias camadas. Um tipo de "pensar nas coisas" é a programação. Em termos vagos, gerais, cada camada é tratada de forma independente e pressupõe que as camadas abaixo / acima estejam funcionando corretamente.
Mas, por mais útil que seja para pensar nas coisas, por mais que seja usado para programar e processar dados, não esqueça que, no final, nas palavras de Monty Python, "é apenas um modelo".
fonte