当前位置: 首页 > news >正文

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义

目                    录

一、什么地方会用到网络端口?

二、端口的定义和作用

(一)TCP协议和UDP协议

(二)端口的定义

(三)在TCP/IP体系中,端口(TCP和UDP)的作用

(四)使用端口进行网络通信

三、端口的分类

(一)端口分配方式

(二)TCP/IP的端口号分配

(1)公认端口(Well Known Ports):

(2)注册端口(Registered Ports):

(3)动态和/或私有端口(Dynamic and/or Private Ports):

四、常见的端口号

四、视频监控和流媒体通信中的端口号


一、什么地方会用到网络端口?

我们经常在浏览器的地址、或一些命令行栏输入如下一些URL(统一资源定位符)

编号

URL

描述

1

http://10.2.2.2:23000

访问IP为10.2.2.2,端口为23000的网页

2

rtsp://192.1.3.33:5546

访问IP为10.2.2.2,端口为5546提供的RTSP流

3

telnet 166.3.2.1 2329

访问166.3.2.1上tcp端口2329提供的服务

4

rtmp://123.45.22.33:8080

访问IP为123.45.22.33,端口为8080提供的RTMP流

5

http://vidist.cn

访问域名为vidisit.cn的web网站,端口80

6

https://vt.vidisit.cn:2800

访问域名为vt.vidisit.cn的web网站,端口2800

这些url 都是为了访问一些服务,这些服务是有某个服务器提供。同时可能会输入如下URL:

http://192.168.1.8/crm/index.php?pageto_module=Home&pageto_action=index

http://121.37.68.30:26558/realv/index-auto.html?cid=32050100001310000212

rtsp://192.1.3.33:5546/devid=3205010000131

这些也代表着特定的意义。我们可以看出,我们要访问网络资源,除了要输入IP地址以外,我们还需要一个端口、以及一些协议的名称,比如HTTP、RTSP、RTMP、TELNET等等。这里面说的端口是TCP或者UDP的端口,这些协议一般都属于应用层协议,都是基于TCP和UDP的,或者说是在传输层以上的应用层协议。

基于TCP/IP的各种应用层协议非常多,我们这里就不再详细描述了,我们这里主要谈谈网络端口。

二、端口的定义和作用

(一)TCP协议和UDP协议

TCPTransmission Control Protocol)协议,意为传输控制协议。

UDPUser Datagram Protocol)协议,意为用户数据报协议。

TCPUDP协议在TCP/IP五层协议中都位于传输层,负责在网络中传输数据。具体来说,它们都提供了数据传输的端到端服务,并使用端口号来标识发送和接收数据的源应用程序。

TCPUDP协议在数据传输方式和服务质量方面存在显著差异。TCP协议提供面向连接的、可靠的数据传输服务。它使用端口号来标识不同的应用程序,以便在网络中正确地路由和传输数据。TCP协议通过确认机制、重传机制、流量控制和拥塞控制等机制来保证数据传输的可靠性和效率。而UDP协议则是一种无连接的、尽最大努力的数据传输协议,不保证数据传输的可靠性和顺序,适用于对实时性要求较高的应用,如流媒体、VoIP等。

(二)端口的定义

        在TCP/IP协议中,端口号是一个16位的整数,用于标识网络进程。端口号的主要作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的哪个进程。从这种意义上讲,端口是用来标志应用层的进程。每个端口号只被一个进程占用,但一个进程可以绑定多个端口号。

        在因特网中,不同计算机的相同端口号是没有联系的,端口的作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的哪个进程。

        如果把IP地址比作一栋大楼,端口就是这栋大楼的房间,一个IP地址的端口可以有65536(即:256×256)个,端口是通过端口号来标记的,端口号只有整数,范围是从0 65535256×256)。可以理解为这个这栋大楼有65536个房间。

         网络层(IP层)接收到网络数据以后,根据端口号,分发给各个应用层APP。类似,快递到达大楼后,大楼传达室根据目的地址上面的具体房间号,分发给大楼里面的不同的房间(大楼入住单位),图示如下:

(三)TCP/IP体系中,端口(TCP和UDP)的作用

        归纳一下,在TCP/IP协议中,主要是TCPUDP用到了端口号。端口的作用主要有两个:

  1. 标识应用程序:每个端口号都是唯一的,可以用来标识运行在计算机上的应用程序。当数据包在网络中传输时,目的端口号可以告诉操作系统应该将数据包发送到哪个应用程序。
  2. 实现多任务处理:通过使用端口号,一台计算机可以同时运行多个应用程序,并正确地处理进入和离开的数据包。每个应用程序可以绑定到一个特定的端口号,这样就可以通过不同的端口号来区分不同应用程序的数据包。

(四)使用端口进行网络通信

        在TCP/IP中,不管是TCP还是UDP,它们都是通过源端口号和目的端口号来标识不同的应用程序,并使用这些端口号来传输数据达到网络通信的目的。当网络中的数据到达目的主机时,操作系统的网络协议栈会根据数据中的目的端口号将数据送到相应的应用程序。这样,不同的应用程序就可以通过不同的端口来接收和发送数据,实现网络通信。

         UDP为例,UDP进行数据通信的过程可以简要描述如下:

  1. 创建套接字socket:首先,在UDP通信中,需要创建一个套接字socket。这个套接字用于在本地主机上标识一个通信端点。
  2. 绑定端口:接下来,需要将套接字绑定到一个特定的端口上。这个端口用于标识发送和接收数据的进程。端口号是一个16位的整数,范围从0到65535(一般不用一些预留的端口)。
  3. 发送数据:一旦套接字被绑定到端口上,就可以使用这个套接字发送数据了。UDP发送数据时,会将数据封装成UDP数据报,并加上源端口号和目的端口号,然后发送到目的主机。
  4. 接收数据:在目的主机上,如果某个进程绑定了一个相同的端口号,它就可以接收数据了。当UDP数据报到达目的主机时,操作系统的网络协议栈会根据目的端口号将数据报送到相应的应用程序。
  5. 关闭套接字socket:当通信完成后,需要关闭套接字以释放资源。

总的来说,端口号在TCP/IP协议中起到了标识和区分不同应用程序的重要作用,使得网络通信能够高效、有序地进行。

三、端口的分类

(一)端口分配方式

        一般情况下,端口号有两种基本分配方式:

        第一种叫全局分配,这是一种集中分配方式,由一个公认权威的顶级机构根据用户需要进行统一分配,并将结果公布于众,

        第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(也称为binding,绑定)。

        TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,

  1. 保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口(叫周知端口),即使在不同的机器上,其端口号也相同。
  2. 自由端口,也就是剩余的为端口,以本地方式进行分配。

TCPUDP规定,小于256的端口才能作为保留端口。

(二)TCP/IP的端口号分配

(1)公认端口(Well Known Ports):

        从01023,它们紧密绑定(binding)于一些特点服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。

      0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。

(2)已注册端口(Registered Ports):

        从102449151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

(3)动态和/或私有端口(Dynamic and/or Private Ports):

        从4915265535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUNRPC端口从32768开始。

四、常见的端口号

TCP/IP协议中有很多已知的端口号,这些端口号被分配给不同的应用程序和服务。以下是一些常见的端口号及其对应的服务(这只是一部分常见端口,实际上有更多端口号):

  • HTTP(超文本传输协议):默认端口号为80,用于Web浏览器和Web服务器之间的通信。
  • HTTPS(安全超文本传输协议):默认端口号为443,用于加密的Web浏览器和Web服务器之间的通信。
  • FTP(文件传输协议):默认端口号为21,用于文件传输服务。
  • TFTP(小型文件传输协议),默认端口号为69,用于文件传输服务。
  • TELNET:默认端口号为23,用于远程登录到其他计算机或设备。
  • SMTP(简单邮件传输协议):默认端口号为25,用于电子邮件传输。
  • POP3(Email协议版本3):默认端口号为110,用于接收电子邮件。
  • IMAP(Internet邮件访问协议):默认端口号为143,用于访问和管理电子邮件。
  • DNS(域名系统):默认端口号为53,用于域名解析服务。
  • SSH(安全shell协议):默认端口号为22,用于安全的远程登录和执行命令。
  • SNMP(简单网络管理协议):默认端口号为161和162,用于网络设备管理和监控。
  • NTP(网络时间协议):默认端口号为123,用于时间同步服务。
  • DHCP(动态主机配置协议):默认端口号为67和68,用于自动分配IP地址和其他网络配置信息。

        随着时间的推移,新的应用程序和服务可能会出现,并且可能会分配新的端口号。个人可以根据您的具体需求和兴趣,查找相关的文档和资源来获取所需的端口号信息。

四、视频监控和流媒体通信中的端口号

在网络视频监控和流媒体通信中,通常会使用以下常见的端口号:

  1. HTTP(超文本传输协议):参考上一章节。
  2. HTTPS(安全超文本传输协议):参考上一章节。
  3. RTSP(实时流协议):用于实时传输音频和视频数据,默认端口号为554。
  4. RTP(实时传输协议):用于实时传输音频和视频数据,通常与RTSP一起使用,默认端口号为5004或5005。
  5. SIP(会话初始协议):用于建立和管理音视频通话,默认端口号为5060。
  6. SNMP(简单网络管理协议):参考上一章节。
  7. TFTP(小型文件传输协议):参考上一章节。
  8. GB28181:GB28181协议可使用TCP和UDP协议进行音视频传输,端口号通常为默认的50000左右。对于控制命令、注册等交互性请求,通常会通过HTTP或者TCP的方式进行通信,其端口号需要平台方和设备方提前约定,比如有的采用5060,有的采用7060。可以参考以前的文章:国标GB28181对接的时候如何配置服务端口和本地端口
  9. RTMP(Real Time Messaging Protocol):默认端口号是1935。RTMP是一种用于实时传输音频、视频和数据的协议,通常用于流媒体和实时应用程序。在使用RTMP进行通信时,需要在服务器和客户端之间建立连接,并使用特定的端口号进行数据传输。默认情况下,RTMP使用端口号1935。但是,具体的端口号可能会因应用程序和部署环境的不同而有所变化。因此,在实际使用中,应该根据具体情况进行配置和调整。
  10. HLSHTTP 实时流协议):HLS基于HTTP的流媒体传输协议,端口号为8080。
  11. WebRTCWeb实时通信):WebRTC是一个实时通信协议,其默认端口号为8080。
  12. FLVFlash视频):由于FLV由Adobe公司出品,其本身并未像HLS或RTMP一样建立网络服务,但其可以被用于流媒体传输。FLV协议本身并不使用端口号,而是通过HTTP或RTMP等协议进行传输。

这些端口号被广泛应用于网络视频监控领域的不同组件和协议中。对于需要安全传输的视频监控数据,可能会使用加密的协议和端口号,以确保数据的安全性和隐私保护。

相关文章:

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义

目 录 一、什么地方会用到网络端口? 二、端口的定义和作用 (一)TCP协议和UDP协议 (二)端口的定义 (三)在TCP/IP体系中,端口(TCP和UDP)的作用 (…...

flink如何写入es

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、写入到Elasticsearch5二、写入到Elasticsearch7总结 前言 Flink sink 流数据写入到es5和es7的简单示例。 一、写入到Elasticsearch5 pom maven依赖 <d…...

Java、Python、C++和C#的界面开发框架和工具的重新介绍

好的&#xff0c;以下是Java、Python、C和C#的界面开发框架和工具的重新介绍&#xff1a; Java界面开发&#xff1a; Swing: 是Java提供的一个基于组件的GUI工具包&#xff0c;可以创建跨平台的图形用户界面。它提供了丰富的组件和布局管理器&#xff0c;使得界面开发相对简单。…...

Java二叉树的遍历以及最大深度问题

Java学习面试指南&#xff1a;https://javaxiaobear.cn 1、树的相关概念 1、树的基本定义 树是我们计算机中非常重要的一种数据结构&#xff0c;同时使用树这种数据结构&#xff0c;可以描述现实生活中的很多事物&#xff0c;例如家谱、单位的组织架构、等等。 树是由n&#…...

Apollo 9.0搭建问题记录

虚拟机安装 可以看这个&#xff1a;https://blog.csdn.net/qq_45138078/article/details/129815408 写的很详细 内存 为了学习 Apollo &#xff0c;所以只是使用了虚拟机&#xff0c;内存得大一点&#xff08;128G&#xff09;&#xff0c;第一次&#xff0c;就是因为分配内…...

【心得】PHP文件包含高级利用攻击面个人笔记

目录 一、nginx日志文件包含 二、临时文件包含 三、php的session文件包含 四、pear文件包含 五 、远程文件包含 文件包含 include "/var/www/html/flag.php"; 一 文件名可控 $file$_GET[file]; include $file.".php"; //用php伪协议 &#xff0…...

[scala] 列表常见用法

文章目录 不可变列表 List可变列表 ListBuffer 不可变列表 List 在 Scala 中&#xff0c;列表是一种不可变的数据结构&#xff0c;用于存储一系列元素。列表使用 List 类来表示&#xff0c;它提供了许多方法来操作和处理列表。 下面是一些常见的使用列表的示例&#xff1a; 创…...

python 使用urllib3发起post请求,携带json参数

当通过python脚本&#xff0c;发起http post请求&#xff0c;网络上大多是通过fields传递数据&#xff0c;然而这样&#xff0c;服务器收到的请求&#xff0c;但无法解析json数据。类似这些链接&#xff1a; Python urllib3库使用指南 软件测试|Python urllib3库使用指南 p…...

深入理解堆(Heap):一个强大的数据结构

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 前言堆的实现基本操作结构体定义初始化堆&#xff08;HeapInit&#xff09;销毁堆&#xff08;HeapDestroy&#xff09; 重要函数交换函数&#xff08;…...

抖音在线查权重系统源码,附带查询接口

抖音权重在线查询只需输入抖音主页链接&#xff0c;即可查询作品情况。 搭建教程 上传源码并解压 修改数据库“bygoukai.sql” 修改“config.php” 如需修改水印请修改第40行 如需修改限制次数&#xff0c;请修改第156行 访问域名user.php即可查看访问用户&#xff0c;停…...

Spring Framework和SpringBoot的区别

目录 一、前言 二、什么是Spring 三、什么是Spring Framework 四、什么是SpringBoot 五、使用Spring Framework构建工程 六、使用SpringBoot构建工程 七、总结 一、前言 作为Java程序员&#xff0c;我们都听说过Spring&#xff0c;也都使用过Spring的相关产品&#xff0…...

2024--Django平台开发-Django知识点(三)

day03 django知识点 项目相关路由相关 urls.py视图相关 views.py模版相关 templates资源相关 static/media 1.项目相关 新项目 开发时&#xff0c;可能遇到使用其他的版本。虚拟环境 老项目 打开项目虚拟环境 1.1 关于新项目 1.系统解释器命令行【学习】 C:/python38- p…...

Github 2024-01-08开源项目周报 Top14

根据Github Trendings的统计&#xff0c;本周(2024-01-08统计)共有14个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目5TypeScript项目3C项目2Dart项目1QML项目1Go项目1Shell项目1Rust项目1JavaScript项目1C#项目1 免费…...

vue3 的内置组件汇总

官方给出的说明&#xff1a; Fragment: Vue 3 组件不再要求有一个唯一的根节点&#xff0c;清除了很多无用的占位 div。Teleport: 允许组件渲染在别的元素内&#xff0c;主要开发弹窗组件的时候特别有用。Suspense: 异步组件&#xff0c;更方便开发有异步请求的组件。 一、fr…...

ARM工控机Node-red使用教程

嵌入式ARM工控机Node-red安装教程 从前车马很慢书信很远&#xff0c;而现在人们不停探索“科技改变生活”。 智能终端的出现改变了我们的生活方式&#xff0c;钡铼技术嵌入式工控机协助您灵活布建能源管理、大楼自动化、工业自动化、电动车充电站等各种多元性IoT应用&#xff…...

Visual Studio 发布程序自动更新 ClickOnce和AutoUpdater测试

文章目录 前言运行环境ClickOnce&#xff08;Visual Studio 程序发布&#xff09;IIS新建文件夹C# 控制台测试安装测试更新测试卸载 AutoUpdaterDotNET实现原理简单使用新建一个WPF项目 代码封装自动更新代码封装简单使用 总结 前言 虽然写的大部分都是不联网项目&#xff0c;…...

Codeforces Round 761 (Div. 2) E. Christmas Chocolates(思维题 树的直径 二进制性质 lca)

题目 n(n<2e5)个值&#xff0c;第i个值ai(0<ai<1e9)&#xff0c;所有ai两两不同 初始时&#xff0c;选择两个位置x,y(x≠y)&#xff0c;代表需要对这两个位置进行操作&#xff0c;要把其中一个值变成另一个 你可以执行若干次操作&#xff0c;每一次&#xff0c;你可…...

知识图谱之汽车实战案例综述与前瞻分析

知识图谱的前置介绍 什么是知识图谱 知识图谱本质(Knowledge Graph&#xff09;上是一种叫做语义网络(semantic network &#xff09; 的知识库&#xff0c;即具有有向图结构的一个知识库&#xff1b;图的结点代表实体&#xff08;entity&#xff09;或者概念&#xff08;con…...

网关Gateway

什么是网关? 网关实质上是一个网络通向其他网络的 IP 地址&#xff0c;是当前微服务项目的"统一入口"。 网关能做什么&#xff1f; 反向代理 、鉴权、 流量控制、 熔断、 日志监控等 图片原文&#xff1a;http://t.csdnimg.cn/SvUJh 核心概念 Router&#xff08;…...

java 生成一个当前时间的时间搓

开发过程中 用时间搓数值格式存储 会更加精准 那么 我们在一些日常增删查改中就可以用时间搓来记录操作时间 就一行代码 long timestamp System.currentTimeMillis();他就能生成当前时间的时间搓 运行结果如下 然后 我们可以在 http://shijianchuo.wiicha.com/ 上进行转换查…...

金融中IC和IR的定义

当谈到金融领域时&#xff0c;IC&#xff08;Information Coefficient&#xff09;和IR&#xff08;Information Ratio&#xff09;通常是用来评估投资组合管理绩效的指标。它们都涉及到投资者对信息的利用和管理的效果。 信息系数&#xff08;IC - Information Coefficient&a…...

Git(2):Git环境的安装

本教程里的git命令例子都是在Git Bash中演示的&#xff0c;会用到一些基本的linux命令&#xff0c;在此为大家提前列举&#xff1a; ls/ll 查看当前目录cat 查看文件内容touch 创建文件vi vi编辑器&#xff08;使用vi编辑器是为了方便展示效果&#xff0c;学员可以记事本、edi…...

Pytest单元测试系列[v1.0.0][pytest插件常用技巧]

使用pytest-xdist并发执行测试 pytest-xdist&#xff1a;Run Tests in Parallel [https://pypi.python.org/pypi/pytest-xdist] 在自动化测试中有些资源只能同时被一个测试用例访问&#xff0c;如果不需要同时使用同一个资源&#xff0c;那么测试用例便可以并行执行 执行命令…...

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第五天-Linux消息共享内存练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…...

04set注入专题/简单类型/数组/List/Set/Map/空字符串/null/特殊符号

1.1注入外部Bean 在之前使用的案例就是注入外部Bean的方式。 <!-- class属性声明要管理哪个类中的对象 property标签的name是提示set方法名ref标签指明注入的bean的id--><bean id"userServiceBean" class"com.powernode.spring6.service.UserService…...

Linux引导和服务管理

目录 一.Linux引导&#xff1a; 1、Linux开机启动的完整过程&#xff1a; 2、bios的作用&#xff1a; 3、boot&#xff1a; 4.mbr: 5、grub&#xff1a; 6、加载内核文件&#xff1a; 7、启动进程&#xff1a; 8、centos6与centos7的区别&#xff1a; 9、完整的过程 …...

HarmonyOS 应用开发学习笔记 ets自定义组件及其引用 @Component自定义组件

Component注解的作用是用来构建自定义组件 Component组件官方文档 自定义组件具有以下特点&#xff1a; 可组合&#xff1a;允许开发者组合使用系统组件、及其属性和方法。 可重用&#xff1a;自定义组件可以被其他组件重用&#xff0c;并作为不同的实例在不同的父组件或容器…...

在做题中学习(43):长度最小的子数组

LCR 008. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;同向双指针-------滑动窗口算法 解释&#xff1a;本是暴力枚举做法&#xff0c;因为全部是正整数&#xff0c;就可以利用单调性和双指针解决问题来节省时间 思路&#xff1a; 如上面图&am…...

如何将 element-ui 中的 el-select 默认展开

<el-form-item label"藕粉桂花糖糕" prop"state" required><el-selectref"mySelect"v-model"form.state"style"width: 280px"placeholder"请选择"><el-option label"藕粉" :value"…...

Typora基本用法

文章目录 一、标题标题快捷键 二、段落1.换行2.分割线 三、文字显示1.字体2.上下标 四、列表1.无序列表2.有序列表3.任务列表 五、区块显示六、代码显示1.行内代码2.代码块 七、链接八、脚注九、图片插入十、表格十一、流程图十二、表情符号十三、数学公式的输入1.公式的插入①…...

织梦网站自适应怎么做/网上推广方式

题目: 给定一个链表&#xff0c;交换每两个相邻的节点并返回其头。 例如&#xff0c;给定1->2->3->4&#xff0c;您应该返回列表2->1->4->3。 您的算法应该仅使用恒定空间。您不能修改列表中的值&#xff0c;只能改变节点本身。 思路&#xff1a;从链表的头节…...

网站建设客服流程/深圳百度快速排名提升

2019独角兽企业重金招聘Python工程师标准>>> 如&#xff1a; function myLink(){ return "124"; } 如果我要要掉用这个函数&#xff0c;直接 myLink();就可以调用 这是一种情况&#xff0c;另外一种情况。我们把一个函数赋值给一个变量时&#xff0c;我们…...

网站简介 更改/八零云自助建站免费建站平台

if($category->user_id ! auth()->id()){throw new ModelNotFoundException();}...

我的网站为什么打不开怎么回事/青岛网站运营

...

做社区网站用什么程序/网站的宣传与推广

mysql按照备份恢复方式分为逻辑备份和物理备份。逻辑备份是备份sql语句&#xff0c;在恢复的时候执行备份的sql语句实现数据库数据的重现&#xff0c;物理备份就是备份数据文件了&#xff0c;比较形象点就是cp下数据文件&#xff0c;但真正备份的时候自然不是的cp这么简单。这2…...

商务咨询网站源码/网站设计的流程

1&#xff0c;第一步安装brew。 https://brew.sh/index_zh-cn.html 2&#xff0c;用brew安装jdk。 brew update brew cask install java 安装完成后就可以执行JAVA相关的操作 3&#xff0c;用brew安装git。 brew update brew install git 4&#xff0c;用brew安装gradle brew u…...