Chrome浏览器默认阻止访问某些被认为是不安全的端口,这是为了防止潜在的安全风险。6000端口是其中的一个,它通常与X11(用于图形用户界面的一种协议)关联,因此被Chrome列入了默认禁止列表。

除了6000端口之外,Chrome还禁用了其他一系列端口。以下是一些被禁用的端口列表:

- 1, 7, 9, 11, 13, 15, 17, 19, 20, 21, 22, 23, 25, 37, 42, 43, 53, 77, 79, 87, 95, 101, 102, 103, 104, 109, 110, 111, 113, 115, 117, 119, 123, 135, 139, 143, 179, 389, 465, 512, 513, 514, 515, 526, 530, 531, 532, 540, 556, 563, 587, 601, 636, 993, 995, 2049, 4045, 和 6665 到 6669(这些通常与IRC聊天服务相关)。

如果你确实需要在开发环境中使用这些端口之一,你可以通过修改Chrome启动参数来允许特定端口。例如,在Windows上,你可以找到Chrome的快捷方式,然后在目标字段里添加 `--explicitly-allowed-ports=6000` 来允许6000端口。不过请注意,这样做可能会带来安全风险,因此只应在受控的开发环境中进行,并确保你知道自己在做什么。此外,对于生产环境,建议选择未被禁用的安全端口。

chromium呢,如果也有类似限制,那么可以通过什么参数解除这个限制吗?

类似于Chrome,Chromium浏览器也对某些端口的访问进行了限制以保护用户免受潜在的安全威胁。如果你在使用Chromium时遇到了同样的问题,并且需要解除对特定端口的访问限制,你可以使用启动参数 `--explicitly-allowed-ports` 来允许这些端口。

例如,如果你想允许访问6000端口,你可以在启动Chromium时添加以下命令行参数:

```shell
chromium --explicitly-allowed-ports=6000
```

如果你有多个端口需要允许,可以用逗号分隔它们的端口号:

```shell
chromium --explicitly-allowed-ports=6000,7000,8000
```

需要注意的是,虽然这种方法可以解除Chromium对特定端口的访问限制,但这样做可能会使你的系统暴露于安全风险之中。因此,在生产环境中或在不受信任的网络上,应当谨慎使用此选项,并确保你知道自己正在做什么。此外,这个参数应该只在开发或者测试环境下使用,当你确定要访问的服务器是安全的时候才启用。

.net似乎有一个方法,可以找随机找一个空闲端口进行监听,请问这个方法是什么

在 .NET 中,如果你想要监听一个随机的空闲端口,可以通过指定端口号为 0 来实现。当你创建一个 `TcpListener` 或者 `HttpListener` 实例并指定要监听的端口为 0 时,操作系统会自动分配一个当前未被使用的端口号。

以下是一个使用 `TcpListener` 的简单示例:

```csharp
using System;
using System.Net;
using System.Net.Sockets;

class Program
{
static void Main()
{
// 创建一个 TcpListener 实例,监听本地的 0 端口
var listener = new TcpListener(IPAddress.Loopback, 0);
listener.Start();

// 获取实际分配的端口号
int assignedPort = ((IPEndPoint)listener.LocalEndpoint).Port;
Console.WriteLine($"Assigned to port: {assignedPort}");

// 记得在结束时停止监听
listener.Stop();
}
}
```

这段代码首先创建了一个 `TcpListener` 实例,它尝试绑定到回环地址(`127.0.0.1`)的端口 0 上。启动监听器后,操作系统会分配一个未被占用的端口号。通过访问 `LocalEndpoint` 属性可以得知实际分配到了哪个端口号。

这种方法同样适用于其他需要监听网络端口的场景,在你不需要关心具体端口号或者希望程序每次运行时都使用不同的端口时非常有用。

仅仅为了测试,如果我写一个程序,以超级管理员运行,把1000以上的端口都占用了,这个时候再去申请一个空闲端口,系统可能会分配一个1000以下的端口吗?

这是一个非常有趣的问题,涉及到操作系统底层的端口分配机制和权限控制。

---

## 你的设想是:

> 我写一个程序,以超级管理员(root)身份运行,先手动占用所有1000以上的端口,然后再调用 `bind(0)` 或类似方式请求系统分配一个空闲端口。此时,系统会不会被迫把一个**低于1000的端口**分配给我?

---

## 简短回答:

> **即使你以 root 身份运行,并占用了所有高于1000的可用端口,系统通常仍然不会为你自动分配低于1024的知名端口(如80、443等)。**

---

## 详细分析:

### 1. **端口分配的基本规则**

在大多数现代操作系统中(特别是Linux),端口分为以下三类:

| 类型 | 端口号范围 | 描述 |
|------|------------|------|
| 知名端口(Well-known ports) | 0 - 1023 | 预留给系统服务(HTTP、SSH、FTP 等),绑定需要 root 权限 |
| 注册端口(Registered ports) | 1024 - 49151 | 可由用户/应用程序注册使用 |
| 动态/私有端口(Dynamic/Private ports) | 49152 - 65535 | 用于临时连接或自动分配 |

当你使用 `bind(0)` 请求系统分配端口时,默认只会从“动态/私有端口”范围内选择一个未被占用的端口。

---

### 2. **即使你是 root,也不会改变默认行为**

- 即使你以 root 身份运行程序,`bind(0)` 的行为依然受限于系统的配置(比如 `/proc/sys/net/ipv4/ip_local_port_range`)。
- 操作系统会尽力避免将 <1024 的端口用于自动分配,哪怕你显式地“逼迫”它 —— 这是一种安全设计。
- 如果所有“合法”的自动分配端口都已耗尽,系统通常会返回错误(例如 `EADDRNOTAVAIL`),而不是去尝试低编号端口。

---

### 3. **极端测试下的表现(模拟你设想的情况)**

假设你做了以下事情:

1. 修改内核参数,让 `ip_local_port_range` 包含一些低编号端口:
```bash
echo "500 1000" > /proc/sys/net/ipv4/ip_local_port_range
```

2. 编写程序,以 root 运行,占用从 1000 到 65535 所有端口(监听或建立连接)。

3. 再次调用 `bind(0)`。

在这种情况下,系统可能会从你设置的新端口范围(500~1000)中寻找空闲端口。

所以如果你手动修改了系统允许的端口范围,让它包含 <1024 的端口,那么**系统确实可能给你分配一个低于1000的端口**!

---

## ️ 实验验证示例(Linux)

你可以通过如下命令查看当前本地端口范围:

```bash
cat /proc/sys/net/ipv4/ip_local_port_range
```

输出可能是:

```
32768 60999
```

现在,你可以把它改小一点来测试:

```bash
echo "500 1000" > /proc/sys/net/ipv4/ip_local_port_range
```

然后写一个简单的 C 程序或 Python 脚本请求系统分配一个端口:

```python
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 0))
print(s.getsockname())
s.close()
```

如果一切顺利,你会看到系统真的分配了一个 500~1000 之间的端口。

---

## ️ 注意事项

- 修改 `ip_local_port_range` 是危险操作,可能导致系统不稳定。
- 不建议在生产环境中更改这些值。
- 绑定到知名端口(如 80、443)通常只应在有意为之的情况下进行(如启动 web 服务器)。

---

## 结论总结:

| 场景 | 是否可能分配到 <1000 的端口 |
|------|----------------------------|
| 默认配置下,即使 root + 占满高编号端口 | 不可能 |
| 修改了 `ip_local_port_range`,并包含了 <1000 的端口 | 可能 |
| 显式手动绑定到 <1024 端口(如80) | 可能(只要没被占用且你是 root) |
| 使用 bind(0) 自动分配 | 默认不可能,除非修改系统端口范围 |

---

如果你愿意,我可以提供一个完整的测试脚本,帮你实际模拟这个过程。是否需要?

chrome浏览器默认似乎打不开6000端口的网页,请问原因是什么呢?还有没有其他端口也是不能使用的?的更多相关文章

  1. chrome浏览器默认打开网址并全屏

    1.创建chrome快捷方式. 2.右击快捷方式点击属性. 3.属性面板快捷方式下目标的默认内容后添加“ 页面地址 --kiosk”.[注意网页地址和--kiosk之前各有一个英文的空格] 4.点击确 ...

  2. chrome浏览器默认启动时打开2345导航的解决方法

    2345并没有改动chrome内部设置.它仅仅是把全部的快捷方式改动了.包含開始菜单旁边的快捷启动图标. 仅仅须要右键chrome快捷方式.在目标一栏中,把"----chrome.exe&q ...

  3. chrome浏览器默认样式覆盖input背景

    问题描述:input表单添加了背景图片,结果自动填充是,编程了一个淡黄色矩形方框. 解决方案:网上查询了很多的解决方式,基本都不管用,这里我简单说两个. 1.去除黄色背景 input:-webkit- ...

  4. 修改chrome浏览器默认css样式的方法

    最近重新用起了ubuntu kylin,然后又碰到之前让我感到有些难受的一个小问题:用chrome浏览部分网页时,一部分粗体字十分难看,就像是宋体直接加粗那样. 之前就觉得这样看起来很难受,但是找到的 ...

  5. Chrome 浏览器默认样式覆盖自己 CSS 样式的解决

    检查 HTML 源代码,DOCTYPE 的声明是否写正确. HTML5 的 DOCTYPE 声明规范: <!DOCTYPE html> 参考链接: css - User agent sty ...

  6. Chrome浏览器扩展开发系列之十九:扩展开发示例

    翻译总结了这么多的官网内容,下面以一款博主开发的“沪深股票价格变化实时追踪提醒”软件为例,介绍Chrome浏览器扩展程序的开发,开发环境为Eclipse IDE+Chrome Browser. “沪深 ...

  7. chrome浏览器font-size<12px无效解决办法

    当样式设定font-size<12px时,chrome浏览器里字体显示仍为12px:如font-size:11px; 但是chrome还是12px的大小,很不听话. 今天我就遇到了这样的问题?网 ...

  8. Win7中修改Chrome浏览器缓存文件目录

    方法有两种: 第一种: 在Windows 7下可以用mklink命令把Chrome浏览器的缓存位置设置为自己需要的文件夹路径. Chrome浏览器默认的缓存文件位于: CC:\Users\登录用户名\ ...

  9. chrome浏览器备忘

    记录日常使用Chrome遇到的问题. audio控件播放音频问题 打开http://www.cdfive.com,发现音乐没有自动播放,F12打开控制台发现有如下报错: Uncaught (in pr ...

  10. Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.

    问题:Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin. 原因:.js文件中使用load()方法,而Chrom ...

随机推荐

  1. 「Log」2023.8.18 小记

    序幕 七点到校,博客整理一下,补全目录. 写 AC 自动机练习题. \(\color{blueviolet}{P3966\ [TJOI2013]\ 单词}\) 挺板的,每个模式串当匹配串统计一遍答案即 ...

  2. es聚合查询自动补0----java代码

    ES语句 GET /event_log_hulianwang_v3/_search { "size": 0, "query": { "bool&quo ...

  3. 刚刚 B站又血崩了?!我来告诉你真正原因

    B 站又双叒叕崩了,这次是真炸裂了!6 月 12 日晚 9 点左右,我还在直播呢,突然就看到弹幕都在说 B 站炸了,我立马坐不住了,光速下波,作为一名前大厂程序员,就爱吃大厂的瓜,就爱吃同行的瓜,吃瓜 ...

  4. 《机器人SLAM导航核心技术与实战》第1季:第12章_典型自主导航系统

    <机器人SLAM导航核心技术与实战>第1季:第12章_典型自主导航系统 视频讲解 [第1季]12.第12章_典型自主导航系统-视频讲解 [第1季]12.1.第12章_典型自主导航系统_ro ...

  5. Let’s Encrypt申请证书

    前提 安装好ngixn,并配置解析好你的域名,仅仅留下证书配置处不填写即可. 安装certbot certbot 官方推荐的自动化脚本, 用来申请免费SSL证书的. (certbot中文翻译是 证书机 ...

  6. SPOJ VIDEO Video game combos 题解

    SP10502 VIDEO - Video game combos AC 自动机上的动态规划. 由题目中这句话,不难想到 AC 自动机: \(s_i\) 在 \(t\) 中出现一次指的是 \(s_i\ ...

  7. qt 错误 多继承 造成错误 “qt_metacast”: 不是“****”的成员

    简介 多继承造成"qt_metacast": 不是"****"的成员错误的解决方案. 原格式 class BezierSurface : public Stra ...

  8. java 代理类

    简介 理解不透彻 简而言之,就是在程序运行过程中创建的类 一个代理类只有一个实例域--调用处理器.invoke? 总而言之 reflect 的理解都不是特别透彻 code package cn; im ...

  9. ETL简介:数据集成与应用

    导言: 在当今大数据时代,组织和企业需要处理和分析庞大的数据量.ETL(Extract, Transform, Load)是一种重要的数据集成和处理方法,它在数据管理和决策支持中起着关键作用.本文将介 ...

  10. SciTech-Chemistry(化学)-电解: 电化学之"Electrolysis(电解)"化学工艺及应用

    SciTech-Chemistry(化学)-电解: 电化学之"Electrolysis(电解)"化学工艺及应用 Electrolysis(电解) 是将 电流 通过 电解质溶液或熔融 ...