Tensorflow profiler client does not support IPv6

The issue clearly highlights a limitation in TensorFlow's profiler client regarding IPv6 support. You've done a good job presenting the problem.

Hi @yuzu-ido ,

Thank you for bringing this to attention. The problem arises due to the simplistic string split operation on the host_port, which fails to account for IPv6 addresses.

IPv6 addresses include colons, just like the separation between the IP address and port. As you've pointed out, the IPv6 format typically uses [address]:port, and the current split operation on host_port does not handle this format.

A potential solution would be to modify the string parsing logic to account for the IPv6 format. This could involve checking for the presence of square brackets and adjusting the parsing logic accordingly.

This is a crucial update, especially considering the increasing adoption of IPv6. It would be great if the TensorFlow team could prioritize this. In the meantime, you might want to use IPv4 as a workaround, if feasible.

I hope the TensorFlow team addresses this soon @yuzu-ido,
Could you please confirm whether the issue is happening on the latest tensorflow v2.14 as well? Thank you! Hi, thanks for the follow-up. I checked and the issue is still happening with tf 2.14.0.
### Issue type

Bug

### Have you reproduced the bug with TensorFlow Nightly?

No

### Source

source

### TensorFlow version

tf 2.11.0

### Custom code

Yes

### OS platform and distribution

Linux Ubuntu 22.04.3

### Mobile device

_No response_

### Python version

3.10.2

### Bazel version

6.0.0

### GCC/compiler version

_No response_

### CUDA/cuDNN version

11/8.2

### GPU model and memory

_No response_

### Current behavior?

[https://github.com/google/tsl/blob/3dee2c5930eb8ee9c6a7486434240dafadf12fb4/tsl/profiler/utils/session_manager.cc#L188]()

`std::vectorabsl::string_view parts = absl::StrSplit(host_port, ':');`

When trying to connect to an IPv6 host-port pair, which is typically denoted as [xxxx:xxxx:blah]:port, `profiler_client.trace()` throws an error. It should have logic that supports both IPv4 and IPv6. 

### Standalone code to reproduce the issue

```shell
File 1:
jax.profiler.start_server(9876) #on IPv6 xxxx:xxxx:x:xxxx:xxxx::xxx

File 2:
from tensorflow.python.profiler import profiler_client
profiler_client.trace(
        '[xxxx:xxxx:x:xxxx:xxxx::xxx]:9876',
        duration_ms=1000,
        logdir='foo',
    )
```


### Relevant log output

```shell
Traceback (most recent call last):
  File "foo.py", line 2, in _trigger_trace
    profiler_client.trace(
  File ".../foo.runfiles/tensorflow_python_deps_tensorflow/tensorflow/python/profiler/profiler_client.py", line 129, in trace
    _pywrap_profiler.trace(
tensorflow.python.framework.errors_impl.InvalidArgumentError: Could not interpret "[xxxx:xxxx:x:xxxx:xxxx::xxx]:9876" as a host-port pair.
```
