端口消耗问题

1. 两种端口 我们知道TCP/UDP在工作时都需要一个端口来进行收发信息,有两种类型的端口: 临时端口或者叫动态端口,是默认情况下计算机进行出站连接时所有的端口集 已知端口,是特定应用程序或服务的定义端口。 例如,文件服务器服务在端口 445 上,HTTPS 为 443,HTTP 为 80,RPC 为 135。 自定义应用程序还将具有其定义的端口号。 客户端要想连接到应用程序或服务,需要使用计算机中的临时端口去连接服务器的已知端口。如:客户端计算机上的浏览器将使用临时端口连接到端口 https://www.microsoft.com 443。 当浏览器创建与多个网站的大量连接的情况下,其所尝试的任何新连接都将使用临时端口。 一段时间之后,连接将开始失败,并且出现此故障的可能性很高,因为浏览器已使用所有可用端口进行外部连接,并且建立连接的任何新尝试都将失败,因为没有更多的端口可用。 当使用计算机上的所有端口时,我们将它视为端口耗尽。 2. TCP/IP的默认动态端口范围 window上有两种动态端口范围: 起始端口49152,结束端口65535 (新版) 起始端口1025,结束端口5000(旧版) 可使用如下命令查看计算机上动态端口范围: netsh int ipv4 show dynamicport tcp netsh int ipv4 show dynamicport udp netsh int ipv6 show dynamicport tcp netsh int ipv6 show dynamicport udp 也可以手动更改动态端口的范围: netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range 其中start是起始端口号,num是范围 例如: netsh int ipv4 set dynamicport tcp start=10000 num=1000 netsh int ipv4 set dynamicport udp start=10000 num=1000 netsh int ipv6 set dynamicport tcp start=10000 num=1000 netsh int ipv6 set dynamicport udp start=10000 num=1000 这些示例命令将动态端口范围设置为从10000开始,分配1000个动态端口,即:10000-19999。可以设置的最小端口范围是255,可以设置的最小起始端口为1025。若要复制 Windows Server 2003 的默认行为,请使用 1025 作为起始端口,然后使用 3976 作为 TCP 和 UDP 的范围。 这导致起始端口为 1025,结束端口为 5000。

September 28, 2021 · 1 min · 李昌

WSL2-不输Mac的开发体验(三):WSL2中使用docker&k8s

1. docker for wsl2 在wsl2中使用docker的最佳实践不是在wsl2中安装docker,而是安装docker desktop: 从docker官网下载并安装完成后,打开docker desktop,选择setting->General,确保Use the WSL 2 based engine选项被勾选,然后选择右下角Apply&Restart。 重启docker desktop后,再次打开设置,确保setting->Resources->WSL INTEGRATION选项页中你的WSL发行版被勾选。 完成以上步骤之后,打开你的wsl, 输入docker: 出现这一堆说明安装成功。 使用docker run helloworld验证你的docker可以正常启动容器。 如果输入docker命令后无法启动,可以尝试sudo docker 2. k8s for wsl2 安装了docker desktop后,可以通过setting->Kubernetes,勾选Enable Kubernetes来为你的wsl提供k8s服务,但由于网络问题,通常不可能成功。 所以我们要"换源"。 打开setting->Docker Engine,将右侧配置文件改为: { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ], "insecure-registries": [], "debug": false, "experimental": false, "features": { "buildkit": true } } Apply&Restart,重启docker desktop。 现在我们还需要一些额外的镜像。 clone AliyunContainerService/k8s-for-docker-desktop 这个项目。 git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git 查看自己的docker desktop上Kubernetes的版本。 可以看到我们这里是v1.21.2。相应的,我们进入刚才clone的文件夹下,切换到v1.21.2分支 git checkout v1.21.2 切换分支后,在当前目录下执行:...

August 12, 2021 · 1 min · 李昌

WSL2-不输Mac的开发体验(二):WSL2的网络问题

1. 代理服务 1.1 获取Windows主机ip并使用其代理 可以在wsl中安装代理软件,但如果win主机上也有代理软件的话,会感觉有点乱。这里让wsl使用主机的代理。 我使用的代理软件是clash,这里首先要确保clash允许局域网 确认完clash支持局域网后,我们来看如何从wsl中获取win主机的ip地址。 在Windows主机上,我们可以用ipconfig命令来查看本地的ip地址 ipconfig 如图所示,命令行输出了在wsl网络中Win主机的ip地址。(wsl和windows处于一个网络中,这里得到的是windows在这个网络中的ip地址)。 如果我们想使用windows的代理,那么可以使用如下命令(在wsl中): export ALL_PROXY="http://172.28.48.1:7890" 这里, 172.28.48.1是Windows在这个网络中的ip地址,7890是代理接口。 通过访问google查看是否代理成功: 1.2 使用脚本自动获取ip地址并设置代理 通过1.1我们知道,可以在Windows主机中获取其在wsl网络中的ip地址,那我们是否可以在wsl中获取到这个地址呢? cat /etc/resolv.conf 得到类似下面的输出: # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver 172.28.48.1 这里的nameserver,是不是就和我们在Windows下获取到的ip地址是一样的。 我们通过一个脚本来自动获取到这个ip地址,并将其设置为代理地址: #!/bin/bash host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ") # 获取ip地址 echo $host_ip # 输出ip地址 export ALL_PROXY="http://$host_ip:7890" # 设置代理,7890为我的代理端口 curl -I https://www....

August 10, 2021 · 2 min · 李昌

WSL2-不输Mac的开发体验(一):WSL2的安装及基本配置

1. WSL的安装 1.1 升级Windows WSL需要高版本的windows,可使用微软官方的易升工具或直接从设置中升级,升级需要一定的时间。 1.2 安装WSL 使用管理员模式打开power shell, 使用如下命令开启WSL功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 重启你的机器 启用虚拟机功能 以管理员身份打开powershell,使用如下命令: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 重新启动电脑 下载Linux内核更新包 适用于 x64 计算机的 WSL2 Linux 内核更新包 运行你下载的更新包。 将WSL2设置为默认版本 以管理员身份打开powershell,使用如下命令: wsl --set-default-version 2 选择你要安装的发行版 这里我选择了Ubuntu18.04,获取后安装 启动安装的发行版即可 2. 使用WSL图形界面(可选) 设置环境变量 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=1 安装Xserver,这里选择的软件是vcxsrv, 可在sourceforge中下载安装。 安装完成后直接启动即可...

June 1, 2021 · 1 min · 李昌

多出几个通用非即插即用显示器

1. 问题现象 莫名其妙,多出来几个显示器。 从设备管理器中看,也是存在多个通用非即插即用显示器2. 解决办法 重新安装Intel显卡驱动,可以从电脑厂家官网下载。但需要注意的一点是:在重新安装显卡驱动后,需要禁用显卡驱动程序的自动更新,否则还有可能出现这个问题。 打开组策略gpedit.msc,选择计算机配置”->“管理模板”->“系统”->“设备安装”->“设备安装限制”,找到Intel显卡的类Guid添加到阻止使用与下列设备安装程序类相匹配的驱动程序安装设备中

April 4, 2021 · 1 min · 李昌

Windows装系统遇到的问题

Windows装系统遇到的问题 1. 问题描述 windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装到GPT磁盘 2. 解决办法 首先选择U盘安装,进入安装界面 按shift+F10打开命令行 输入diskpart并回车 输入list disk查看磁盘,一般会出现两个磁盘,一个是机器本身的磁盘,编号为0,另一个为U盘,编号为1 输入select disk x(x为要选择的磁盘编号) cmd会提示当前选择的磁盘为x 执行clean命令清除该磁盘上所有分区信息,并且会清空所有硬盘数据 执行convert gpt,将该硬盘转化为GPT格式 完成,继续安装系统

February 25, 2021 · 1 min · 李昌