Re[14]: Cокеты изнутри?
От: raeen  
Дата: 06.09.02 18:27
Оценка:
Здравствуйте NavuhodonosoR, Вы писали:

NR>Сарказм, ИМХО, неуместен.

Согласен, сорри.

NR>"Процесс" и "поток" — разные вещи. Или ты опять скажешь, что это "дебри терминологии"?

Нет, не скажу. И при чем тут терминология? Ведь понятно, что работать с новым сокетом можно как в отдельном потоке, так и в процессе.

R>>Вопрос: где храниться эта инфа?

NR>Не вдаваясь в подробности: в системе.
Вернуться к теме: именно это и представляет интерес.

NR>Если интересно — советую внимательнее читать MSDN как минимум.

К сожалению MSDN далеко не все аспекты освещает.

ЗЫ Спасибо за участие.
Re[15]: Cокеты изнутри?
От: NavuhodonosoR Россия  
Дата: 10.09.02 14:30
Оценка:
Здравствуйте raeen, Вы писали:

R>Здравствуйте NavuhodonosoR, Вы писали:


R>>>Вопрос: где храниться эта инфа?

NR>>Не вдаваясь в подробности: в системе.
R>Вернуться к теме: именно это и представляет интерес.

"Не будте слишком умными, но будьте умными в меру" (с) Библия. Кажется это звучит так. А вообще с вопросами по Win а-ля "где и как хранится некая инфа" — либо к БГ, либо "в морг". В качестве иллюстрации смотри здесь
Re[7]: Cокеты изнутри?
От: Sashko Россия http://www.dc.baika.ru/
Дата: 11.09.02 01:27
Оценка:
Здравствуйте raeen, Вы писали:

R>Здравствуйте vladsm, Вы писали:


V>>Здравствуйте raeen, Вы писали:


V>>С точки зрения адреса получателя — одинаковые. Но ведь есть еще адрес и порт отправителя. Вот по ним "отбор", видимо, и происходит.


R>Получается, что так.


Не получается так, а именно так и работает. Когда на принимающую сторону приходит пакет, обработчик очереди делает lookup сокетного соединения. И ищет он по вот такому ключу (dest_addr, dest_port, src_addr, src_port) с точки зрения пришедшего пакета, или (local_addr, local_port, remote_addr, remote_port) с точки зрения таблица (обычно hash table) сокетных соединений в локальной системе. Все сокетные соединения в Internet пространстве однозначно идентифицируются парой (или точнее четверкой) (local_addr: local_port, remote_addr: remote_port). Есть еще отдельный случай, это listen socket. Так как с ним не устанавливается коннекшен, в его идентификаторе нет remote_addr:remote_port, и его ID выглядит обычно вот таким образом (local_addr, local_port, 0, 0) или просто (local_addr, local_port). Система заводит 2е таблицы. Первая содержит listen сокеты, вторая сокеты уже установившие соединения (то есть те, которые имеют и local и remote части). По приходящему пакету, вначале делается lookup в connected sockets таблице, и если такового нет, то пытаются найти его в listen sockets таблице.

Если возникают какие-то непонятные вещи с TCP/IP, и по ним нет документации в MSDN, то можно смотреть как это реализовано в других системах, по исходникам, например Linux, FreeBSD. Не думаю, что классические вещи, в Windows реализованы каким-то своим образом.

PS: для мониторинга TCP/IP коннекшенов удобно использовать TCPView, ее можно найти здесь http://www.sysinternals.com/ntw2k/utilities.shtml
Re[8]: Cокеты изнутри?
От: raeen  
Дата: 11.09.02 17:08
Оценка:
Здравствуйте Sashko, Вы писали:

S>Если возникают какие-то непонятные вещи с TCP/IP, и по ним нет документации в MSDN, то можно смотреть как это реализовано в других системах, по исходникам, например Linux, FreeBSD. Не думаю, что классические вещи, в Windows реализованы каким-то своим образом.


S>PS: для мониторинга TCP/IP коннекшенов удобно использовать TCPView, ее можно найти здесь http://www.sysinternals.com/ntw2k/utilities.shtml


Спасибо, весьма помогло
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.