Scenario di Scambio pacchetti del protocollo SMB Microsoft

In questo argomento viene fornito un esempio di scambio di pacchetti di protocollo SMB Microsoft tra un client e un server. I passaggi seguenti sono una panoramica del processo:

  1. Il client e il server stabiliscono una sessione NetBIOS.
  2. Il client e il server negoziano il dialetto del protocollo SMB Microsoft.
  3. Il client accede al server.
  4. Il client si connette a una condivisione nel server.
  5. Il client apre un file nella condivisione.
  6. Il client legge dal file.

Prima di tutto, viene stabilita una connessione TCP full-duplex dal client con il server. Quindi il client compila e invia un pacchetto di richiesta di sessione NetBIOS sulla connessione TCP. Se il pacchetto è stato formattato correttamente, il server restituisce un pacchetto contenente un messaggio che riconosce che la sessione è stata stabilita. In seguito, il client invia i primi pacchetti di protocollo Microsoft SMB al server.

Pacchetto 1: SMB_COM_NEGOTIATE
Direzione: Client a server
Descrizione: Il client richiede che il server negozii il dialetto del protocollo SMB Microsoft. Elenco di stringhe che identificano i dialetti che il client può usare è incluso nel pacchetto.
Pacchetto 2: SMB_COM_NEGOTIATE
Direzione: Server a client
Descrizione: Il server risponde alla richiesta del client di identificare il dialetto del protocollo SMB Microsoft che verrà usato nella sessione. Il pacchetto restituito include anche una stringa casuale a 8 byte che verrà usata nel passaggio successivo per autenticare il client durante il processo di accesso.
Pacchetto 3: SMB_COM_SESSION_SETUP_ANDX
Direzione: Client a server
Descrizione: Questo pacchetto include informazioni sulle funzionalità client, pertanto questo pacchetto deve essere inviato anche se il server ha implementato solo la sicurezza a livello di condivisione.
Pacchetto 3: SMB_COM_SESSION_SETUP_ANDX
Direzione: Server a client
Descrizione: Se la richiesta/risposta viene accettata dal server, un UID valido viene incluso nel pacchetto restituito al client. Se non viene accettato, il server restituirà un codice di errore in questo pacchetto e nega l'accesso.
Pacchetto 4: SMB_COM_TREE_CONNECT_ANDX
Direzione: Client a server
Descrizione: Il client richiede l'accesso alla condivisione. Il pacchetto contiene il percorso completo della condivisione in formato UNC.
Pacchetto 5: SMB_COM_TREE_CONNECT_ANDX
Direzione: Server a client
Descrizione: Se viene concesso l'accesso alla condivisione, il server restituisce l'ID albero a 16 bit (TID) corrispondente alla condivisione in questo pacchetto. Se la condivisione non esiste o l'utente ha credenziali insufficienti per accedere alla condivisione, il server restituirà un codice di errore in questo pacchetto e nega l'accesso alla condivisione.
Pacchetto 6: SMB_COM_OPEN_ANDX
Direzione: Client a server
Descrizione: Il client richiede al server di aprire un file nella condivisione accessibile per conto del client. Questo pacchetto contiene il nome del file da aprire.
Pacchetto 7: SMB_COM_OPEN_ANDX
Direzione: Server a client
Descrizione: Se viene concesso l'accesso al file, il server restituisce l'ID file del file richiesto. Se il file non esiste o l'utente ha credenziali insufficienti per accedere al file, il server restituirà un codice di errore in questo pacchetto e nega l'accesso al file.
Pacchetto 8: SMB_COM_READ_ANDX
Direzione: Client a server
Descrizione: Il client richiede al server di leggere i dati dal file aperto per conto del client e restituire questi dati al client. L'ID file ottenuto dal client quando il file è stato aperto è incluso in questo pacchetto per identificare il file aperto dal server deve leggere i dati.
Pacchetto 9: SMB_COM_READ_ANDX
Direzione: Server a client
Descrizione: Il server restituisce i dati del file richiesti in questo pacchetto. È improbabile che l'accesso al server, alla condivisione e al file sia stato concesso. Può verificarsi in alcune situazioni, tuttavia: ad esempio, se l'accesso a una condivisione viene modificato tra l'apertura del file e l'ora di lettura.

Nota

Se si implementa un CIFS che non supporta le notifiche di modifica, Windows non può mantenere un handle in sospeso per il file system e la connessione SMB può uscire senza preavviso.