Welcome to Shaun Luttin's public notebook. It contains rough, practical notes. The guiding idea is that, despite what marketing tells us, there are no experts at anything. Sharing our half-baked ideas helps everyone. We're all just muddling thru. Find out more about our work at bigfont.ca.

Computer-to-Computer Communication

Tags: computer-science, communication

This is an ongoing brain-dump/exploration of communication between/among computers. It’s motivated in part by wanting to setup control systems for household and industrial system. For instance, what if we would like to:

  1. Gather moisture data from a moisture sensor?
  2. Control the location of a solar panel?
  3. Titrate down the concentration of an aquarium nutrient?
  4. Link together several single board computers for extra processing power?
  5. Send an SMS message when a moisture detector gets wet?

What bus or network connection should we use? What protocol should we use over that connection? What serialization of commands/data/objects should we use?

https://en.wikipedia.org/wiki/Category:Computerbuses

image

https://en.wikipedia.org/wiki/Telecommunicationsnetwork

image

https://en.wikipedia.org/wiki/Listofdevicebitrates#Computer_buses List of device bit rates.

Brainstorm: Hierarchies

  • Peer-to-peer
  • Client-Server

Brainstorm: Connection related terminology

  • Bus, moves data between components,
  • Network, moves data between components,
  • Differences between bus and network.
    • power is provided by a bus to the connected component
    • e.g. the USB port powers the mouse whereas the Wireless card does not power the Internet
  • System bus, connects CPU to RAM (the computer to the memory)
  • More Internal
    • <---System Bus---
    • Front-Side Bus---
    • Expansion Bus---
    • Peripheral Bus---> More External

Brainstorm: lines (in the sand) of distinction among communication methods

  • serial vs parallel
  • computer-to-computer vs computer-to-device
  • internal vs external
    • internal connects all the parts inside a computer, CPU to RAM to Motherboard. Quick, independent
    • extenal connects parts outside, printer, mouse, keyboard… (hard drive? internet?)
  • system vs front-side vs expansion vs peripheral

Brainstorm: What are the levels of CPU-to-CPU communication?

  • Application
  • System
  • Physical
  • Human Understanding
  • English
  • Binary
  • Electronic

Brainstorm: How can we physically communicate from one computer to another?

  • USB – connect peripherals, lower performances than SATA, use where SATA isn’t necessary, e.g. in a mouse
  • Ethernet.
  • WiFi.
  • Cable (Coaxial Cable)
  • HDMi
  • DisplayPort
  • Light
  • Electricity
  • BlueTooth
  • Radio
  • FireWire
  • SATA – connect hard drives to the system bus
  • Expansion Cards – connect directly to the system bus
  • PCI
  • SCSI
  • Serial ATA

Brainstorm: Use cases

  • CPU to Hard drives, tape, DVD, i.e. persistence, I/O
  • CPU to RAM
  • CPU to CPU

Brainstorm: What can use to communicate over those physical mediums?

  • HTTP
  • FTP
  • Plain old binary pulses.

Brainstorm: What languages can we use to store more complex stuff?

  • HTML/CSS/JavaScript – the representations of the web.
  • XML – the representations of hierarchical data.
  • JSON – more hierarchical data.
  • Binary
  • ASCII
  • Unicode

Audio/Visual

  • DVI
  • VGA
  • HTMi
  • DisplayPort

Emerging Questions

  • What differentiates network communication vs bus communication? When should we use each?
  • What differentiates internal vs external buses? When should we use each?
  • How does a GPOI pin differ from a bus?
  • What bus/network choices are optimal (and/or practical) for use cases:
    • timing sensitive communication?
    • client-server?
    • peer-to-peer?
    • control systems?
    • high throughput?

Some broad, sweeping generalizations that are emerging from my reading, though without citations:

  • USB is for connecting peripheral devices to a computer (e.g. mouse, external HDD, keyboard)
  • The practical differentiators among internal bus, external bus, and network communication are blurring.
  • A pin is a lower level then a bus; a pin is a single on/off that communicates with a CPU; we connect to pins with raw wire.
  • A port has a different meaning in hardware than is does in software. For instance, USB is the overarching communication strategy, and it involves both a USB port and a USB cable.

If you expected to find answer, you came to the wrong blog. Smile