TCP connections are stateful connections - data packets are sent from source to destination and acknowledgement packets are received from the destination by the source (bi-directional - either side could be the source or the destination) - this is handled by the networking stack and is invisible to you.
Reconnections, however, are not automatic, and it will take intervention on your part (most likely on the client side) to reconnect.
If you track clients just by IP & port only then a user id is probably not needed, however, most people use the internet through some various chain of NAT systems, wherein one IP visible to the internet conceals a multiple unknown number of users and networks.
In those cases I think it does make sense to continue to identify your clients by a specific ID you have generated instead of just by IP & port. The IP and port is not in itself guaranteed to be unique, as that connection could be dropped and then another user could claim the same unused source port.
All this is also theoretical guessing on my part - my advice to you is to just start iterating on the design and see what works. :) No real need to try and design and anticipate everything perfectly before you have even started.