The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"несколько вопросов по TCP/UDP"
Отправлено вордфильтрподавись, 28-Окт-11 00:28 
> 1. да

Нет. В случае tcp/ip соединение - двусторонний туннель между endpoint'ами заданными парами ip:port:

src_ip:src_port <-> dst_ip:dst_port.

Итого 4 числа. Для однозначной идентификации туннеля, очевидно, хоть 1 из этих 4 чисел у разных туннелей должно отличаться.

Для исходящего соединения src_ip - айпи машины-клиента которая инициирует соединение (для multihome машин у которых их несколько в принципе можно явно ткнуть какой из айпи юзать), порт src_port как правило автоматически назначается ОС, хотя при наличии особых соображений можно его задать явно. Обычно ОСи назначают порты старше 1024, инкрментя на 1 по мере надобности. Очень характерно выглядит в netstat. Ну а сервер слушает на одном(а может и нескольких, если multihomed) dst_ip, и на одном конкретном dst_port.

Что отсюда следует? Клиент не может инициировать к серверу более чем 65к соединений(на 1 имеющийся айпи ифейса), иначе утратит возможность различать туннели между собой.Потому что со стороны сервера 2 числа не меняются, а со стороны клиента портов 65К ну и 1 или несколько ip.

С другой стороны, серверу ничто не мешает принимать до 65К соединений одновременно с каждого клиента: он ловит все пакеты на 1 входной порт, а вот у разных клиентов же еще и ip разный! Меняются src_ip и src_port, 2 числа для уникальной идентификации туннеля. В случае ipv4 сервер в теории мог бы принять почти (2^32) * (2^16) т.е. примерно 2^48 соединений. Реально разумеется ресурсы у сервера закончатся раньше. Поскольку хоть на входящее соединение и не выделяется новый порт, зато как минимум отслеживать состояние соединения-надо.

В случае udp - вообще нет понятия "соединение". Поэтому и такого понятия как "65к соединений" там тоже нет.

> 2. Hint: на сетевухе может быть много IP адресов

Только вот у сервера и с одним никаких проблем не будет: айпишник у клиентов то меняется, что тоже позволяет отличать туннели. Клиент не может реюзать порты на выход как раз потому что при этом все 4 числа были бы одинаковы, не давая возможности отличать туннели друг от друга(айпи сервера и клиента не меняются, порт сервера тоже, вот и остается менять исходящий порт клиента при открытии еще 1 соединения к тому же хосту, т.к. это единственное что получается менять). Но у сервера этой проблемы нет. Потому что он может различать туннели по айпи клиента и порту.

> 3. Нет (частичный=некорректный. пакет просто дропнется)

4. Буфера рассчитываются исходя из желаемой скорости и латентности. Чем выше желаемая скорость передачи данных и латентность сети и/или обслуживания сокетов, тем жирнее надо буфер чтобы удержать в нем то что навалилось за это время. Вообще, однозначно определить оптимальный размер буфера нетривиально. Для 10 Гбит эзернета между соседними машинами оптимальный буфер будет немного иной чем для тощего adsl с 128 кбит аплоада. А какой линк подсунут - заранее неизвестно.А, ну и операционка имеет свое мнение о том сколько еще можно вам дать, а сколько уже больно жирно(для некоторых типов соединений этот параметр ОС еще и тюнят для макс. производительности).

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру