Что такое служебный трафик TCP-соединения (плюс пояснения по TCP)?

У нас есть TCP-соединение.

  1. Ничто не отправлено; сколько трафика (байтов) необходимо в каждую секунду, чтобы сохранить это соединение открытым?
  2. Какова продолжительность открытия соединения между клиентом в Южной Америке и сервером в Северной Европе?
  3. Если мне нужно отправить небольшой объем данных (максимум 256 байт) с интервалом в x секунд, что будет х, для которого лучше закрыть соединение и открыть снова, вместо того, чтобы держать соединение всегда открытым?

Я не ожидаю точных данных - оценок хватит.

2 ответа

1) нет

2) некоторое время. Попробуйте и посмотрите. Для грубой оценки, пинг один конец от другого и удвоить его.

3) попробуй. Это зависит от пропускной способности и, что более важно, задержки. Они варьируются в широких пределах. Обычно лучше по скорости держать открытыми соединения. 256 байт с интервалом в секунды? Я бы оставил соединение открытым, особенно на трассах с возможно высокой задержкой (например, межконтинентальной).

1. По стандарту TCP/IP ничего нет. Однако, в зависимости от состояния сети и любых промежуточных ящиков (устройства NAT, брандмауэры и т. Д.), Соединение, по которому не передаются данные, может быть разорвано. Это может быть обычный тайм-аут (скажем, две минуты, или десять минут, или час), или он может основываться на таблице, которая использовалась в последнее время на каком-либо устройстве.

2. Это зависит от множества факторов, и самая большая задержка может быть связана с локальной сетью клиента, а не с межконтинентальной связью. Тем не менее, поверхность земли между точками составляет около 40 световых миллисекунд, поэтому (без быстрого быстрого открытия TCP) это будет 120 мс для первого пакета данных, передаваемого от клиента к серверу, и 40 мс для ответа, 80 мс больше, чем в активном соединении.

3. При условии отсутствия сломанных промежуточных ящиков всегда лучше держать соединение открытым. Однако задержка восстановления из "беззвучно сброшенного" соединения может быть намного больше, чем время открытия нового; для клиента может быть целесообразным установить собственный тайм-аут (порядка секунды или около того), открыть новое соединение и повторить последнее сообщение, если к тому времени он не получил ответа. Зависит от того, что вы отправляете; Транзакционные сообщения могут заслуживать таких явных быстрых повторов больше, чем удаленная копия системного журнала.

Другие вопросы по тегам