Protocolo SMB/CIFS SMB e CIFS SMB é um protocolo, não uma implementação. O protocolo foi criado em muitos sistemas operacionais, de Windows a UNIX e até em ambientes de mainframe. Protocolo SMB/CIFS Histórico Protocolo SMB/CIFS O SMB começou com a IBM e foi implementado pela Microsoft à medida que a empresa começou a adaptar seus produtos para redes no início dos anos 1990. Naquela época, o SMB precisava de um produto separado, como o LAN Manager ou Windows for Workgroups, mas o compartilhamento de arquivos com o tempo foi transformado em parte do sistema operacional regular com o Microsoft Windows NT. Protocolo SMB/CIFS CIFS A Microsoft continuou a adaptar o SMB para os novos recursos que passaram a ser introduzidos em seus sistemas operacionais e, por fim, apresentou uma versão chamada de CIFS, que propôs como padronização com a Internet Engineering Task Force. Protocolo SMB/CIFS Samba Na mesma época, um estudante de graduação na Austrália, Andrew Tridgell, começou o processo de engenharia reversa em uma implementação de mainframe do SMB e começou a trabalhar no que acabaria sendo uma versão de software livre do SMB e dos protocolos da Microsoft, chamado de Samba. O projeto começou como um modo de mover arquivos e acabou sendo uma implementação completa de cliente e servidor, incluindo a capacidade de agir como o controlador de domínio do Windows e, atualmente na versão 4, como o servidor do Active Directory. Protocolo SMB/CIFS SMB versus CIFS O CIFS é tecnicamente um dialeto do SMB. O protocolo SMB foi modificado ao longo dos anos, de modo que é necessário que o cliente e o servidor negociem o dialeto do protocolo a ser falado. O CIFS se refere à série de extensões do NT LAN Manager (NTLM). Estranhamente, o protocolo não usa a cadeia de caractere CIFS para se identificar; em vez disso, usa NT LM 0.12 . Na prática, pode-se usar os termos SMB e CIFS de forma intercambiável, visto que o dialeto CIFS do SMB é o dialeto usado atualmente. A propósito, CIFS é pronunciado "sifs" em vez de ser soletrado como no caso do SMB. Protocolo SMB/CIFS Visão geral do protocolo SMB Como protocolo cliente-servidor, o cliente faz contato com o servidor. O SMB(Server Message Block)de início exigia uma camada de API (interface de programação de aplicativos) chamada Network Basic Input/Output System (NetBIOS). Essa API fornecia diversos serviços que o SMB usava, bem como diversos serviços relacionados à resolução de nome e navegação de rede. Protocolo SMB/CIFS O NetBIOS fornece três serviços importantes para uma rede Microsoft: Serviços de nome para localizar hosts na rede Serviços de sessão para comunicação confiável e transferências entre um cliente um servidor Serviços de distribuição de datagrama para mensagens pequenas e transmissões de rede. O SMB, portanto, usava muito os serviços de sessão, mas dependia de outros serviços para suporte, como uso de serviços de nome para localizar o endereço do servidor. Protocolo SMB/CIFS Com o tempo, a predominância do TCP/IP e a mudança da Microsoft, que passou a depender do Domain Name System (DNS) para resolução de nomes, levou ao SMB ser executado diretamente sobre TCP/IP de um modo chamado hosting direto. Enquanto o NBT é executado em TCP e no UDP (User Datagram Protocol), nas portas 137-139, o hosting direto usa TCP e UDP na porta 445. Protocolo SMB/CIFS SMB na pilha OSI O modelo OSI (Open Systems Interconnection), usado para explicar as interações entre os protocolos de rede. O modelo OSI descreve os recursos necessários para que um aplicativo funcione pela rede e divide os recursos em uma série de camadas. Cada camada usa os serviços fornecidos pelas camadas abaixo dela e fornece serviços para as camadas acima dela. Protocolo SMB/CIFS Modelo OSI Protocolo SMB/CIFS Protocolo SMB/CIFS