Re: Win2000, winsock

From
dskr (2:461/33.150)
To
Dmitry Kalinin ()
Date
2001-10-22T00:33Z
Area
SU.WINDOWS.NT.PROG
Привет, Dmitry!
Воcкресенье Октябрь 21 2001 18:49, Dmitry Kalinin писал All:
 DK>     В продолжении первой проблемы ...
 DK>     netstat -a, показывает следующее:
 DK> TCP    home-dmitry:1911       home-dmitry:0          LISTENING
 DK> TCP    home-dmitry:1200       home-dmitry:1911       TIME_WAIT
 DK> TCP    home-dmitry:1201       home-dmitry:1911       TIME_WAIT
 DK> TCP    home-dmitry:1202       home-dmitry:1911       ESTABLISHED
 DK> TCP    home-dmitry:1911       home-dmitry:1202       ESTABLISHED

 DK>     Что означает этот TIME_WAIT, так и должно быть? Почему внешний
 DK> адрес клиента home-dmitry:PORT, PORT после каждого соединения
 DK> увеличивается на 1?

2ALL: в какой-то из эх я видел вопрос: "а что такое arp ?" на что пришёл ответ "а это ерунда какая-то юниксовая"

Тебе нужно прочитать какую-нибудь книжку про tcp/ip.. а ответы на подобные вопросы лучше искать в RFC... и в MSDN почаще заглядывать... А мой ответ - это графомания чистой воды..
TCP: rfc 793

Дело здесь в том, что при закрытии соединения отсылается серия пакетов fin
Никто не гарантирует то, что последний из отосланных пакетов - fin - дойдёт до места назначения. Если бы у сокета не было бы состояния , то когда от remote_peer после тайм-аута получения последнего Fin пришёл бы повторный пакет, то в таблице соединений не оказалось бы такого соединения и remote_peer был бы отослан reset. Это некорректная ситуация. Для борьбы с ней и есть состояние time_wait. Через некоторое время нахождения в состоянии time_wait сокет переходит в состояние closed. Обычно, это время можно конфигурировать.. в Windows, насколько я помню, тоже...

Смотри на эту тему диаграмму состояний TCP на странице 23 RFC 793.. и на странице 37 раздел 3.5 - Closing a Connection


Кажется в MSDN есть рекомендации по написанию то ли TCP/IP сервера, то ли www сервера. рекомендую прочитать их.

Про увеличение port'а клиента очевидно... это как бы базовые знания по tcp/ip..
socket - это комбинация ip и номера порта.

Соединение - это пара сокетов.

client_ip    server_ip
            -->
порт XXX     know_port

Очевидно, что номер порта клиента - XXX - обычно всем безразличен. Его цель - просто придание уникальности сокету на машине клиента.. Номер этого порта обычно просто возрастает на единицу с каждым исходящим соединением...

До cвидания!
                                        [Team We Hate Musik]
---
 * Origin: МЫ теперь в тайге хозяева (2:461/33.150)