Here’s a list of various resources on networking, not mentioned elsewhere on this site.
Code Repositories
- Tom Igoe’s github repo. The following repositories will be of particular use for networking:
- Tom’s code blog
ITP Classes
- Understanding Networks class
- Networked Media class
- Live Web Class
- Always On, Always Connected class
- Connected Devices class
Networks Learning Guides
- Networks.land a guide to the internet for 11-14 year olds, by Surya Mattu and Ingrid Burrington
- Craig Pickard’s guide to Understanding the Internet
Radio
Electromagnetic Spectrum Maps
- US Frequency Allocation Chart as of 2016
- XKCD’s version
Wireless Protocols
- WiFi Alliance homepage
- WiFi Frequency Allocations – a good breakdown of the WiFi frequency allocations for all the variants of the protocol.
- Wikipedia has a good page on WiFi.
- Bluetooth Alliance Homepage
- ZigBee Alliance Homepage
- LoRa Alliance Homepage
- GSM Alliance Homepage
Software-Defined Radio
- RTL-SDR.com a site for hobbyists of software-defined radio. Their blog posts are a handy introduction to listening to radio signals vis software-defined radio. They also have a good buyer’s guide to SDR dongles. The About RTL-SDR page is a good place to learn what you can do with software-defined radio.
- CubicSDR – a GUI tool for listening to SDRs
- GQRX SDR – a GUI tool for listening to SDRs, a favorite of the RTL-SDR community.
- National Weather Service FM bands
- Airspy – a windows-only SDR GUI platform
- FlightAware – tracking airplane broadcasts on 1090 MHz is a popular hobby among SDR enthusiasts, and FlightAware is the most popular site for resources on this. Their ProStick dongles are pretty good RTL-SDR radio dongles for general use as well. They work in about the 24 to 1766 MHz frequency range.
- Cocoa1090 is a MAcOS app for scanning for flights using an RTL-SDR dongle. It requires the CocoaRTLServer app to connect to the dongle.
Networking Software
Command line tools
- Introduction to the command line
- cURL – a command-line tool for making HTTP requests. Here’s a pretty good tutorial on how to use it.
- An A-Z guide to Linux Command Line tools
- A good book covering the command line in depth: The Linux Command Line: A Complete Introduction William E. Shotts Jr, ©2019 No Starch Press (NYU Library Permalink). You have online access while on the NYU network or VPN through the library. Click the O’Reilly Online Learning link in the book’s record page.
- traceroute – see also Traceroute mapper, below.
- netcat
- ping
- nslookup
Web-based Tools
- Postwoman -aka Hoppscotch. a web-based tool for formatting and sending HTTP/HTTPS requests. Think of it as a GUI for cURL.
- Traceroute mapper – a handy tool that does IP geolocation on your traceroutes. Thanks to Noah Pivnick for the link.
- BGPView – a tool to view any Autononmous System Number (ASN) and the networks to which it connects. Thanks to Alden Jones for the link. Related, a list of past BGP hijacking incidents.
Desktop Tools
- Wireshark is a network packet sniffing tool. It’s very effective for seeing the messages that network devices are sending, and often an essential tool in learning a poorly-documented network protocol.
- Wireshark user guide
- Chris Sanders’ book Practical Packet Analysis is helpful in how to use Wireshark as well.(NYU Library Permalink)
- Wireshark tutorial & cheat sheet – a useful collection of Wireshark how-tos, including how to use IP geolocation in Wireshark, how to follow the thread of an entier HTTP transaction, and more.
- MaxMind GeoLite databases for use with Wireshark. These afford IP geolocation in Wireshark using MaxMind’s geoIP data.
- Herbivore – a simpler packet sniffer.
- Cocoa Packet Analyzer
- Debookee – another packet analyzer
- Mac OS X: How to capture a packet trace
- A helpful analysis of the gitHub DDoS attack in March 2015. Explains how traceroute can be used diagnostically. A companion analysis of the GitHub DDoS attack.
Development Platforms
Node.js
Node.js is a JavaScript engine for command-line development. It’s optimized for creating server applications in JavaScript. Node comes with a package manager, npm. There are many extensions to node.js. It’s useful for all kinds of desktop applications, from HTTP to Bluetooth LE to DMX-512, and more.
- Express.js is a popular library for creating HTTP/HTTPs servers.
- Node-serialport is a library for connecting to asynchronous serial ports
- NodeExamples – a repository of things you can do with node.js
Learning Guides
- The Node Beginner Book – a useful e-book with many examples. Concentrates a bit too much on making your own server for my tastes; much of what it introduces is better done using express.js. But if you want to understand the concepts behind the express.js library, it’s a good intro.
- Hands-on Node.js – Introduces all the core concepts of node, with plenty of examples.
- Learning Node – A fairly in-depth intro to node, for those familiar with JavaScript
- JavaScript The Good Parts – an intro to JavaScript as a programming language, explaining the most
- JavaScript Patterns – Introduction to common programming patterns in JavaScript. Since there are lots of ways to do things in JavaScript, this book is a handy reference for patterns you may not be familiar with.
- The best explanation of closures that I’ve found so far
Mobile Phone Development
Cordova/PhoneGap
PhoneGap is a cross-platform development tool for building mobile apps on Android, iOS, and Windows phones. When PhoneGap as a company was sold to Adobe, they donated the open source code base to Apache, which maintains it as Cordova. Adobe’s current commercial version of PhoneGap and Apache’s open source version, Cordova, are largely the same.
- Shawn Van Every’s page on setting up a Cordova/PhoneGap development environment
- Cordova main site
- Tom’s PhoneGap examples
- Don Coleman’s gitHub site containing many PhoneGap/Cordova examples:
Hosting Services
- Dreamhost
- Bluehost
- GoDaddy
- Digital Ocean
- Amazon Web Services
- Heroku
Server-Related Links
- Setting up a node.js sever on Digital Ocean by Jingwen Zhu
- Installing Nginx on Ubuntu
- Installing HTTPS certificates
- Domains and DNS
MySQL Databases
Digital Ocean has many good tutorials, including:
- Installing mySQL on Ubuntu
- Intro to mySQL
- mySQL cheat sheet (not DigitalOcean’s, but good)
- Don Coleman’s notes on relational databases
- MongoDB
Bluetooth LE Resources
- Don Coleman’s BLE Central plugin for Cordova
- Sandeep Mistry‘s libraries for node:
- noble – Making a BLE central device in node.
- bleno – making a BLE peripheral device in node
- node-sensortag – library for discovering and interacting with TI SensorTags
- node-bleacon -for creating, discovering, and configuring iBeacons
- arduino-BLEPeripheral – Arduino library for creating custom BLE peripherals with Nordic Semiconductor’s nRF8001 or nR51822
- BLE-Bean – Non Official api for the LightBlue Bean
- Tom Igoe’s BluetoothLE-Examples
- EvoThings Studio – an HTML5-based toolkit for making BLE apps on iOS. It’s not Cordova, but it’s similar.
Philips Hue Links
- Philips Hue consumer site
- Philips Hue developers site
- node-hue-api library docs for node.js
- Philips hue discovery tool (only works if you are on the same subnet as the hue)
- to reach the debugger on a Philips Hue, http://<hue-IP-address>/debug/clip.html
- Tom’s node-hue-api and client-side JS examples
Other home automation, etc. APIs
- Wink API
- SmartThings API
- Enertiv API (requires login) and the documentation.