Condividi tramite


Microsoft SMB Protocol Packet Exchange Scenario

In questo argomento viene illustrato un esempio di scambio di pacchetti del 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 Microsoft SMB.
  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, una connessione TCP full-duplex viene stabilita dal client con il server. Il client compila e invia quindi un pacchetto di richiesta di sessione NetBIOS tramite la connessione TCP. Se il pacchetto è stato formattato correttamente, il server restituisce un pacchetto contenente un messaggio che conferma che la sessione è stata stabilita. Successivamente, il client invia i primi pacchetti di protocollo Microsoft SMB al server.

pacchetto 1: SMB_COM_NEGOTIATE
direzione : da client al server
Descrizione: Il client richiede che il server negozii il dialetto del protocollo SMB Microsoft. Un elenco di stringhe che identificano i dialetti che il client può usare è incluso nel pacchetto.
pacchetto 2: SMB_COM_NEGOTIATE
direzione : da server al client
Descrizione: Il server risponde alla richiesta del client di identificare il dialetto del protocollo Microsoft SMB 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 : da client al 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 : da server al client
Descrizione: Se la richiesta/risposta viene accettata dal server, nel pacchetto restituito al client viene incluso un UID valido. Se non viene accettata, il server restituirà un codice di errore in questo pacchetto e negherà l'accesso.
pacchetto 4: SMB_COM_TREE_CONNECT_ANDX
direzione : da client al 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 : da server al client
Descrizione: Se viene concesso l'accesso alla condivisione, il server restituisce l'ID albero a 16 bit (TID) che corrisponde alla condivisione in questo pacchetto. Se la condivisione non esiste o l'utente non dispone di credenziali sufficienti per accedere alla condivisione, il server restituirà un codice di errore in questo pacchetto e negherà l'accesso alla condivisione.
pacchetto 6: SMB_COM_OPEN_ANDX
direzione : da client al 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 : da server al 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 non dispone di credenziali sufficienti per accedere al file, il server restituirà un codice di errore in questo pacchetto e negherà l'accesso al file.
pacchetto 8: SMB_COM_READ_ANDX
direzione : da client al 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 viene incluso in questo pacchetto per identificare il file aperto da cui il server deve leggere i dati.
pacchetto 9: SMB_COM_READ_ANDX
direzione : da server al client
Descrizione: Il server restituisce i dati del file richiesti in questo pacchetto. In questo caso è improbabile che sia stato concesso l'accesso al server, alla condivisione e al file. Può verificarsi in alcune situazioni, tuttavia: ad esempio, se l'accesso a una condivisione viene modificato tra l'ora di 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ò andare via senza preavviso.