Туннелирование TCP внутри другого потока TCP может иногда работать, но когда что-то идет не так, они очень быстро идут не так.
Рассмотрим, что происходит, когда «реальный мир» теряет один из ваших пакетов TCP: послеопределенное количество неполучения пакета ACK
в ответ на новые пакеты данных, отправляющая сторона обнаруживает, что пакет пропал, и повторно отправляет данные.
Если этот пакет является пакетом TCP,полезная нагрузка другой пакет TCP , тогда у вас есть два стека TCP, которые расстроены отсутствующим пакетом.Туннелированный уровень TCP будет повторно отправлять пакеты, а внешний уровень TCP будет также повторно отправлять пакеты.Это приводит к огромному скоплению дублирующих пакетов, которые в конечном итоге будут доставлены и должны быть отброшены на полу - потому что внешний TCP надежно доставил пакет, в конце концов.
Я полагаю, что вам будет гораздо лучше обслуживать болеевыделенный метод туннелирования, такой как GRE туннели или IPSec .