Windowsの共有フォルダからファイルをダウンロードするときのあれこれ
環境
ファイルサーバ
OS:WIndows 11 Home
バージョン:23H2
IP:192.168.11.32
クライアント
OS:WIndows 11 Pro
バージョン:23H2
IP:192.168.11.100
Windowsで共有フォルダを使用
サーバ側の操作
共有したいフォルダを右クリックし「プロパティ」を左クリック
「共有」タブを左クリック
「詳細な共有」を左クリック
「このフォルダーを共有する」にチェックを入れて、「アクセス許可」を左クリック
「フルコントロール」の「許可」にチェック。※必要に応じて適切なユーザと権限を指定してください。
Windows+rで「ファイル名を指定して実行」を起動後、「\\127.0.0.1」と入力して「OK」押下。(自身のループバック宛で接続。127.0.0.1はサーバ端末の具体的なIPアドレス192.168.11.32などでもよい)
下記の画面になったら「work」フォルダが共有されていることが分かる。
クライアント側の操作
Windows+r で「ファイル名を指定して実行」を起動後、「\\xxx.xxx.xx.xx」と円マーク2つの後ろにサーバのIPアドレスを入力して「OK」押下
資格情報が求められるので適切な情報を入力。
※サーバ端末のユーザのメールアドレスとパスワードなどになります。
ログインに成功すると下記のような画面になる
※もし接続不可の場合は、サーバ端末のファイアウォールを見直す必要がある。
画面左下のスタートボタンを押下し
「firewall」と検索し、「Windowsファイアウォールによるアプリケーションの許可」を開く
下記の画面の「ファイルとプリンターの共有」にチェックを付ける
転送時のパケットキャプチャと転送効率
上記画像から、ファイル転送はSMB2を使っており、転送時は1514byteのフレームであることが分かる。
上記画像からイーサネットヘッダやIPヘッダを除くとペイロードは1460byteとなる。
上記の画像たちから、1,048,660byte毎にセグメンテーションされているように見える。また、すべてが1460byteではないことも分かる。
上記の画像から、1048576*10+680000=12,214,336byteのデータが転送されていることが分かる。下記の画像のサイズと一致している。
また、ファイルの受信に必要だったパケット数は約8500だった。
※100~400byte程度の管理系の通信が転送の最初と最後に20~30パケットずつある。また、120~130パケットのTCP再送が発生していた。
下記の画像の通り色々計算すると、転送効率は95.7%程度と分かった。
※PC ---- ホームルータ ---- PCとそこそこ理想的な環境での効率のため、VPN環境やインターネット経由だとさらに低くなることが予想される。
転送時間の計測
約12Mbyteのファイル
データの転送スピードは、ストレージ(HDD/SSD)への書き込み速度や、ネットワークの転送速度に依存するため計算は難しいが、手動ストップウォッチでは0.5秒だった。理論上は約0.1秒のはずで、0.4秒多く時間がかかっている。
約8Gbyteのファイル
先の結果は手動ストップウォッチが怪しいのでファイルサイズを大きくして実験。
8GB = 8 * 1024 * 1024 * 1024 = 8589934592 byteのファイルを作る
※ネットワーク界隈は1k = 10^3、ファイルサイズ界隈は1k=10^2にする傾向があると思います。
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.
C:\work>fsutil file createnew testfile 8589934592
ファイル C:\work\testfile が作成されました
8GBを1Gbpsで転送するので、72秒予想だったが、約84秒となった。
評価
・「ストレージ(SSD / HDD)への書き込み速度」と「ネットワークの転送速度」を比較したら、ネットワークの転送がボトルネックになったと思われる。
・転送時のデータにおける実データの割合はLAN内でも95%程度
・転送速度は理論値1Gbpsでも1Gbpsは出ない(ファイル転送以外の通信も少なからず流れるため)
結論
実際に時間測定してみないと分からない。また、環境による。
(ビシッと言いきれなくてすみません)
環境による例)
・インターネットがあればインターネットがボトルネックになる
・ストレージへの書き込み速度がボトルネックになることもある
・WiFiは半二重なので、WiFi区間があると転送効率が読みにくい
・ファイルが細かく分かれていたら、ファイルごとに発生すると思われる転送処理のオーバヘッドで処理が重くなる
・ウイルス対策ソフトがあると、ファイルごと/パケットごとにスキャンが入りCPUがボトルネックになることも
参考:SMB2とは
SMBのversion2とのこと。windows8以降はSMB3以降が搭載されているらしいが、コマンドプロンプトで調べるとMRxSmb20なのでversion2とのこと。
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\System32>sc.exe qc lanmanworkstation
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: lanmanworkstation
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\Windows\System32\svchost.exe -k NetworkService -p
LOAD_ORDER_GROUP : NetworkProvider
TAG : 0
DISPLAY_NAME : Workstation
DEPENDENCIES : Bowser
: MRxSmb20
: NSI
SERVICE_START_NAME : NT AUTHORITY\NetworkService
C:\Windows\System32>