Вкратце:Ответы
1. Не совсем, но, думаю, скоро будет понятно
2. Соединение всегда открыто, если одна из сторон его не закроет или не прервется связь
3. Клиент отправляет - сервер тут же получает. Сервер отправляет - клиент тут же получает.
На примере чата
1. Устанавливается соединение между сервером и клиентом 1 (handshake)
2.
Сервер -> клиент1: Вы присоединились к чату
3.
Сервер -> клиент1: Сейчас у нас 1 пользователь: клиент1
4. Устанавливается соединение между сервером и клиентом 2 (handshake)
5.
Сервер -> клиент2: Вы присоединились к чату
6.
Сервер -> клиент2: Сейчас у нас 2 пользователя: клиент1 и клиент2
7.
Сервер -> клиент1: Присоединился клиент2
8.
Клиент1 -> сервер: Скажи клиент2 "Привет!"
9.
Сервер -> клиент2: Клиент1 сказал "Привет!"
10.
Клиент2 -> сервер: Скажи клиент1 "Здасте!"
11.
Сервер -> клиент1: Клиент2 сказал "Здасте!"
То есть клиенты могут когда угодно посылать сообщение серверу, он сразу же его прочитает, но не другим клиентам (минус сокетов). Сервер может послать сообщение любому клиенту, они сразу же его прочитают.