Windows禁用了NetBIOS服务为什么138端口还在?
在现代的计算机网络中,端口是计算机与外界进行通信的入口或出口。每个端口都有特定的用途,以便于网络中的各个设备能够通过指定的端口进行通信。而138端口是NetBIOS服务的标准端口,用于在局域网内的计算机之间进行通信。然而,当Windows禁用了NetBIOS服务时,为什么138端口依然存在呢?本文将对这个问题进行科普解释,并通过代码示例来帮助读者更好地理解。
什么是NetBIOS服务?
NetBIOS,全称为Network Basic Input/Output System,是IBM开发的一种用于局域网内计算机之间进行通信的协议。它提供了一种简单的方式,使得计算机之间可以共享文件、打印机以及其他资源。NetBIOS协议使用了两个端口,即UDP的138端口和TCP的139端口。其中,138端口用于NetBIOS的名称服务(Name Service),而139端口用于NetBIOS的会话服务(Session Service)。
Windows禁用NetBIOS服务的原因
尽管NetBIOS服务为计算机之间的通信提供了便利,但它也存在一些安全隐患。为了提高网络的安全性,许多网络管理员会选择禁用NetBIOS服务。在Windows操作系统中,禁用NetBIOS服务可以通过以下步骤完成:
- 打开“控制面板”,选择“网络和共享中心”。
- 在“活动网络”下,点击当前正在使用的网络连接。
- 在弹出的窗口中,点击“属性”按钮。
- 在“该连接使用下列项目”中,找到“Internet 协议版本 4(TCP/IPv4)”,然后点击“属性”按钮。
- 在“Internet 协议版本 4(TCP/IPv4)属性”窗口中,点击“高级”按钮。
- 在“高级 TCP/IP 设置”窗口的“WINS”选项卡中,选择“禁用 NetBIOS 上的 TCP/IP”,然后点击“确定”按钮。
通过上述步骤,我们成功禁用了NetBIOS服务。然而,尽管NetBIOS服务被禁用,138端口仍然存在的原因是因为Windows操作系统使用了NetBIOS的前身——NetBT服务。
NetBT服务和138端口
NetBT,全称为NetBIOS over TCP/IP,是NetBIOS服务在TCP/IP协议上的扩展。它允许NetBIOS协议能够在TCP/IP网络中进行通信。与NetBIOS服务不同的是,NetBT服务不仅仅依赖于138端口,还依赖于其他一些端口,如445端口(用于SMB协议)等。
由于NetBT服务是在TCP/IP协议上进行的扩展,因此禁用NetBIOS服务并不会影响NetBT服务的正常运行。而138端口作为NetBIOS服务的标准端口,仍然保留下来,以确保现有的NetBIOS应用程序能够正常工作。
代码示例
为了更好地理解Windows禁用NetBIOS服务后的情况,我们可以编写一段简单的代码来验证。以下是使用Python语言编写的示例代码:
import socket
target_host = "127.0.0.1"
target_port = 138
# 创建一个UDP套接字
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 向目标主机发送数据包
client.sendto(b"Hello", (target_host, target_port))
# 接收来自目标主机的响应数据
data, addr = client.recvfrom(4096)
print(data.decode())
上述代码创建了一个UDP套接字,并向目标主机(本地主机)的138端口发送了一个数据包。然后,我们接收来自目标主机的响应数据并打印出来。如果运行这段代码,我们可以看到即使禁用了NetBIOS