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.
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:
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:
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ósCada 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:
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. |
Os nomes NetBIOS devem seguir um rígido conjunto de regras. A lista abaixo descreve melhor as principais propriedades que estes devem ter:
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 |
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.
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 |