CAPL如何设置TCP/IP传输层动态端口范围
在TCP/IP协议中,应用程序通过传输层协议TCP/UDP传输数据,接收方传输层收到数据后,根据传输层端口号把接收的数据上交给正确的应用程序。我们可以简单地认为传输层端口号是应用程序的标识,这就是为什么我们说应用程序在使用TCP/IP协议通信时要打开传输层端口号或者绑定端口号的原因。
TCP/IP协议通信使用C/S模型(客户端/服务器),通常先开始发送数据的一方我们认为是客户端,而服务器需要在客户端发送数据前打开或绑定端口号。客户端在发送数据时要知晓服务器绑定的端口号是多少,并在报文中携带服务器的端口号信息,这就是目的端口号字段。所以服务器绑定的端口号必定是静态的,除非能够每次绑定时告知客户端。
那么客户端绑定的端口号呢?也必须是静态的吗?
不然!
由于是客户端首先开始发送数据,发送的报文中除了服务器的端口(目的端口)外,还会携带客户端自己的端口信息(源端口)。服务器收到报文时,也就拿到了客户端绑定的端口号。如果服务器要给客户端发送报文,只需要使用拿到的客户端端口号作为目的端口号即可。所以我们可以认为客户端没有必要一定绑定静态端口号,绑定的端口号可以是一个动态端口。
那动态端口号的好处又是什么呢?因为从上面的描述看来,客户端绑定的端口号可动可静。
传输层动态端口的好处主要有以下几点:
- 灵活性