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:
- Il client e il server stabiliscono una sessione NetBIOS.
- Il client e il server negoziano il dialetto del protocollo SMB Microsoft.
- Il client accede al server.
- Il client si connette a una condivisione nel server.
- Il client apre un file nella condivisione.
- 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.