連載
» 2015年02月27日 15時00分 UPDATE

その知識、ホントに正しい? Windowsにまつわる都市伝説(26):SMBに乗り換えたMac――WindowsとMacのファイル共有のいま(前編) (2/3)

[山市良,テクニカルライター]

YosemiteのSMBクライアントは最新のSMB 3.02でトークする

 SMBクライアントとしてのMacから見てみましょう。Macで共有フォルダーに接続するには、「Finder」ウィンドウの「共有」セクションにあるコンピューターの一覧から選択します。あるいは、「Finder」の「移動|サーバーへ接続」メニューを開いて、「サーバーアドレス」に「smb://<コンピューター名またはIPアドレス>/<共有名>」を入力して接続します(画面5)。

画面5 画面5 「smb://」のアドレスを指定してMacからWindowsの共有フォルダーに接続する

 以下の画面6は、Windows 8.1の共有フォルダーに対して、Yosemiteから接続する際の通信トラフィックをWindows 8.1側の「Wireshark」でキャプチャした結果です。

画面6 画面6 YosemiteからWindows 8.1の共有フォルダーへの接続におけるSMBのネゴシエートの様子

 SMBクライアント(ここではMacです)は、MS-SMB(SMB 1.0/CIFS)でネゴシエート要求を開始しますが、SMBクライアント側がSMB 2.1以降のダイアレクト対応していることを提示しているため、プロトコルをMS-SMB2に切り替え、SMB 2.1以降のネゴシエートを行っています。最終的にこの接続では、ダイアレクトとしてWindows 8.1標準のSMB 3.02が選択されました。つまり、YosemiteのSMBクライアントは、最新のSMB 3.02に対応していることが分かります。

 実は、Mac側でも「ターミナル」で「smbutil statshares -a」というコマンドラインを実行することで、自分がSMBクライアントとして接続しているセッションのダイアレクトと、セッションで使用できるSMBの情報を取得できます(画面7)。「smbutil」コマンドの「statshares」オプションは、Mavericksから利用可能な新しいオプションであり、Windows 8以降のWindows PowerShellコマンドレット「Get-SmbConnection」と同じように使えます。

画面7 画面7 SMBクライアントとなっているMac側では「smbutil statshares -a」コマンドを実行することで、SMBセッションのダイアレクトを確認できる

YosemiteのSMBクライアントはTCPポート139と445に対応、445を優先

 SMBのネゴシエートに関しては、前出の画面6を見れば一目瞭然です。YosemiteのSMBクライアントはSMB 1.0/CIFSより前の古いダイアレクトには対応していませんが、SMB 1.0/CIFSから最新のSMB 3.02までに対応しており、接続先に応じて利用可能な最上位のSMBバージョンを自動的に選択するようになっています。

 前出の画面7は、Windows 8.1(WIN81TG64)、Windows 7(DP380)、およびWindows XP(VirtualXP-36130)の共有フォルダーに接続中の様子であり、それぞれSMB 3.02、SMB 2.1、SMB 1.0/CIFSで接続されていることが分かります。

 では、SMBより下のTCPプロトコルレベルではどうなっているでしょうか。Windowsの場合、TCPポート139を使用する「NetBIOS over TCP/IP(NBT)」と、TCPポート445を使用する「Microsoft Direct Hosting of SMB(Microsoft-DS)」のいずれかを使用し、両方が利用可能な場合はMicrosoft-DSを優先します。

 以下の画面8は、YosemiteからWindows 8.1の共有フォルダーに接続する際の通信トラフィックのうち、表示フィルターを変えて、TCPポート139およびTCPポート445に関連するものだけを抜き出したものです。

画面8 画面8 SMBセッションを開始するまでに、NBTのTCPポート139とMicrosoft-DSのTCPポート445の両方への接続を試み、利用可能な場合はTCPポート445を優先して接続する

 SMBのネゴシエートから以降はTCPポート445のMicrosoft-DSを使用していますが、その前のTCPセッションの開始(3ウェイハンドシェイク)は、NBTとMicrosoft-DSの両方で行っている様子が分かるでしょう。これは、WindowsのSMBクライアント機能と同様の動きです。

 試しに、Windows 8.1の「セキュリティが強化されたWindowsファイアウォール」の「受信の規則」に、TCPポート445に対するブロック規則を設定してみました。すると、Yosemiteからの接続は、NBTのTCPポート139で確立されました(画面9)。

画面9 画面9 Microsoft-DSのTCPポート445が相手側で利用できなければ、NBTのポート139が使用される

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。