理解什么是端口(port)

981 阅读4分钟

什么是端口

端口(Port)是计算机网络中的一个概念,它指的是一种逻辑连接方式,用于区分不同的应用程序或者进程。每个端口都有一个唯一的编号,称为端口号(Port Number),它的范围是0到65535。端口号可以分为三类:

  • 系统端口:也称为保留端口或者知名端口,它们的范围是0到1023,通常由操作系统或者特定的应用程序使用,例如80端口用于HTTP协议,21端口用于FTP协议等。
  • 注册端口:也称为用户端口或者动态端口,它们的范围是1024到49151,通常由用户自定义或者分配给某些应用程序使用,例如8080端口常用于Web服务器等。
  • 私有端口:也称为临时端口或者动态私有端口,它们的范围是49152到65535,通常由操作系统动态分配给某些应用程序使用,例如浏览器在访问网页时会随机选择一个私有端口与服务器建立连接等。

端口在开发中的作用

在前端开发中,我们经常会遇到使用或者设置端口的情况。例如:

  • 本地开发服务器:当我们使用一些前端框架或者工具(如React、Vue、Angular等)进行开发时,我们通常会启动一个本地开发服务器来运行和调试我们的代码。这个本地开发服务器就需要一个端口号来监听和响应我们的请求。通常情况下,我们可以在配置文件中指定一个注册端口号(如3000、8080等),或者让工具自动选择一个可用的私有端口号。
  • 跨域请求:当我们在浏览器中访问一个网页时,如果我们想要向另一个域名(即不同的主机名或者IP地址)发送请求,那么就涉及到跨域请求(Cross-Origin Request)。跨域请求是受到浏览器同源策略(Same-Origin Policy)的限制的,即只有当请求和响应的协议、域名和端口号都相同时,才能正常进行。否则,就需要使用一些特殊的方法来实现跨域请求,例如JSONP、CORS、代理服务器等。
  • 反向代理:反向代理(Reverse Proxy)是一种网络服务,它可以将客户端的请求转发给后端的服务器,并将后端服务器的响应返回给客户端。反向代理可以实现负载均衡、缓存、安全等功能。在前端开发中,我们有时候会使用反向代理来解决跨域请求的问题。例如,我们可以在本地开发服务器上配置一个反向代理,将所有以/api开头的请求转发给后端服务器,并将后端服务器返回的数据返回给浏览器。这样,我们就可以避免浏览器的同源策略的限制,实现前后端的通信。反向代理的端口号通常和本地开发服务器的端口号一致,或者可以在配置文件中指定。

如何在开发中使用端口

在前端开发中,我们可以使用一些工具或者命令来查看、设置或者修改端口。例如:

  • 查看端口:我们可以使用netstat命令来查看当前系统中正在使用的端口号和对应的应用程序或者进程。例如,我们可以在终端中输入netstat -an来查看所有活动的连接和监听的端口。
  • 设置端口:我们可以在一些前端框架或者工具的配置文件中设置端口号,例如在React中,我们可以在package.json文件中添加"port": 3000来指定本地开发服务器的端口号为3000。
  • 修改端口:我们可以在启动本地开发服务器时,通过命令行参数来修改端口号,例如在React中,我们可以在终端中输入npm start --port 4000来启动本地开发服务器,并将端口号修改为4000。

常用端口

一些常用的TCP端口包括:

  • FTP的21端口,用于文件传输协议
  • Telnet的23端口,用于远程登录协议
  • SMTP的25端口,用于简单邮件传输协议
  • HTTP的80端口,用于超文本传输协议
  • [HTTPS的443端口,用于安全的超文本传输协议]

一些常用的UDP端口包括:

  • DNS的53端口,用于域名系统服务
  • SNMP的161端口,用于简单网络管理协议