Конференция "Сети" » Как это называется? [D7]
 
  • AnatV (12.12.07 11:57) [0]
    Мне это не приснилось? Видел когда-то такой пример, что делался некий туннель, смысл которого сводился к тому, что на компьютере запускалась программа и она все входящие соединения на некий порт локального адреса перебрасывала на другой адрес. Ну вроде того, что например мы указываем в почтовом клиенте адрес localhost:1234 а все соединения приходящие перебрасывались на mail.maildomain.com:4321. При этом это не было отдельным mail-сервром и mail-клиентом в программе. Видел я такое когда-то очень давно кажется в примерах для Indy. Такое существует, если да, то как это называется?
  • Anatoly Podgoretsky © (12.12.07 12:08) [1]
    Виртуальный сервер, прокси-сервер, порт форвардинг.
  • Сергей М. © (12.12.07 12:18) [2]

    > AnatV   (12.12.07 11:57)


    Поясни, каков прикладной смысл ожидается тобой в такой "переброске" ?
    От этого и решение зависит.
  • MetalFan © (12.12.07 12:47) [3]
    http туннель например?
    как работает:
    1. локальный сервер(ЛС) принимает http запросы(пакеты), упаковывает(и возможно зашифровыват).
    2. ЛС отсылает пакеты на некий внешний сервер(ВС) в и-нете
    3. ВС распаковывает запрос посылает по нужному адресу
    4. ВС принимается ответ, упаковывает, пересылает ЛС
    5. ЛС распаковывает ответ, отдает локальному клиенту.
    таким образом локальному клиенту (fe:браузер) работа с внешним сервером (http) получается прозрачной.

    для чего используется: например для обхода на работе запрета доступа к нек.сайтам
  • AnatV (12.12.07 13:00) [4]
    Посмотрел в интернете - кажется нашел название - это Port Mapping было, в инди кажется и был такой класс.

    Но меня интересует сам процесс этого. Задача такая, нужно отловить пакет - и исправить в нем допустим 5 байт, все остальное оставить как есть.

    Если представить абстрактно сам такой процесс, то это: отдельно сервер, отдельно клиент - и сервер принимает все подключения и перебрасывает данные на уже подключенный клиентский сокет, ну и наоборот - это так?
  • Eraser © (12.12.07 15:04) [5]

    > AnatV   (12.12.07 11:57) 

    вот пример на Indy

       // Port Mapping.
       OutboundClient := TIdTCPClient.Create(Self);
       try
         OutboundClient.Host := ; // IP.
         OutboundClient.Port := ; // Port.
         OutboundClient.ConnectTimeout := DEFAULT_CONNECTION_TIMEOUT;
         OutboundClient.ReadTimeout := DEFAULT_READ_TIMEOUT;

         OutboundClient.Connect;
         OutboundClient.Socket.UseNagle := False;

         while AContext.Connection.Connected do
         begin
           AContext.Connection.IOHandler.CheckForDataOnSource(1);
           FNetData := AContext.Connection.IOHandler.InputBufferAsString;
           if Length(FNetData) > 0 then
           begin
             OutboundClient.IOHandler.Write(FNetData);
           end;
           OutboundClient.IOHandler.CheckForDataOnSource(1);
           FNetData := OutboundClient.IOHandler.InputBufferAsString;
           if Length(FNetData) > 0 then
           begin
             AContext.Connection.IOHandler.Write(FNetData);
           end;
         end;
       finally
         OutboundClient.Free;
       end;

  • Eraser © (12.12.07 15:04) [6]
    естесственно данный код нужно выполнять в OnExecute сервера.
 
Конференция "Сети" » Как это называется? [D7]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]