Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cette rubrique fournit un exemple d’échange de paquets de protocole Microsoft SMB entre un client et un serveur. Les étapes suivantes sont une vue d’ensemble du processus :
- Le client et le serveur établissent une session NetBIOS.
- Le client et le serveur négocient le dialecte du protocole Microsoft SMB.
- Le client se connecte au serveur.
- Le client se connecte à un partage sur le serveur.
- Le client ouvre un fichier sur le partage.
- Le client lit à partir du fichier.
Tout d’abord, une connexion TCP duplex complète est établie par le client avec le serveur. Ensuite, le client génère et envoie un paquet de demande de session NetBIOS via la connexion TCP. Si le paquet a été mis en forme correctement, le serveur retourne ensuite un paquet qui contient un message indiquant que la session a été établie. Après cela, le client envoie les premiers paquets de protocole Microsoft SMB au serveur.
| paquet 1 : SMB_COM_NEGOTIATE Direction : client vers le serveur Description : Le client demande au serveur de négocier le dialecte du protocole Microsoft SMB. Une liste de chaînes identifiant les dialectes que le client peut utiliser est incluse dans le paquet. |
| paquet 2 : SMB_COM_NEGOTIATE Direction : Server vers le client Description : Le serveur répond à la demande du client pour identifier le dialecte du protocole Microsoft SMB qui sera utilisé dans la session. Le paquet retourné inclut également une chaîne aléatoire de 8 octets qui sera utilisée à l’étape suivante pour authentifier le client pendant le processus d’ouverture de session. |
| paquet 3 : SMB_COM_SESSION_SETUP_ANDX Direction : client vers le serveur Description : Ce paquet inclut des informations sur les fonctionnalités du client. Ce paquet doit donc être envoyé même si le serveur n’a implémenté que la sécurité au niveau du partage. paquet 3 : SMB_COM_SESSION_SETUP_ANDX Direction : Server vers le client Description : Si le défi/réponse est accepté par le serveur, un UID valide est inclus dans le paquet retourné au client. S’il n’est pas accepté, le serveur retourne un code d’erreur dans ce paquet et refuse l’accès. |
| paquet 4 : SMB_COM_TREE_CONNECT_ANDX Direction : client vers le serveur Description : Le client demande l’accès au partage. Le paquet contient le chemin d’accès complet du partage au format UNC. |
| paquet 5 : SMB_COM_TREE_CONNECT_ANDX Direction : Server vers le client Description : Si l’accès au partage est accordé, le serveur retourne l’ID d’arborescence 16 bits (TID) correspondant au partage dans ce paquet. Si le partage n’existe pas ou si l’utilisateur ne dispose pas d’informations d’identification insuffisantes pour accéder au partage, le serveur retourne un code d’erreur dans ce paquet et refuse l’accès au partage. |
| paquet 6 : SMB_COM_OPEN_ANDX Direction : client vers le serveur Description : Le client demande au serveur d’ouvrir un fichier sur le partage accessible pour le compte du client. Ce paquet contient le nom du fichier à ouvrir. |
| paquet 7 : SMB_COM_OPEN_ANDX Direction : Server vers le client Description : Si l’accès au fichier est accordé, le serveur retourne l’ID de fichier du fichier demandé. Si le fichier n’existe pas ou si l’utilisateur ne dispose pas d’informations d’identification insuffisantes pour accéder au fichier, le serveur retourne un code d’erreur dans ce paquet et refuse l’accès au fichier. |
| paquet 8 : SMB_COM_READ_ANDX Direction : client vers le serveur Description : Le client demande au serveur de lire les données du fichier ouvert pour le compte du client et de renvoyer ces données au client. L’ID de fichier obtenu par le client lors de l’ouverture du fichier est inclus dans ce paquet afin d’identifier le fichier ouvert à partir duquel le serveur doit lire les données. |
| paquet 9 : SMB_COM_READ_ANDX Direction : Server vers le client Description : Le serveur retourne les données de fichier demandées dans ce paquet. Une erreur ici est peu probable, étant donné que l’accès au serveur, au partage et au fichier a été accordé. Toutefois, il peut se produire dans certaines situations : par exemple, si l’accès à un partage est modifié entre le moment où le fichier est ouvert et l’heure à laquelle il est lu. |
Note
Si vous implémentez un CIFS qui ne prend pas en charge les notifications de modification, Windows ne peut pas conserver un handle en attente sur le système de fichiers et la connexion SMB peut disparaître sans préavis.