netcat으로 다양한 전송 (그림)

범례


  • i: stdin
  • o: stdout
  • si: socket in
  • so: socket out

  • nc는 i를 so에, si를 o에 연결합니다.

    포트 포워딩



    client:1111 과 server:2222 를 연결한다.

    client
    mkfifo fifo
    <fifo nc -l 1111 | nc server 2222 >fifo
    

    while ... done 을 붙이면(자), 1번의 커넥션으로 종료하지 않는다.

    실행 예



    다음 순서대로 수행해야합니다.

    server
    python3 -m http.server 2222
    Serving HTTP on 0.0.0.0 port 2222 (http://0.0.0.0:2222/) ...
    11.11.11.11 - - [23/Jun/2021 04:18:07] "GET / HTTP/1.1" 200 -
    

    client
    rm -f fifo && mkfifo fifo && while true; do <fifo nc -l 1111 | nc server 2222 >fifo; done
    

    client
    curl localhost:1111
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Directory listing for /</title>
    </head>
    <body>
    <h1>Directory listing for /</h1>
    <hr>
    <ul>
    <li><a href="fifo">fifo</a></li>
    </ul>
    <hr>
    </body>
    </html>
    



    client끼리 연결



    client1 과 client2 를 server 를 통해 접속.

    server
    mkfifo fifo
    <fifo nc -l 1111 | nc -l 2222 >fifo
    

    실행 예



    server 를 최초로 실행할 필요가 있다. 그 이외는 순부동.

    server
    rm -f fifo && mkfifo fifo && while true; do <fifo nc -l 1111 | nc -l 2222 >fifo; done
    

    client1
    nc server 1111
    

    client2
    nc server 2222
    

    좋은 웹페이지 즐겨찾기