端口消耗问题

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 · 李昌