Соответствующая информация об IP-пакетах: адрес источника , адрес назначения , порт источника и порт назначения . Пара портов источника и порта назначения используется клиентом и сервером. :инициирующая сторона отправляет пакет на порт назначения и выбирает порт источника, в ответ порт источника используется в качестве порта назначения, а порт назначения — в качестве порта источника.
Каждый раз, когда пакет изменяется, сопоставление между изменениями сохраняется. Это сопоставление позволяет устройствам узнать, что делать с пакетами. NAT использует эту информацию для сопоставления соединений между хостами. Статический NAT использует сопоставление на основе предварительно настроенных правил -, а динамический NAT расширяет сопоставление при запуске нового соединения и удаляет запись сопоставления при закрытии соединения.
Я по шагам объясняю, как пакеты перемещаются между вашим клиентом и сервером. Поскольку я не знаю подробностей об используемом вами прокси-сервере, я предполагаю, что весь трафик на прокси-сервер ретранслируется на сервер и происходит прозрачно.
Шаги между вашим клиентом и сервером:
client <---> VPN <---> NAT <---> proxy <---> server
От клиента к серверу:
От сервера к клиенту:
Существует несколько подходов. Самый простой — перейти в первый каталог
cd dir1 ; cp $files../dir2
Одна из проблем заключается в том, что строка с именами, разделенными пробелами, не является лучшей формой для манипулирования именами, особенно если они содержат пробелы. У вас есть то, что у вас есть, но будем надеяться, что у вас есть bash, zsh, ksh или что-то подобное с массивами. Превратите строку в массив:
names=( $files )
Затем вы можете применять такие преобразования, как добавление «dir1/» в начале каждого элемента массива имен.
cp "${names[@]/#/dir1/}" dir2
Это не самый очевидный синтаксис, поэтому позвольте мне немного его разобрать.
/
вводит операцию подстановки. #
соответствует началу элемента, подобно ^
в регулярных выражениях. /
завершает часть «от» подстановки. dir1/
— это часть замены «to», в третьей нет ничего особенного /
, это просто символ в части «to». [@]
применяется ко всем элементам массива. Использование [@]
внутри двойных кавычек останавливает разделение слов. {
и }
необходимы для группировки [@]
и операции подстановки вместе с именем переменной. $
— это просто обычная ссылка на переменную.