ssh ポート転送機能がわかりません


下記のようにsshのポート転送を利用し、clientからsever_1（踏み台）経由でsever_2とTCPでの接続をする場合の  
sever_1とsever_2のやり取りの部分がいまいちわかりません。

clientとsever_1の間でsshでの接続を確立し、それを利用してsever_1にTCP接続する。  
そのあと、sever_1からsever_2にTCP接続されると思いますが、sever_1はどのようにしてsever_2に接続しているのでしょうか。sever_1からsever_2に対してのTCP接続を詳しく解説していただける方がいらっしゃれば、どうぞよろしくお願いします。

sever_1からsever_2にリクエストをリレーする部分の挙動がわかりません。

[code]

    client <->  sever_1 <-> sever_2
    
    
[/code]




手順、コマンドではなく、通信の流れを知りたいということでしょうか？

例えば、HTTP (暗号化なし) を `LocalForward` することを考えます。  
client から server_1 に `-L 8080:server_2:80` とした場合、client - server_1
間の暗号化接続が確立します。  
(client の ssh プロセス、server_1 の sshd プロセスが起動)

[code]

        [client]$ ssh -f -N -L 8080:server_2:80 server_1
    
    client(ssh) ======(暗号化)======> server_1(sshd)
    
[/code]

client から 127.0.0.1:8080 へアクセスすると、LocalForward で起動済みの server_1 の sshd から新たに
server_2 の 80 番ポートへ新規接続し、client からのパケットが転送されます。

client - server_1 間は暗号化された経路(トンネル)を通ります。  
server_1 - server_2 間は暗号化されません。

[code]

        [client]$ curl http://127.0.0.1:8080/
    
    client(ssh) ======(暗号化)======> server_1(sshd)
    curl ---(HTTP/暗号化トンネル)--->                --(HTTP)--> server_2(httpd):80
    
[/code]

HTTP 通信の終端は client(curl) と server_2(httpd) で、server_1 は TCP パケットを中継しているだけです。  
server_2 から見ると、接続元は server_1 となり、server_1 の sshd はプロキシのように振る舞うとも言えます。

ちなみに、SSH を LocalForward すると、client - server_1 間は二重に暗号化されます。

[code]

        [client]$ ssh -f -N -L 10022:server_2:22 server_1
        [client]$ ssh -p 10022 user@127.0.0.1
    
    client(ssh) ======(暗号化)======> server_1(sshd)
    ssh ----(SSH/暗号化トンネル)---->                --(SSH)---> server_2(sshd):22
    
[/code]




ポート転送 (ポートフォワーディング) を利用する際は、`ssh` コマンドを実行時に接続先として踏み台サーバと共に "最終的な接続先"
もオプションで指定するので、この情報を元に踏み台サーバが良しなに処理してくれる…という説明で伝わりますか？

**実行例:**

[code]

    $ ssh -L 22:server2:80 server1
    
[/code]

