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)