First, make sure you're also keeping an eye on the other areas where things might be limiting your speed. You need to watch the CPU usage when you're doing the tests an ensure that's not maxing out, though that's unlikely at these kinds of speeds. You are also doing tests that involve writing to disk and are more likely to run into limits there. My Zero W with a fast SD card (Samsung Evo+) maxes out sequential writes at 6-8 MB/sec; you can get a quick estimate of yours with dd conv=fsync if=/dev/zero of=testfile bs=1M count=50
. But if your intended application doesn't need to write the data to the disk, testing with a program such as netperf may be a better approach.
To test SSH without writing the disk you could use a command such as ssh -o compression=no remotehost dd if=/dev/zero bs=1M count=20 | dd of=/dev/null bs=1m
. Note that I explicitly disabled compression on SSH to make sure we're actually transferring that amount of data.
It sounds as if you have a local Linux PC on your network (that I presume is a fairly fast "real" PC as opposed to another Pi); that would be a good host to use for testing locally, without going through your router. If you don't have that, I would grab a Debian Live image and boot that on your Windows box. It won't touch your harddrive and you'll be able to install and use the same networking tools there as you do in Raspbian.