Сообщение Re: Почему сокету нельзя сделать bind() к двум портам? от 03.06.2015 23:06
Изменено 03.06.2015 23:06 smeeld
Здравствуйте, PlushBeaver, Вы писали:
PB>подтвердила, что сокеты хранятся в хэш-таблице по ключу, вычисляемому от порта либо адреса и порта, но все равно непонятно, что мешало бы в такую таблицу
>добавить несколько записей об одном сокете, чтобы из него вычитывать пакеты, направленные на разные порты
Как? В пришедшем пакете есть только инфа о sport, dport, saddr и daddr и всё. Какому именно соединению или сокету
пакет предназначен можно определить только по dport+daddr, если разные dport будут соответствовать одному
и тому же сокету то что будет если в системе появится второй сокет с таким же dport+daddr? Как определить
здесь к какому из двух сокетов направлен пакет с данным daddr?
PB>подтвердила, что сокеты хранятся в хэш-таблице по ключу, вычисляемому от порта либо адреса и порта, но все равно непонятно, что мешало бы в такую таблицу
>добавить несколько записей об одном сокете, чтобы из него вычитывать пакеты, направленные на разные порты
Как? В пришедшем пакете есть только инфа о sport, dport, saddr и daddr и всё. Какому именно соединению или сокету
пакет предназначен можно определить только по dport+daddr, если разные dport будут соответствовать одному
и тому же сокету то что будет если в системе появится второй сокет с таким же dport+daddr? Как определить
здесь к какому из двух сокетов направлен пакет с данным daddr?
Re: Почему сокету нельзя сделать bind() к двум портам?
Здравствуйте, PlushBeaver, Вы писали:
>подтвердила, что сокеты хранятся в хэш-таблице по ключу, вычисляемому от порта либо адреса и порта, но все равно непонятно, что мешало бы в такую таблицу
>добавить несколько записей об одном сокете, чтобы из него вычитывать пакеты, направленные на разные порты
Как? В пришедшем пакете есть только инфа о sport, dport, saddr и daddr и всё. Какому именно соединению или сокету
пакет предназначен можно определить только по dport+daddr, если разные dport будут соответствовать одному
и тому же сокету то что будет если в системе появится второй сокет с таким же dport+daddr? Как определить
здесь к какому из двух сокетов направлен пакет с данным daddr?
>подтвердила, что сокеты хранятся в хэш-таблице по ключу, вычисляемому от порта либо адреса и порта, но все равно непонятно, что мешало бы в такую таблицу
>добавить несколько записей об одном сокете, чтобы из него вычитывать пакеты, направленные на разные порты
Как? В пришедшем пакете есть только инфа о sport, dport, saddr и daddr и всё. Какому именно соединению или сокету
пакет предназначен можно определить только по dport+daddr, если разные dport будут соответствовать одному
и тому же сокету то что будет если в системе появится второй сокет с таким же dport+daddr? Как определить
здесь к какому из двух сокетов направлен пакет с данным daddr?