Постоянное состояние соединения TCP - PullRequest
1 голос
/ 27 ноября 2009

Есть ли какое-либо поле / опция / что-нибудь, что я могу поместить в TCP-пакет (будь то syn, ack или просто обычные данные), которое, я могу быть уверен, будет возвращено другим концом без изменений?

Например, Я хочу пометить конкретное соединение (src, srcport, dst, dstport) номером, который я всегда могу прочитать из пакета, принадлежащего этому соединению. Это означает, что я могу идентифицировать соединение, не используя 4-х кортеж (как указано выше).

Ответы [ 5 ]

3 голосов
/ 27 ноября 2009

Да: он называется клиентским протоколом, инкапсулированным в протокол TCP-сервера.

Другими словами: определите протокол клиента в соответствии с вашими потребностями. Не пытайтесь «засунуть» лишние биты в заголовок TCP.


Конечно, в TCP есть издержки ' options ', но я сомневаюсь, что вы найдете простой способ получить к ним доступ ... и в любом случае вам не следует.

1 голос
/ 27 ноября 2009

Вы можете использовать опцию TCP Timestamp для этого. Хотя это не кажется хорошей идеей.

1 голос
/ 27 ноября 2009

В вашем приложении может быть таблица поиска, в которой вы связываете свой тег с сокетом.

0 голосов
/ 14 апреля 2010

В UDP IP-адрес назначения и номер порта назначения используются для демультиплексирования пакетов, но в IP-адресе назначения TCP, IP-адресе источника, номере порта назначения и номерах портов источника (4-кортеж) все необходимо, чтобы различать соединения, почему для это использование.

0 голосов
/ 27 ноября 2009

Нет, нет никакого средства для того, что вы описываете.

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

Я никогда не видел серверное приложение, которое отслеживает соединения на основе 4-х адресов / портов. Это кажется слишком большой работой.

При перечитывании вашего вопроса кажется, что вы, возможно, задаете этот вопрос с точки зрения уровня драйвера TCP. Какое программное обеспечение вы пишете здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...