因为客户端只有一个IP地址,光靠IP根本无法区分是服务器上的哪个具体程序在接收数据。为了解决这个问题,引入了端口号的概念。每一个独立的网络‘任务’都对应一个特定的‘端口’,服务器端的端口通常是固定的默认值,而客户端的端口则是动态变化的,通过IP加上端口号的组合,才能唯一确定并连接到某个具体的服务。
命令端口的主要作用是什么?
把网络通信想象成银行办事,IP地址相当于银行的具体位置,而端口就是银行里不同的业务窗口。一家银行可以有多条业务线并行,就像一台服务器主机可以同时处理多个任务且互不干扰,端口在这里起到了区分不同服务通道的关键作用。
客户端与服务器之间的沟通依赖于‘请求响应报文’。当客户端发起通信时,它首先定位到服务器的IP地址并发出请求。如果客户端内部有多个程序同时需要获取服务器上的同一张图片资源,服务器必须将这些资源分别发送给客户端上每一个发出请求的程序,这就需要一种机制来精准识别每个程序。
端口号具有排他性,一个端口号在同一时刻只能被一个服务占用。这就意味着,如果我们在配置网络服务时发现指定的端口号已经被其他进程占用了,我们就必须采取两种解决方案之一:要么修改当前新服务或原有服务的端口配置以避开冲突,要么先停止占用该端口的前一个服务,腾出空间后再启用新服务。