Microsoft SMB プロトコルのパケット交換シナリオ

このトピックでは、クライアントとサーバー間の Microsoft SMB プロトコル パケット交換の例を示します。 次の手順は、プロセスの概要です。

  1. クライアントとサーバーが NetBIOS セッションを確立します。
  2. クライアントとサーバーは、Microsoft SMB プロトコル言語をネゴシエートします。
  3. クライアントはサーバーにログオンします。
  4. クライアントは、サーバー上の共有に接続します。
  5. クライアントは共有上のファイルを開きます。
  6. クライアントはファイルから読み取ります。

まず、サーバーとのクライアントによって全二重 TCP 接続が確立されます。 その後、クライアントは、TCP 接続経由で NetBIOS セッション要求パケットをビルドして送信します。 パケットの形式が正しい場合、サーバーはセッションが確立されたことを確認するメッセージを含むパケットを返します。 その後、クライアントは最初の Microsoft SMB プロトコル パケットをサーバーに送信します。

パケット 1: SMB_COM_NEGOTIATE
方向: クライアントからサーバーへ
説明: クライアントは、サーバーに Microsoft SMB プロトコル言語のネゴシエートを要求します。 クライアントが操作できる言語を識別する文字列の一覧がパケットに含まれます。
パケット 2: SMB_COM_NEGOTIATE
方向: サーバーからクライアントへ
説明: サーバーは、セッションで使用される Microsoft SMB プロトコル言語を識別するクライアントの要求に応答します。 返されるパケットには、ログオン プロセス中にクライアントを認証するために次の手順で使用される 8 バイトのランダム文字列も含まれています。
パケット 3: SMB_COM_SESSION_SETUP_ANDX
方向: クライアントからサーバーへ
説明: このパケットにはクライアント機能に関する情報が含まれているため、サーバーが共有レベルのセキュリティのみを実装している場合でも、このパケットを送信する必要があります。
パケット 3: SMB_COM_SESSION_SETUP_ANDX
方向: サーバーからクライアントへ
説明: チャレンジ/応答がサーバーによって受け入れられる場合は、クライアントに返されるパケットに有効な UID が含まれます。 受け入れられない場合、サーバーはこのパケットのエラー コードを返し、アクセスを拒否します。
パケット 4: SMB_COM_TREE_CONNECT_ANDX
方向: クライアントからサーバーへ
説明: クライアントは共有へのアクセスを要求します。 パケットには、UNC 形式の共有の完全に指定されたパスが含まれています。
パケット 5: SMB_COM_TREE_CONNECT_ANDX
方向: サーバーからクライアントへ
説明: 共有へのアクセスが許可されている場合、サーバーは、このパケット内の共有に対応する 16 ビット ツリー ID (TID) を返します。 共有が存在しない場合、またはユーザーが共有にアクセスするための資格情報が不十分な場合、サーバーはこのパケットのエラー コードを返し、共有へのアクセスを拒否します。
パケット 6: SMB_COM_OPEN_ANDX
方向: クライアントからサーバーへ
説明: クライアントは、クライアントに代わって、アクセスされた共有上のファイルを開くようサーバーに要求します。 このパケットには、開くファイルの名前が含まれています。
パケット 7: SMB_COM_OPEN_ANDX
方向: サーバーからクライアントへ
説明: ファイルへのアクセスが許可されている場合、サーバーは要求されたファイルのファイル ID を返します。 ファイルが存在しない場合、またはユーザーがファイルにアクセスするための資格情報が不十分な場合、サーバーはこのパケットのエラー コードを返し、ファイルへのアクセスを拒否します。
パケット 8: SMB_COM_READ_ANDX
方向: クライアントからサーバーへ
説明: クライアントは、クライアントに代わって開かれたファイルからデータを読み取り、このデータをクライアントに返すようにサーバーに要求します。 ファイルが開かれたときにクライアントによって取得されるファイル ID は、サーバーがデータを読み取る必要がある開かれたファイルを識別するために、このパケットに含まれます。
パケット 9: SMB_COM_READ_ANDX
方向: サーバーからクライアントへ
説明: サーバーは、このパケット内の要求されたファイル データを返します。 サーバー、共有、およびファイルへのアクセスが許可されているというエラーが発生する可能性は低いです。 ただし、ファイルを開いてから読み取る時間の間に共有へのアクセスが変更された場合など、状況によっては発生する可能性があります。

Note

変更通知をサポートしない CIFS を実装した場合、Windows はファイル システムへの未処理のハンドルを保持できず、SMB 接続は予告なしに切断される可能性があります。