Uma rede SMB/CIFS e um pouco de sua história

Trabalhar com uma rede SMB é significativamente diferente de trabalhar com uma rede Unix sobre TCP/IP, discutiremos então os conceitos básicos atrás de uma rede SMB logo em seguida veremos então algumas implementações da Microsoft e finalmente veremos onde o servidor Samba pode ou não se encaixar.

Por volta de 1984 a IBM criou uma API ( application programming interface ) para conectar seus computadores em rede chamada Network Basic Input/Output System – NetBIOS. A API NetBIOS prove para a aplicação um design rudimentar para conexão e o compartilhamento de dados com outros computadores. É interessante pensar na NetBIOS como extensões de chamadas padrões de rede da API BIOS. Com a BIOS, cada chamada de baixo nível está confinada ao hardware da máquina local e não precisa de ajuda alguma para ir ao seu destino. Originalmente a NetBIOS tinha que trocar instruções com computadores através de IBM PC ou redes Token Ring. Era então requerido um protocolo de transporte de baixo nível para carregar as requisições de um computador para o outro.

No final de 1985 a IBM lançou tal protocolo, que integrava a API NetBIOS. Era o NetBIOS Enhanced User Interface ( NetBEUI ). O NetBEUI foi desenvolvido para pequenas LANs ( com menos de 255 nó, o que era uma restrição prática em 1985 ) e permitia que cada máquina na rede clamasse um nome ( até 15 caracteres ) que não estivesse já sendo utilizado por outra máquina. O protocolo NetBEUI era muito popular entre aplicativos de rede incluindo aqueles que rodam sobre Windows para Workgroups. Mais tarde implementações do NetBIOS sobre o protocolo IPX da Novell surgiram, competindo então com o NetBEUI. Apesar disto os protocolos utilizados pela comunidade da Internet eram o TCP/IP e o UDP/IP, e uma implementação da API NetBIOS sobre estes protocolos cedo se tornou necessária.

É importante lembrar que o TCP/IP utiliza números para representar o endereço dos computadorer enquanto a NetBIOS utiliza apenas nomes. Isto representou um grande problema quando tentaram juntá-los. Em 1987 a IETF ( Internet Engineering Task Force ) publicou uma série de documento de padronização, entitulados RFC 1001 e 1002, que demonstravam como a NetBIOS deveria trabalhar sobre uma rede TCP/UDP. Desde então o padrão que estes documentos regulamentam são conhecidos comos NetBIOS sobre TCP/IP ou NBT. O padrão NBT estabelece o funcionamento de três serviçoes em uma rede : serviço de nomes, e dois serviços de comunicação; datagramas e sessões.

O serviço de nomes soluciona o problema de nome para endereço mencionado anteriormente, permitindo que cada computador declare um nome específico para si na rede que será traduzido em um nome “legível” – IP – pela máquina, de modo semelhante ao DNS ( Domain Name Server ) que existe na Internet. Os serviços de datagrama e sessão são protocolos secundários de comunicação usados para transmissão e recepção de dados de máquinas NetBIOS através da rede.


Recebendo um nome

Em um mundo NetBIOS cada máquina, quando se conecta na rede, clama por um nome para si, o que é chamado de registro de nome ( name registration ). Entretanto, não pode haver mais de uma máquina reclamando o mesmo nome em um ambiente de trabalho, o que causaria tamanha confusão na comunicação entre as máquinas da rede. Existem então duas diferentes abordagens para evitar que isto ocorra:

  1. usar o NetBIOS Name Server ( NBNS ) para manter um controle sobre qual cliente registrou cada nome NetBIOS;
  2. permitir que cada máquina na rede reclame o seu nome quando uma outra máquina tentar registrar o nome já utilzado.

Tentativa de registro de nome com e sem servidor de nomes NetBIOS.


Além desta verificação do nome deve existir uma maneira de se traduzir o nome NetBIOS para um endereço IP, este processo é chamado de resolução de nome ( name resolution ). Na NBT esta resolução pode se dar de duas maneiras:

  1. fazer com que cada máquina responda seu endereço IP quando “escuta” uma broadcast de requisição do seu nome NetBIOS;
  2. usar o NBNS para ajudar na resolução do nomes NetBIOS para endereços IP.

Resolução de nomes com e sem servidor de nomes NetBIOS.


Como podemos observar ter um NBNS na rede pode ser uma ferramenta extremamente poderosa. Veremos no caso do método sem o servidor de nomes. Quando uma máquina cliente se conecta à rede ele dá um broadcast declarando que quer registrar um nome NetBIOS específico. Se nenhuma máquina na rede reclamar do uso de tal nome o nome é registrado. Mas se alguma outra máquina no ambiente de trabalho já estiver utilizando este nome ela irá mandar uma mensagem a máquina que acabou de se conectar dizendo que tal nome já foi registrado. O que gera uma quantidade de tráfico muito grande para uma simples operação de registro de nome. Com um NBNS a mesma coisa ocorre com exceção de que a comunicação necessária para o registro ocorre somente entre a máquina que se conectou à rede e o NBNS. Não há então broadcast quando uma máquina tenta registrar seu nome na rede. A mensagem de registro é simplesmente enviada diretamente do cliente para o NBNS, e este responde se o nome já foi ou não registrado. Isto tipo de comunicação é conhecida como ponto a ponto, e é extremamente eficaz em redes com uma ou mais sub-redes.

O mesmo princípio pode ser aplicado à resolução de nomes. Sem um NBNS, a resolução de nomes NetBIOS seria feita através de um mecanismo de broadcast. Todos os pacotes de requisição seriam enviados para cada computador na rede com a esperança de que uma máquina responderia diretamente a máquina que fez a requisição. Fica claro então que a utilização de um NBNS resulta em entupimentos desnecessários na rede com broadcasts para cada requisição de registro de nome.

Tipos de Nós

Cada máquina em uma rede NBT receebe uma das seguintes designações dependendo de como processa o registro de nome e a resolução: nó-b, nó-p, nó-m, nó-h. Os comportamentos destes nós são resumidos abaixo:

Tipos de Nós NetBIOS
Descrição Comportamento
nó-b Utiliza somente broadcast para o registro de nome e a resolução.
nó-p Utiliza registro e resolução ponto a ponto somente.
nó-m Utiliza broadcast para o registro. Se registrado com sucesso notifica o NBNS do resultado. Utiliza broadcast para a resolução, se o este não tiver sucesso utiliza o NBNS.
nó-h (híbrido) Utiliza o NBNS para registro e resolução. Utiliza o broadcast se o NBNS não der resposta ou estiver inoperante.


Por trás de um nome NetBIOS

Os nomes NetBIOS devem seguir um rígido conjunto de regras. A lista abaixo descreve melhor as principais propriedades que estes devem ter:

  1. Um nome NetBIOS registrado pode se referir a uma única estação de trabalho, ou a nós múltiplos que façam parte de um grupo de trabalho.
  2. Nomes NetBIOS não possuem formato hierárquico. Ou seja, não existe pontos como no DNS.
  3. Nomes NetBIOS devem somente possuir caracteres de a..z, A..Z, 0..9 ou um dos seguintes caracteres: ! @ # $ % ^ & ( ) – ‘ { } . ~
  4. Nomes NetBIOS podem ter no máximo 15 caracteres para descrever o recurso, e um 16 octeto para se referir ao tipo de recurso. Este último octeto indica que propriedades o computador registrado possui.

Tipos de recursos
Recurso Valor (Hex)
Serviço padrão de estação de trabalho 00
Serviço de mensagem - Messenger Service (WinPopup) 03
RAS Server Service 06
Domain Master Browser Service (associado com o controlador de domínio primário) 1b
Nome do Master Browser 1d
Serviço de NetDDE 1f
Servidor de arquivos ( incluíndo servidor de impressora ) 20
Serviço de cliente de RAS 21


Nomes de grupos

Redes SMB/CIFS também utilizam o conceito de grupos onde cada máquina da rede pode se registrar. Num universo Windows um grupo de trabalho é equivalente a um grupo SMB.

Tipos de recursos de grupos NetBIOS
Recurso Valor
Grupo padrão de estação de trabalho 00
Servidor de logon 1c
Nome de Master Browser 1d
Nome de grupo normal (utilizado em browser elections) 1e
Nome de grupo de internet (administrativo) 20

Voltar