网站首页 > 技术文章 正文
IP地址和端口号共同构成了网络通信中的完整寻址,但你知道为什么有些IP通信可以省略端口号吗?
ip 地址用来标定主机,端口号用来标定进程,只有主机+进程,才是一次完整的寻址,适用于所有的 ip 通信。
tcp/ip 协议栈的某项协议,具体在主机上的时候是以进程的形式来运行,比如某些 Linux 支持多个 rdp 服务端,每一个 rdp 服务端都是一个单独的进程,所以有可能使用 3389、3390、3391 这样的端口号来进行标定不同的实例。
那位要说了,你说所有,那为什么有些 ip 通信就不用带端口号呢?
这是因为,有一部分协议使用了默认的端口号,客户端和服务端都遵循这样的原则,那就不用带端口号了,比如 HTTP 默认使用 80 端口,HTTPS 默认使用 443 端口,类似的还有 ftp、ssh、smb、dns、smtp、pop3 等等等等,还是挺多的。
但是你只要改变了某个协议的默认端口号,那在访问的时候,就必须带上端口号才行。比如很多 nas 的 web 管理界面,都是 5000 端口,那么你在浏览器访问的时候,就需要使用 HTTP://your-nas.com:5000 才可以访问,或者再使用反向代理,把 5000 端口反向到 80 上,那么又可以使用 HTTP://your-nas.com 来进行访问了。
主动权在服务端,也就是说,某个协议在服务端更改了默认的端口号,那么客户端访问的时候,就必须要使用服务端规定的端口号,才能进行访问。
端口号的范围是 0-65535,但是系统自带的服务,那些无论什么操作系统都支持的服务,一般都在 0-1023 之间,比如 ftp 的 21、ssh 的 22、dns 的 53、HTTP 的 80、HTTPS 的 443。而那些具体厂家的产品,端口号就要大一些,行业通行的规则是注册端口范围在 1024-49151 之间,比如 rdp 的 3389、MySQL 的 3306。而自建的服务,一般建议使用 49152-65535 之间。当然了规定是规定,实际使用的时候您随便用,只要和其他的进程不冲突就行了。
而 ip 地址的范围和端口号的范围,之间没有任何的关系,ipv4 和 ipv6 都有自己的规定,比如 ipv4 一般使用十进制表达,分为 4 段,每一段就是在 0-255 之间。而 ipv6 使用 16 进制表达,分为 8 段,每段从 0000-FFFF。
猜你喜欢
- 2025-09-09 新NAS到手后,你一定要学会的9个设置,威联通和群晖都是这样的。
- 2025-09-09 想了解msf密码爆破技术和远程命令执行?手把手详细操作步骤在此
- 2025-09-09 关于KrakenCryptor勒索病毒的紧急预警
- 2025-09-09 风险突出的高危端口汇总 一网打尽 !
- 2025-09-09 关于PowershellMiner无文件挖矿病毒感染Windows系统的预警通报
- 2025-09-09 榨干NAS的使用价值,效率提升300%!极空间NAS访问协议实战攻略
- 2025-09-09 Windows系统关闭445和3389端口,防止黑客入侵!
- 2025-09-09 msf提权漏洞利用最全总结_ms16032提权
- 2025-09-09 「亿维技术课堂」S7 200 SMART 串口自由口快速应用
- 2025-09-09 危!这些高危端口再不知道问题就大了
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)