文章目录

1.0 端口号概述

1.1 端口号的作用

1.2 端口号不能重复被多个进程绑定

2.0 传输层协议 - UDP

2.1 UDP 的特性

2.2 UDP 的报文格式


1.0 端口号概述

端口号是计算机网络中用于标识不同应用程序或网络服务的编号。

在 TCP/IP 协议中,端口号是一个 16 位的整数即两个字节大小的表示范围,范围从 0 到 65535 。端口号分为两种类型:系统端口和动态端口。

1)系统端口:系统端口是预留给常见的网络服务使用的端口号,范围从 0 到 1023 。例如, HTTP 服务通常使用端口号 80,FTP 服务使用端口号 21 ,SSH 服务使用端口号 22 等。

2)动态端口:动态端口是用于临时分配给客户端应用程序的端口号,范围从 1024 到 65535 。当客户端应用程序与服务器应用程序建立连接时,会动态分配一个未被占用的端口号,用于通信。

1.1 端口号的作用

1)标识应用程序:通过端口号可以唯一标识不同的应用程序或服务。

2)实现多路复用:通过端口号,可以在同一主机上同时运行多个应用程序,实现多路复用。

3)提供服务:服务器应用程序监听特定端口号,等待客户端连接,从而提供相应的网络服务。

在网络通信中,客户端通过目标主机的IP地址和端口号来确定通信的目标。端口号是网络通信中非常重要的概念,它帮助实现了网络应用程序之间的通信和协作。

1.2 端口号不能重复被多个进程绑定

1)在同一个机器上,同一个时刻内,端口号不能重复被绑定。

如果尝试在同一台机器上的多个进程或服务同时绑定相同的端口号,会导致端口冲突,其中只有一个进程或服务能够成功绑定端口,而其他进程或服务会失败。

当一个端口已经被其他进程或服务占用时,如果有另一个进程或服务尝试绑定该端口,通常会收到 “Address already in use” 的错误。这种情况下,需要确保每个服务使用不同的端口号或者在不同的时刻使用同一个端口号。

2)如何确认在当前机器上,某个端口是否被其他进程使用了呢?

在命令框窗口使用查询指令:

netstat -ano | findstr (要查询的端口号)

举个例子:

查询当前主机上是否有使用端口号 80 。


  1. 左边的主机+端口号:表示本地计算机上的进程或服务正在使用的端口号。这个端口号是本地计算机上的端口号,用于本地计算机与其他计算机或服务进行通信。
  2. 右边的主机+端口号:表示远程计算机或服务的 IP 地址和端口号。这个端口号是远程计算机或服务的端口号,用于本地计算机与远程计算机或服务进行通信。

该端口号已经被占用了,红色框中的整数数据代表着是进程 PID 。比如查询进程 PID 的应用程序。


该 7448 进程 PID 是微信这个程序占用着。

3)两个进程不能绑定同一个端口号

好比 “一山不能容二虎,除非一公一母” ,如果一个服务器是 TCP,一个是 UDP 此时端口号重复了也不会收到影响(一公一母)。但是如果两个 TCP / 两个 UDP ,使用同一个端口,就会有影响。

4)如果一个进程绑定多个端口号,是否可行呢?

非常可行的,而且日常开发中经常用到。

一个进程上有多个端口号的作用是可以实现多种不同的网络服务或功能,同时在同一个进程中处理多个不同类型的网络连接。这样可以提高系统的灵活性和效率,减少资源消耗。

举个例子,一个Web服务器进程可能同时绑定了 80 端口和 443 端口。80 端口用于处理HTTP 请求,而 443 端口用于处理 HTTPS 请求。通过绑定多个端口号,这个 Web 服务器可以同时提供 HTTP 和 HTTPS 两种不同的服务,而不需要启动两个独立的进程。这样可以简化服务器端的管理和维护,并提高系统的性能和稳定性。

2.0 传输层协议 - UDP

是一种无连接、不可靠的传输层协议,它提供了一种简单的数据传输服务,适用于那些对数据传输的实时性要求较高,但可靠性要求较低的应用场景。

2.1 UDP 的特性

无连接性:UDP 是一种无连接的协议,不需要在通信之前建立连接。每个 UDP 数据包都是独立的,相互之间没有关联。

不可靠性:UDP 不提供数据包的可靠传输,数据包可能会丢失、重复或乱序到达。UDP 不对数据包进行重传或错误纠正,应用程序需要自行处理数据包的丢失或错误。

简单性:UDP 的头部相对较小,只包含源端口、目标端口、长度和校验和等字段,因此 UDP  的开销比较小,适用于对网络带宽和资源有限的场景。

高效性:由于 UDP 不需要建立连接和维护状态信息,因此传输效率较高,适用于实时性要求较高的应用场景,如音频、视频等流媒体传输。

适用场景:UDP 适用于一些对实时性要求较高、数据量较小、对可靠性要求不高的应用场景,如 DNS 查询、实时音视频传输、在线游戏等。总的来说,UDP 是一种简单、高效的传输层协议,适用于对实时性要求较高、对可靠性要求较低的应用场景。在选择使用 UDP 时,需要根据具体的应用需求和网络环境来进行权衡和选择。

2.2 UDP 的报文格式

对于 UDP 协议来说,应用层数据到达 UDP 之后,就会给应用层数据报前面拼装上 UDP 报头,即 UDP 数据报 = UDP 报头 + UDP 载荷。

UDP 报文格式图片: