2022年3月

参考:
https://blog.csdn.net/qq_35787138/article/details/113923316
https://www.runoob.com/linux/linux-comm-nc.html
windows上的nc使用的是cygwin里带的
注意:windows上的nc.exe命令写端口号前面需要-p,如nc -l 9999在windows平台可写作nc -l -p 9999

TCP Server

nc -l 9999

TCP Client

nc localhost 999
nc www.baidu.com 80
输入命令回车即发送. HTTP是基于TCP的, 所以可以连接HTTP服务器, 再发送GET命令即可

UDP Server

nc -u -l 999

UDP Client

nc -u localhost 999

特别注意: 在Win10上通过cmd和bash使用nc, 都是tcp模式localhost连接可用, 而udp server/client localhost连接不可用. 一定要用wsl2的模式才行(ubuntu 18.04). 在不同主机上连接倒都没有问题

UDP Broadcast

nc -b -u 192.168.1.255 9999
注意, windows版本的nc里面都没有-b选项.

由于ftp不止使用了1个端口,包括连接时候使用的控制端口和数据传输时候使用的数据端口. 并且ftp协议本身会发送ip地址和数据端口号(而不是用frp服务器的端口号),所以frp配置有些与众不同.
要点:

  • ftp服务器使用Passive被动模式, 并且配置被动模式端口范围
  • frp端口映射中, ftp控制端口数字可以和frp服务器映射端口不一致(如一个使用2121, 另一个使用3131), 但ftp数据端口必须和frp服务器映射端口数字一致(如使用3333就必须都是用3333).
  • 非必须: ftp服务器配置net转换地址. 这个似乎在filezilla客户端上不是必须的, filezilla会自动对NAT前的地址替换为服务器地址.

ftp服务器配置命令, 以pyftplib为例(如果需要服务器可写,再加上选项-w):

python -m pyftpdlib -r 3333-3334

frpc.ini配置:

[ftp_data1]
type =tcp
local_ip = 127.0.0.1
local_port = 3333
remote_port = 3333

[ftp_data2]
type =tcp
local_ip = 127.0.0.1
local_port = 3334
remote_port = 3334

[ftp_control]
type =tcp
local_ip = 127.0.0.1
local_port = 2121
remote_port = 3131