在大多数客户端服务器应用程序中,服务器的端口号是众所周知的数字,而客户端使用当前可用的端口号。 DHCP是不同的。 在这里,客户端和服务器都使用一个众所周知的端口:DHCP服务器的UDP端口67,DHCP客户端的UDP端口68。
他们为什么这样devise,并有一个固定的客户端口号码?
这是必要的,因为当使用DHCP(他使用DHCP获取地址)时,客户端可能没有IP地址。
服务器和客户端通过广播进行通信,服务器将客户端的IP地址广播到UDP端口68.服务器没有其他方式到达客户端。 这是客户收到他的请求的答案的唯一方法,因为他没有IP地址。
如果我将一个临时端口号(例如10000)分配给DHCP客户端,则必须将相同的端口号分配给networking中的所有客户端。
DHCP服务器不知道客户端的IP地址,它知道的是DHCP客户端的端口号。 因此,DHCP服务器广播客户机端口号为10000的数据包。如果所有DHCP客户机没有为DHCP应用程序分配端口号10000,则有可能某些客户机在端口号10000上运行另一个应用程序。 DHCP服务器将被传送到错误的客户端应用程序。 因此,最好使用DHCP知名端口号。