端口号详解(技术向)
端口号详解(技术向)
一、核心定义
**端口号(Port Number)**是 传输层协议(TCP/UDP) 的逻辑标识,用于在同一设备上区分不同应用程序的网络通信入口。端口号是用两个字节(无符号)表示的。
- 本质:16位无符号整数(范围:0~65535)
- 作用:实现 多路复用(多个应用共享同一IP地址)
- 类比:
- IP地址 → 大厦地址
- 端口号 → 大厦内的具体房间号
二、端口号分类(IANA标准)
类型 | 范围 | 说明 | 示例 |
---|---|---|---|
系统端口 | 0~1023 | 知名服务专用(需管理员权限) | HTTP(80)、SSH(22) 、FTP(21)、Telnet占用端口23 |
注册端口 | 1024~49151 | 向IANA注册的应用程序端口(分配给用户进程或应用程序) | MySQL(3306)、Redis(6379)、Tomcat占用端口8080、Oracle占用端口1521 |
动态/私有端口 | 49152~65535 | 临时分配给客户端程序(短暂使用) | 浏览器随机端口 |
三、TCP/UDP端口特性对比
特性 | TCP端口 | UDP端口 |
---|---|---|
连接方式 | 面向连接(需三次握手) | 无连接 |
可靠性 | 确保数据按序到达 | 不保证交付 |
典型应用 | Web服务(80)、数据库(3306) | DNS(53)、视频流(554) |
端口复用 | 同一端口不可被多进程同时绑定 | 允许多进程绑定同一端口(需SO_REUSEADDR) |
四、经典端口号映射表
端口号 | 协议/服务 | 用途说明 | 通信方向 |
---|---|---|---|
20/21 | FTP | 文件传输(数据/控制通道) | TCP |
22 | SSH | 安全远程登录 | TCP |
25 | SMTP | 邮件发送 | TCP |
53 | DNS | 域名解析 | UDP/TCP |
80 | HTTP | 网页访问 | TCP |
443 | HTTPS | 加密网页访问 | TCP |
3389 | RDP | Windows远程桌面 | TCP |
5432 | PostgreSQL | 数据库服务 | TCP |
6379 | Redis | 内存数据库 | TCP |
27017 | MongoDB | NoSQL数据库 | TCP |
五、端口使用技术规范
1. 服务端绑定规则
- 特权端口限制:只有root用户可绑定0-1023端口
- 绑定冲突检测:
# Python示例 import socket try:s = socket.socket()s.bind(("0.0.0.0", 80)) # 尝试绑定80端口 except OSError as e:print(f"Port occupied! {e}")
2. 客户端端口分配
- 临时端口范围:
# Linux查看动态端口范围 cat /proc/sys/net/ipv4/ip_local_port_range # 典型输出:32768 60999
- 四元组唯一性:
唯一通信标识 = 源IP + 源端口 + 目标IP + 目标端口
六、端口扫描与安全
1. 常见扫描类型
扫描方式 | 技术原理 | 检测命令 |
---|---|---|
TCP全连接扫描 | 完整三次握手 | telnet IP PORT |
SYN半开扫描 | 只发SYN包不完成握手 | nmap -sS IP |
UDP扫描 | 发送空UDP包检测ICMP响应 | nmap -sU IP |
2. 安全防护措施
- 防火墙策略:
# 只允许特定IP访问3306端口 iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP
- 端口隐藏技术:
- 修改默认服务端口(如SSH改用2222端口)
- 使用端口敲门(Port Knocking)技术
七、网络调试命令
1. 端口监听检测
# Linux/Mac
netstat -tulnp | grep :80
lsof -i :8080# Windows
netstat -ano | findstr :3389
2. 端口连通性测试
# TCP测试(HTTP服务)
nc -zv www.google.com 80# UDP测试(DNS服务)
nc -zvu 8.8.8.8 53
八、特殊端口说明
端口号 | 特殊含义 | 协议 |
---|---|---|
0 | 动态端口分配(系统自动选择) | TCP/UDP |
631 | 网络打印服务(IPP/CUPS) | TCP |
5353 | mDNS(组播DNS) | UDP |
4789 | VXLAN隧道协议 | UDP |
九、开发注意事项
-
端口选择原则:
- Web开发优先使用8000、8080等非特权端口
- 避免使用已注册端口(检查IANA列表)
-
容器环境端口映射:
# Docker示例:将容器80端口映射到宿主机8080 docker run -p 8080:80 nginx
-
NAT端口转发配置:
# 路由器配置示例:外网访问12345端口转发到内网服务器的3389 [WAN] 12345 → [LAN] 192.168.1.100:3389
通过深入理解端口号机制,开发者可以:
- 合理规划网络应用架构
- 快速定位网络故障
- 提升系统安全性
- 优化服务性能
相关文章:
端口号详解(技术向)
端口号详解(技术向) 一、核心定义 **端口号(Port Number)**是 传输层协议(TCP/UDP) 的逻辑标识,用于在同一设备上区分不同应用程序的网络通信入口。端口号是用两个字节(无符号&…...
git合并多次commit提交
首先查看历史记录 git log 查看你想要合并的commit是哪些(注意:这里是逆序,最上的是最新提交) 找到当前想要合并的最后一个记录,复制该记录的下一个记录的 id(黄色部分commit id),…...
深入浅出Java-Lambda表达式
深入浅出Java-Lambda表达式 一、Lambda 表达式特征二、Lambda 表达式的基础语法与结构2.1 基本语法格式2.2 语法简化规则2.3 与匿名内部类的对比 三、函数式接口:Lambda 表达式的载体3.1 函数式接口的定义3.2 常用函数式接口分类3.2.1 消费型接口(Consum…...
FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现
起因:因为要设计一个波珠螺丝固定器,为了不跑偏,需要在螺柱上加工一个直径6mm,深度1.2mm的圆弧凹槽所以想用泉州制造的6.8车铣加工。 但是该加工目前不支持轴向的钻孔,所以想着干脆在两端加上M8的螺栓,也起…...
java并发-线程池
文章目录 线程池定义组成工作参数设置种类关闭 线程池 定义 线程池就是提前创建好一批线程,反复复用处理任务,避免频繁创建销毁线程,同时控制线程数量,让系统更高效、稳定。 举个例子: 场景假设: 你开了…...
openlayer:06点击按钮实现地图动画移动
如何实现点击去辽宁按钮实现用动画效果将地图顺滑的切换到辽宁区域,点击回北京按钮后同样将地图使用动画效果移动回到辽宁。 本文介绍了如何通过OpenLayers库实现地图在北京市和辽宁省之间的平滑切换动画。首先,使用View类设置地图的初始中心点为北京市…...
使用 Matter.js 创建封闭箱体与里面的小球
下面是一个使用 Matter.js 创建的示例,包含一个地面、由4个长方形组成的封闭箱体,箱体内有10个不同颜色的小球。箱体可以被拖动,而小球被限制在箱体内部。 <!DOCTYPE html> <html> <head><title>Matter.js 可拖动箱体与小球</title><styl…...
自动化软件如何确保高可用性和容错性?
在数字化转型的浪潮中,RPA(机器人流程自动化)技术成为众多企业和机构实现业务流程优化的得力助手。以金智维为例,作为 RPA 领域的佼佼者,其技术在金融、政务等行业广泛应用,承担着大量关键业务流程的自动化…...
变电站综合自动化系统
系统介绍 a安科瑞 18702112163 变电站综合自动化系统为企业变电站提供了完整的SCADA功能,包括主接线图、设备工况、实时数据显示、定值管理、SOE报警/记录/查询/打印、棒图、实时/历史曲线、语音报警、历史信息查询、用户权限管理、各种运行数据统计分析报表等。系…...
【2025.05】Anaconda新手安装+配置+环境创建教程
本文目录 一、安装前述二、下载与安装1、下载2、选择安装类型3、选择安装路径: 三、设置环境1、添加conda目录到path2、修改envs\pgks默认目录第一种:修改.condarc文件第二种:使用conda config命令 四、修改镜像源五、常用命令(27…...
React-改变当前页class默认的样式
比如antd for mobile,已经定义了默认的ui的class样式,如果想在当前页面的控件显示特殊的样式,除了指定style外,还可以强制改变默认class的样式,比如我想改变list.item的字体。 在返回渲染布局里面加上 return (<&…...
腾讯游戏安全与高通合作构建PC端游安全新格局
导语:5月16日,2025游戏安全行业峰会在深圳举行,腾讯游戏安全ACE与高通(中国)在峰会上就腾讯游戏安全方案正式宣布达成行业生态合作。双方将依托高通技术公司专门面向AI PC打造的骁龙X系列平台,共同为《无畏…...
Token类型与用途详解:数字身份的安全载体图谱
在现代数字身份体系中,Token如同"数字DNA",以不同形态流转于各类应用场景。根据Okta的最新研究报告,平均每个企业应用使用2.7种不同类型的Token实现身份验证和授权。本文将系统梳理主流Token类型及其应用场景,通过行业典…...
【Linux基础I/O】文件调用接口、文件描述符、重定向和缓冲区
【Linux基础I/O一】文件描述符和重定向 1.C语言的文件调用接口2.操作系统的文件调用接口2.1open接口2.2close接口2.3write接口2.4read接口 3.文件描述符fd的本质4.标准输入、输出、错误5.重定向5.1什么是重定向5.2输入重定向和输出重定向5.3系统调用的重定向dup2 6.缓冲区 1.C语…...
软考中级软件设计师——操作系统考试题型
一、PV操作与进程同步(必考大题) 1. 真题示例(2020年真题) 题目: 三个进程P1、P2、P3共享一个缓冲区,P1生产数据放入缓冲区,P2和P3消费数据。要求: 缓冲区大小为10,满时…...
transformer归一化层优化:深度解读 RMSNorm (Root Mean Square Layer Normalization,均方根层归一化)
导读:RMSNorm 把传统 LayerNorm 的“减均值(centering) 除标准差(scaling)”简化为“直接除以向量均方根 (Root Mean Square, RMS,均方根)”。这一改动让归一化既 更省算 又 同样稳定,因而成为 …...
java基础 之 Hash家族(一)
文章目录 HashCode定义代码使用使用场景 HashMap定义常用方法使用场景 ConcurrentHashMap定义常用方法使用场景 HashTable定义常用方法使用场景 HashSet定义常用方法使用场景你想到过吗? HashMap、ConcurrentHashMap、HashTable的对比总结 HashCode 定义 hashcode是…...
windows服务器部署jenkins工具(二)
jenkins的大致流程:新增任务->配置任务->构建(打包)项目->部署(发布) 具体如何使用,我这里就不多讲了。这次就给大家讲讲,jenkins安装之后使用过程中存在的一些问题。 1.maven项目如…...
机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式
机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 网…...
【人工智能发展史】从黎明到曙光01
人工智能的史诗:从黎明到曙光 序曲:晨曦微露 故事的序幕拉开于一个思想激荡的年代,1956年,达特茅斯会议的钟声,如同第一缕晨曦,宣告了"人工智能"纪元的到来。那个夏天,在新罕布什尔…...
ollama使用gpu运行大模型
罗列ollma镜像 ollama list拉取ollama镜像源里面的模型: ollama pull qwen2:1.5b下载CudaToolkit https://developer.nvidia.com/cuda-toolkit-archive 我这里选择11.7的万金油版本,从来没出过bug Ollama安装好后,为了让推理跑在GPU上&am…...
Linux电源管理——PSCI初始化流程和多核启动流程
目录 一、PSCI 初始化流程 1、PSCI设备树节点 2、PSCI kernel初始化流程 get_set_conduit_method set_conduit psci_probe 二、CPU PSCI 操作初始化流程 1、CPU 设备树节点 2、 struct cpu_operations 3、kernel 流程 cpu_read_bootcpu_ops smp_init_cpus 三、CPU…...
Linux问题排查-引起服务器带宽使用率高的内鬼
Linux网络流量监控与瓶颈分析全攻略:从基础命令到进程级方案 一、网络带宽查询与实时流量监控 1. 查询主机网络带宽 网卡理论带宽 通过ethtool命令查看网卡最大支持速率,例如: ethtool eth0 # 替换为实际网卡名(如ens33&#x…...
《微服务架构设计模式》笔记
思维导图 1-3章 4-6 章 5-13 章 资料 配套代码仓库:https://github.com/microservices-patterns/ftgo-application 作者网站:https://microservices.io/...
基于JDBC的信息管理系统,那么什么是JDBC呢?
JDBC 即 Java Database Connectivity,是 Java 语言中用于与数据库进行交互的一套 API。它提供了一种标准的方式,让 Java 程序能够连接到各种不同类型的数据库,并执行 SQL 语句来实现对数据库的查询、插入、更新和删除等操作。 主要功能 建立…...
百度地图的地铁图API所有城市的城市名和citycode的对照关系列表
百度地图的地铁图API所有城市的城市名和citycode的对照关系列表 城市keywordcitycode北京beijing131上海shanghai289广州guangzhou257深圳shenzhen340重庆chongqing132天津tianjin332石家庄shijiazhuang150南京nanjing315成都chengdu75沈阳shenyang58杭州hangzhou179武汉wuhan2…...
信息学奥赛一本通 1853:【08NOIP提高组】传纸条 | 洛谷 P1006 [NOIP 2008 提高组] 传纸条
【题目链接】 ybt 1853:【08NOIP提高组】传纸条 洛谷 P1006 [NOIP 2008 提高组] 传纸条 【题目考点】 1. 动态规划:坐标型动态规划 【解题思路】 抽象问题,存在m乘n的网格,每个格子中有一个数值,即同学愿意帮忙的…...
APM32小系统键盘PCB原理图设计详解
APM32小系统键盘PCB原理图设计详解 一、APM32小系统简介 APM32微控制器是国内半导体厂商推出的一款高性能ARM Cortex-M3内核微控制器,与STM32高度兼容,非常适合DIY爱好者用于自制键盘、开发板等电子项目。本文将详细讲解如何基于APM32 CBT6芯片设计一款…...
【Linux我做主】探秘进程与fork
进程和fork 父子进程和forkgithub地址前言1. 进程的标识符PID1.1 查看系统内所有的进程1.2 kill杀掉进程1.3 获取进程的PID1.4 bash与父子进程 2. 创建进程与fork2.1 fork创建子进程2.2 fork困惑的解释0. fork的工作原理1. 为什么给子进程返回0,给父进程返回子进程P…...
学习python day4
1.顺序语句结构 #赋值语句 name张三 age20 a,b,c,droom#字符串分解赋值 print(a,b,c,d) #输入输出也是典型的顺序结构 nameinput(请输入您的姓名:) ageeval(input(请输入您的年龄:)) #使用eval进行转换 print(姓名:,name) print(年龄&#x…...
如何通过外链建设提升Shopify独立站的权重和排名
一、外链质量评估与筛选原则 相关性优先 选择与自身行业、产品或目标用户群体高度相关的网站(如行业论坛、垂直媒体、评测博客)交换外链,避免低相关性垃圾链接导致搜索引擎惩罚。 权威性指标 关注外链来源网站的域名权威(DA…...
高并发内存池|六、page cache的设计
六、page cache的设计 1. page cache的结构 page cache 也是一个哈希桶结构,但它的映射结构与前两个 cache 不同。它的每一个桶是容量从 1 到 128 页大小的内存块,桶中的每个内存块由 SpanList 管理。page cache 的内存由其向系统申请所得,…...
C++线程池实现
C线程池实现 知识点补充为什么要实现线程池线程池的实现过程 知识点补充 在C11中引入了对线程库的支持,接下来我们介绍一下跟线程相关的一些知识点: 线程对象的构造方式 在C11中主要提供的三种线程的构造方式:无参构造、带参构造和调用移动构…...
#Redis缓存篇#(七)分布式缓存
目录 一 单节点Redis 1 单节点的问题 二 分布式缓存 1 Redis持久化 (1 RDB持久化 (2 AOF持久化 2 Redis主从集群 (1 搭建主从架构 (2 主从数据同步原理 3 Redis哨兵 (1 哨兵的作用和原理 (2 搭…...
【VSCode】安装与 ssh 免密登录
【VSCode】安装与 ssh 免密登录 下载SSH 登录设置免密登录关闭远程连接删除ssh连接(慎用!!!删除了建立的连接就没有了!!) 下载 https://code.visualstudio.com/docs/?dvwin64user 选择安装路径…...
【Python解决八皇后问题】回溯算法与优化策略全解析
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现基础回溯实现位运算优化…...
判断一个元素是否在可视区域
判断元素是否在可视区域的方法 方法一:offsetTop 和 scrollTop 通过计算元素的 offsetTop 和容器的 scrollTop 来判断元素是否位于视口内。这种方法适用于简单的垂直滚动场景。 优点: 实现简单,性能较好。缺点: 不支持复杂的布局结构(如嵌套滚动),无法处理水平方向上的可…...
作物遗传与种质创新利用全国重点实验室-随笔10
作物遗传与种质创新利用全国重点实验室依托于南京农业大学,2022年11月完成国家重点实验室重组工作,由原名称“作物遗传与种质创新国家重点实验室”正式更名为“作物遗传与种质创新利用全国重点实验室”。 实验室面向国家粮食安全和农业高质量发展的重大战…...
分布式电源的配电网无功优化
分布式电源(Distributed Generation, DG)的大规模接入配电网,改变了传统单向潮流模式,导致电压波动、功率因数降低、网损增加等问题,无功优化成为保障配电网安全、经济、高效运行的关键技术。 1. 核心目标 电压稳定性:抑制DG并网点(PCC)及敏感节点的电压越限(如超过5%…...
游戏引擎学习第301天:使用精灵边界进行排序
回顾并为今天的内容做准备 昨天,我们解决了一些关于排序的问题,这对我们清理长期存在的Z轴排序问题很有帮助。这个问题我们一直想在开始常规游戏代码之前解决。虽然不确定是否完全解决了问题,但我们提出了一个看起来合理的排序标准。 有两点…...
网络框架二次封装:基于Kotlin的高扩展性网络请求框架完整实现
完整目录结构 1. 架构设计1.1 分层架构1.2 核心组件1.3 接口关系图2. 基础配置实现2.1 NetworkConfig完整代码2.2 CacheConfig完整代码3. 核心网络客户端3.1 SmartHttpClient完整实现3.2 单例管理3.3 服务创建与执行4. DSL请求构建器4.1 NetworkRequest完整实现4.2 生命周期绑…...
高噪声下扩展边缘检测算子对检测边缘的影响
目录 一、常见的边缘检测算子 二、扩展边缘检测算子对检测边缘的影响 三、结论 一、常见的边缘检测算子 Sobel 算子: Prewitt算子;...
Linux 内核音视频架构(V4L2 )介绍
一.概述 Linux 内核中的 V4L2(Video for Linux Two)框架 是用于管理音视频设备(如摄像头、电视调谐器、视频采集卡等)的核心子系统。 它提供了一套统一的接口,使得用户空间应用程序能够方便地访问和控制硬件设备&…...
专业 YouTube SEO 方案:打造高排名视频的关键步骤
YouTube 是全球订阅量最高的社交媒体平台之一。YouTube 为发布创意视频内容和针对特定受众开展营销活动提供了无限可能,是任何品牌内容营销策略的重要组成部分。 但是,为了发展您的 YouTube 频道并消除噪音,优化您的视频内容以便可以在搜索结…...
基于STM32的智能台灯_自动亮度_久坐提醒仿真设计(Proteus仿真+程序设计+设计报告+讲解视频)
这里写目录标题 1.主要功能2.仿真设计3.程序设计4.设计报告5.下载链接 基于STM32的智能台灯_自动亮度_久坐提醒仿真设计 (Proteus仿真程序设计设计报告讲解视频) 仿真图Proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号࿱…...
labview硬件部分——压力测量
0kg的电压需要我们手动输入!在不放东西的时候的电压,先运行一次程序,将其记录后写到程序中的0kg输入按键即可。 整体的程序:...
Mysql索引实战1
对于上面这两种 name>‘a’ 和 name>‘zzz’ 的执行结果,mysql最终是否选择走索引或者一张表涉及多个索引,mysql最终如何选择索引,我们可以用trace工具来一查究竟,开启trace工具会影响mysql性能,所以只能临时分析…...
在实际网络部署中,静态路由的优先级通常高于RIP
是的,在实际网络部署中,静态路由的优先级通常高于RIP,尤其是在中小型网络或对可控性要求高的场景中。以下是关键原因和典型应用场景分析: 1. 为何静态路由比RIP更受青睐? (1) 简单性与可靠性 静态路由: 手…...
Linux系统编程-DAY02
一、标准io 1.写文件 fgets函数中判断有多少行,且判断最后一个是不是终止符 if( buf[strlen(buf) - 1] \n ) 2. wc命令行:字符统计 wc -l 文件名 行数 文件名 3. write 用于操作二进制的文件(文办文件和图片文件也可以…...
【C++ 真题】P5736 【深基7.例2】质数筛
P5736 【深基7.例2】质数筛 题目描述 输入 n n n 个不大于 10 5 10^5 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 第一行输入一个正整数 n n n,表示整数个数。 第二行输入 n n n 个正…...