Ports 0-1023 are the Well Known Ports and are assigned by IANA. These should only be used for the assigned protocols on public networks.
Ports 1024-49151 are the User Ports and are the ones to use for your own protocols.
Ports 49152-65535 are the Dynamic ports and should not be prescribed to a protocol.
The User Ports can be used for any protocol, but there are a finite number, so your use will clash with someone elses use on some network somewhere. IANA keep a record of registered port numbers (0-49151). If your protocol will be used on public networks then you need to look into registering it with IANA. If you are only using it within your own network then pick a port within this area (1024-49151) and check that port against the IANA register to make sure it isn’t used by a protocol that could be used on your network. For private use it is probably better to pick a number that is assigned to a protocol you know won’t be used than to choose one that is unassigned and so may be assigned in the future.
Don’t use a port number within the Dynamic range. These ports are assigned by the operating system, dynamically and somewhat randomly. If you open a client connection (using bind() with port=0) you will be assigned an unused port from the dynamic range. There is no way to guarantee that a port in this range will always be free for your protocol.