Windows系统常用端口详解
7,9,13,17,19
这是几个简单的TCP/IP服务,在windows中被
Simple TCP/IP Services
管理。
- 7 : Echo 服务:将接收到的数据原样返回。
- 9 : Discard 服务:会丢弃所有接收到的数据,并且不返回任何数据。
- 13 : Daytime 服务:返回系统的时间。
- 17 : Quote of the Day 服务:每日一句。
- 19 : Character Generator 服务: 会发送一个字符序列,每个字符由一个字节表示。
java测试代码
点击展开/折叠代码块
public class SocketTest {
/**
* echo服务会将接收到的数据原样返回。
*/
@Test
@SneakyThrows
public void echoTest() {
String host = "localhost";
try (var s = new Socket(host, 7)) { // Echo 使用端口 7
s.setSoTimeout(5000);
try (OutputStream out = s.getOutputStream(); InputStream in = s.getInputStream()) {
String message = "Hello, Echo!";
out.write(message.getBytes(StandardCharsets.UTF_8));
out.flush();
byte[] buffer = new byte[1024];
int bytesRead = in.read(buffer);
String response = new String(buffer, 0, bytesRead, StandardCharsets.UTF_8);
System.out.println("Received: " + response);
}
}
}
/**
* Discard 服务会丢弃所有接收到的数据,并且不返回任何数据。为了验证这个服务,可以发送一些数据并观察没有响应。
*/
@Test
@SneakyThrows
public void discardTest() {
String host = "localhost";
try (var s = new Socket(host, 9)) { // Discard 使用端口 9
s.setSoTimeout(5000);
System.out.println("connect localhost Discard 9 port : " + s.isConnected());
try (OutputStream out = s.getOutputStream()) {
out.write("Test data".getBytes(StandardCharsets.UTF_8));
out.flush();
}
System.out.println("Data sent, no response expected.");
}
}
/**
* 获取daytime协议服务器的时间
*/
@Test
@SneakyThrows
public void socketTest() {
// String host = "time-a.nist.gov";
String host = "localhost";
try (var s = new Socket(host, 13)) {
s.setSoTimeout(5000);
try (var in = new Scanner(s.getInputStream(), StandardCharsets.UTF_8)) {
while (in.hasNextLine()) {
String line = in.nextLine();
System.out.println(line);
}
}
}
}
/**
* quote of the day,返回一句名言
*/
@Test
@SneakyThrows
public void quoteTest() {
String host = "localhost";
try (var s = new Socket(host, 17)) { // Quote of the Day 使用端口 17
s.setSoTimeout(5000);
try (var in = new Scanner(s.getInputStream(), StandardCharsets.UTF_8)) {
while (in.hasNextLine()) {
String line = in.nextLine();
System.out.println(line);
}
}
}
}
/**
* Character Generator 服务会发送一个字符序列,每个字符由一个字节表示。
*/
@Test
@SneakyThrows
public void characterGeneratorTest() {
String host = "localhost";
try (var s = new Socket(host, 19)) { // Character Generator 使用端口 19
s.setSoTimeout(5000);
try (var in = new Scanner(s.getInputStream(), StandardCharsets.UTF_8)) {
for (int i = 0; i < 10 && in.hasNextLine(); i++) {
String line = in.nextLine();
System.out.println(line);
}
}
}
}
}
135
135端口主要用于Microsoft的远程过程调用(RPC)服务。
RPCSS
(Remote Procedure Call Subsystem) 服务是 COM 和 DCOM 服务器的服务控制管理器。它执行 COM 和 DCOM 服务器的对象激活请求、对象导出程序解析和分布式垃圾回收。如果此服务被停用或禁用,则使用 COM 或 DCOM 的程序将无法正常工作。强烈建议你运行 RPCSS 服务。
3389
3389端口是Windows 的远程桌面连接(Remote Desktop Protocol,RDP)使用的默认端口。远程桌面允许你使用远程桌面客户端(适用于Windows、Android、iOs和 macOs)从远程设备连接到这台电脑并加以控制。这样,你就可以通过其他设备工作,如同直接在这台电脑上工作一样。
5357端口
5357端口通常用于Microsoft Windows的WS-Discovery(Web Services Dynamic Discovery)。这是一个用于网络设备自动发现的协议,特别是在局域网内使用。这意味着某些Windows设备可能会在这个端口上进行广播,以便发现和识别同一网络中的其他设备。
要关闭端口5357上的WS-Discovery服务,可以通过禁用相关服务来实现。以下是步骤:
通过服务管理器禁用 WS-Discovery 服务
- 打开服务管理器:
按 Windows
+ R
,输入 services.msc
,然后按回车。
- 找到并禁用服务:
在服务列表中找到名为 Function Discovery Resource Publication
和 SSDP Discovery
的服务。
对每个服务右键单击,选择“属性”。
将“启动类型”设置为“禁用”。
如果服务正在运行,点击“停止”。