Сохраните код как файл mergecols , сделайте его исполняемым и запустите с помощью
mergecols -C1 = 0,2,3,4 -C2 = 0,2,1,3 file1 file2
#!/usr/bin/perl -s
# mergecols
# -C1=0,2,3,4 columns from file 1
# -C2=0,2,1,3 columns from file 2
# file1 input file 1
# file2 input file 2
($f1,$f2) = @ARGV;
@t1 = map { [split] } do { local @ARGV=($f1); <> };
@t2 = map { [split] } do { local @ARGV=($f2); <> };
@c1 = split /,/, $C1;
@c2 = split /,/, $C2;
for ( $i=0; $t1[$i] or $t2[$i]; $i++ ) {
print join ' ', @{$t1[$i]}[@c1], "\n" if $t1[$i];
print join ' ', @{$t2[$i]}[@c2], "\n" if $t2[$i];
}
Соответствующая информация об IP-пакетах: адрес источника , адрес назначения , порт источника и порт назначения . Пара портов источника и порта назначения используется клиентом и сервером. :инициирующая сторона отправляет пакет на порт назначения и выбирает порт источника, в ответ порт источника используется в качестве порта назначения, а порт назначения — в качестве порта источника.
Каждый раз, когда пакет изменяется, сопоставление между изменениями сохраняется. Это сопоставление позволяет устройствам узнать, что делать с пакетами. NAT использует эту информацию для сопоставления соединений между хостами. Статический NAT использует сопоставление на основе предварительно настроенных правил -, а динамический NAT расширяет сопоставление при запуске нового соединения и удаляет запись сопоставления при закрытии соединения.
Я по шагам объясняю, как пакеты перемещаются между вашим клиентом и сервером. Поскольку я не знаю подробностей об используемом вами прокси-сервере, я предполагаю, что весь трафик на прокси-сервер ретранслируется на сервер и происходит прозрачно.
Шаги между вашим клиентом и сервером:
client <---> VPN <---> NAT <---> proxy <---> server
От клиента к серверу:
От сервера к клиенту: