首先提到的是NetBios,NetBios是Network Basic Input/Output System的縮寫,提供了一種允許局域網內不同電腦能夠通信的功能。嚴格來說,NetBios是一套API,而並不是一個網絡協議。
如今,我們使用的網絡協議棧是TCP/IP協議棧,在Windows操作系統上,NetBios運行在NetBios over TCP/IP的協議上,NetBios over TCP/IP(簡稱NBT或者NetBT)是一個網絡協議,允許以前使用NetBios API的應用程序能夠在現代的TCP/IP網絡中。如下圖:

再說SMB,SMB是Server Message Block的縮寫,作為一個應用層的協議,主要提供一個網絡中文件共享、文件打印和進程間通信等功能,如今SMB的使用主要存在於Windows系統中。
SMB協議是運行在會話層之上的網絡層協議,有兩種運行方式,第一種通過NetBios API,如下圖:

使用的是UDP的137和138端口以及TCP的137和139的端口。
第二種是直接運行在TCP和UDP協議之上,使用的是445端口,可以稱為"Direct hosting of SMB over TCP/IP"。
總結一下,Windows主機上文件打印、文件共享等都通過SMB協議來實現,而SMB通過兩種方式運行在139和445端口之上。我們可以通過手段使得SMB只通過第二種方式運行,而不通過NetBios API。本地連接屬性àInternet協議版本4屬性à高級àWINSà禁用TCP/IP上的NetBios.這樣的話SMB就只運行在445端口之上了。
禁用前:

禁用后:

