Microsoft SMB Protocol Packet Exchange Scenario
In dit onderwerp vindt u een voorbeeld van een Microsoft SMB Protocol-pakketuitwisseling tussen een client en een server. De volgende stappen zijn een overzicht van het proces:
- De client en server maken een NetBIOS-sessie.
- De client en server onderhandelen over het Microsoft SMB Protocol-dialect.
- De client meldt zich aan bij de server.
- De client maakt verbinding met een share op de server.
- De client opent een bestand op de share.
- De client leest uit het bestand.
Ten eerste wordt een full-duplex TCP-verbinding tot stand gebracht door de client met de server. Vervolgens bouwt en verzendt de client een NetBIOS-sessieaanvraagpakket via de TCP-verbinding. Als het pakket correct is opgemaakt, retourneert de server vervolgens een pakket dat een bericht bevat waarin wordt aangegeven dat de sessie tot stand is gebracht. Hierna verzendt de client de eerste Microsoft SMB Protocol-pakketten naar de server.
Pakket 1: SMB_COM_NEGOTIATE Richting: Client naar server Beschrijving: De client vraagt aan dat de server onderhandelt over het Dialect van het Microsoft SMB-protocol. Een lijst met tekenreeksen waarmee de dialecten worden geïdentificeerd waarmee de client kan werken, is opgenomen in het pakket. |
Pakket 2: SMB_COM_NEGOTIATE richting: server naar client Beschrijving: De server reageert op de aanvraag van de client om het Dialect van het Microsoft SMB-protocol te identificeren dat in de sessie wordt gebruikt. Het geretourneerde pakket bevat ook een willekeurige tekenreeks van 8 bytes die in de volgende stap wordt gebruikt om de client tijdens het aanmeldingsproces te verifiëren. |
Pakket 3: SMB_COM_SESSION_SETUP_ANDX Richting: Client naar server Beschrijving: Dit pakket bevat informatie over clientmogelijkheden, dus dit pakket moet worden verzonden, zelfs als de server alleen beveiliging op shareniveau heeft geïmplementeerd. Pakket 3: SMB_COM_SESSION_SETUP_ANDX richting: server naar client Beschrijving: Als de uitdaging/reactie wordt geaccepteerd door de server, wordt een geldige UID opgenomen in het pakket dat wordt geretourneerd naar de client. Als deze niet wordt geaccepteerd, retourneert de server een foutcode in dit pakket en weigert de toegang. |
Pakket 4: SMB_COM_TREE_CONNECT_ANDX Richting: Client naar server Beschrijving: De client vraagt toegang tot de share. Het pakket bevat het volledig opgegeven pad van de share in UNC-indeling. |
Pakket 5: SMB_COM_TREE_CONNECT_ANDX richting: server naar client Beschrijving: Als toegang tot de share is verleend, retourneert de server de 16-bits structuur-id (TID) die overeenkomt met de share in dit pakket. Als de share niet bestaat of als de gebruiker onvoldoende referenties heeft om toegang te krijgen tot de share, retourneert de server een foutcode in dit pakket en weigert de toegang tot de share. |
Pakket 6: SMB_COM_OPEN_ANDX Richting: Client naar server Beschrijving: De client vraagt de server om een bestand te openen op de geopende share namens de client. Dit pakket bevat de naam van het bestand dat moet worden geopend. |
Pakket 7: SMB_COM_OPEN_ANDX richting: server naar client Beschrijving: Als toegang tot het bestand is verleend, retourneert de server de bestands-id van het aangevraagde bestand. Als het bestand niet bestaat of als de gebruiker onvoldoende referenties heeft voor toegang tot het bestand, retourneert de server een foutcode in dit pakket en weigert de toegang tot het bestand. |
Pakket 8: SMB_COM_READ_ANDX Richting: Client naar server Beschrijving: De client vraagt de server om gegevens te lezen uit het geopende bestand namens de client en deze gegevens naar de client te retourneren. De bestands-id die door de client wordt verkregen toen het bestand werd geopend, is opgenomen in dit pakket om te bepalen van welk geopend bestand de server gegevens moet lezen. |
Pakket 9: SMB_COM_READ_ANDX richting: server naar client Beschrijving: De server retourneert de aangevraagde bestandsgegevens in dit pakket. Een fout hier is onwaarschijnlijk dat toegang tot de server, share en het bestand is verleend. Het kan echter in sommige situaties gebeuren: bijvoorbeeld als de toegang tot een share wordt gewijzigd tussen het tijdstip waarop het bestand wordt geopend en het tijdstip waarop het wordt gelezen. |
Notitie
Als u een CIFS implementeert die geen ondersteuning biedt voor wijzigingsmeldingen, kan Windows geen openstaande ingang naar het bestandssysteem behouden en kan de SMB-verbinding zonder kennisgeving verdwijnen.