Networking stunts


See also command lines it is tedious to remember for general unix/macOS/BSD commands.

Cheat sheets

Get this poster and much more from Julia Evans

Which process is bound to $PORT?

this one.

lsof -nP -i4TCP:$PORT | grep LISTEN # macOS High Sierra or later
lsof -nP -iTCP:$PORT | grep LISTEN  # other macos

For linux one could try this one.

netstat -pntl | grep $PORT # or
fuser -n tcp $PORT

Julia Evans’ new networking zine, send money

ss -tunap1

Firewalls

See firewalls.

Stream to web

seashells:

Seashells lets you pipe output from command-line programs to the web in real-time, even without installing any new software on your machine. You can use it to monitor long-running processes like experiments that print progress to the console. You can also use Seashells to share output with friends!

Finding bandwidth hogs

This is related to firewalls, which often monitor the traffic as well as purely directing it.

On macOS LittleSnitch, is once again the winner, by collecting statistics on various programs and how much internet they suck down.

On Linux, it’s less shiny but still feasible.

Barebones, use socket statistics, in watch mode:

watch -n1 sudo ss -ntp

See also pyroute which is some kind of ss clone in, presumably, python.

Things like ntop will give you an overview of which ports and servers and suchlike are consuming your bandwidth, i.e. at the protocol level. The presentation can be friendly, even. I couldn’t work out how to make it tell me which processes were making the connections but maybe the problem is me.

nethogs, will tell you which processes are using data right now, but it won’t give you lovely graphs of data-versus-time etc. There are various GUIs, e.g. hogwatch (for web tech), gnethogs, nethogs-qt.

Fresh off the rank, bandwhich

bandwhich sniffs a given network interface and records IP packet size, cross referencing it with the /proc filesystem on linux or lsof on MacOS. It is responsive to the terminal window size, displaying less info if there is no room for it. It will also attempt to resolve ips to their host name in the background using reverse DNS on a best-effort basis.

Speed tests

Why are there so very very many of these? (Is it because it is an easy app to sell because it gamifies bandwidth?) Are any of them suspect? Are any of them good? How about the following two I chose pretty much randomly?

These seem reputable:

I needed a command-line bandwidth test. speedtest and fast both seem good.

pip install speedtest-cli
npm install --global fast-cli

Bandwidth throttling

e.g. Not consuming all your bandwidth when you do that tether thing with your phone.

This is closely related to application firewalls, which manage traffic per process, but that is a lot more general, and also doesn’t usually include neat things like throttling.

macOS

The luxurious solution is to use the intuitive GUI to create rules in Little Snitch, which is nominally privacy software, but is in fact more generally useful. Worth the money. Go into Little Snitch and create a “profile” called “low bandwidth” which prevents e.g. your Droppantsbox or Ogle Drive or P3wncloud or other file syncing software from accessing the internet when you are in a “low bandwidth” situation. Remembering to switch, now…

Also possibly useful for might be lulu, a macOS firewall.

Linux

Some different application firewall I s’pose? There is the elderly and quirky trickle which does application throttling but in a hairy way via dynamic library injection.

tc is more mainstream but works at the interface level and is not so obvious, although there are basic GUIs.

macOS with bad internet

You don’t live in San Francisco? Do you live somewhere with corrupt infrastructure politics, (e.g Australia,) and hence awful internet. Don’t worry, these and other deficiencies of the differently bandwidthed are no longer debilitating in modern society.

Switching your wifi off and on again helps. (detailed version.)

Turn off wifi on your macbook from the Mac macOS terminal command line:

networksetup -setairportpower en0 off

Turn on wifi on your macbook from the Mac macOS terminal command line:

networksetup -setairportpower en0 on

More of these under macOS hacks.

Fine, right?

I’m just kidding, you’re still doomed; The hanging network connections of Indonesian broadband will still bring your OS down eventually. Apply for a Californian visa, even a temporary one, just until the singularity arrives and you ascend into digital heaven, drinking kombucha with George Lucas in the back of his convertible, and livestream the whole thing on youtube without pausing to buffer.

Apparently the bandwidth is also good in South Korea, but you’ll probably need a different ride.

If you are a developer, try to develop using traffic throttling to test your users’ experiences.