<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="generator" content="pandoc"> <meta name="author" content="Trygve Laugstøl <trygvis@trygvis.io>"> <title>IoT Workshop</title> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> <link rel="stylesheet" href="./bower_components/reveal.js/css/reveal.css"> <style type="text/css"> code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} span.underline{text-decoration: underline;} div.column{display: inline-block; vertical-align: top; width: 50%;} </style> <link rel="stylesheet" href="./bower_components/reveal.js/css/theme/black.css" id="theme"> <!-- Printing and PDF exports --> <script> var link = document.createElement( 'link' ); link.rel = 'stylesheet'; link.type = 'text/css'; link.href = window.location.search.match( /print-pdf/gi ) ? './bower_components/reveal.js/css/print/pdf.css' : './bower_components/reveal.js/css/print/paper.css'; document.getElementsByTagName( 'head' )[0].appendChild( link ); </script> <!--[if lt IE 9]> <script src="./bower_components/reveal.js/lib/js/html5shiv.js"></script> <![endif]--> </head> <body> <div class="reveal"> <div class="slides"> <section id="title-slide"> <h1 class="title">IoT Workshop</h1> <p class="author">Trygve Laugstøl <trygvis@trygvis.io></p> </section> <section><section id="what-is-iot" class="title-slide slide level1"><h1>What is IoT</h1></section><section id="what-is-iot-1" class="slide level2"> <h2>What is IoT</h2> <ul> <li>Not “a computer connected to the internet” <ul> <li>Then it is really just another computer connected to the internet</li> </ul></li> <li>Must be something else <ul> <li>It is simply devices that are resource constrained <ul> <li>Usually in more than one way</li> </ul></li> </ul></li> <li>Autonomous operation, the connection might not be permanent</li> </ul> </section><section id="what-differentiates-a-computer-from-an-iot-device" class="slide level2"> <h2>What differentiates a computer from an IoT device?</h2> <ul> <li>Constrained in (one or more of): <ul> <li>Memory</li> <li>CPU</li> <li>Network bandwidth and/or latency</li> <li>Storage</li> </ul></li> </ul> </section></section> <section><section id="going-back-to-basics" class="title-slide slide level1"><h1>Going back to basics</h1></section><section id="what-is-the-internet-again" class="slide level2"> <h2>What is the internet again?</h2> </section><section id="osi-model" class="slide level2"> <h2>OSI model</h2> <ol type="1"> <li>Physical Layer</li> <li>Data Link Layer</li> <li>Network Layer</li> <li>Transport Layer</li> <li>Session Layer</li> <li>Presentation Layer</li> <li>Application Layer</li> </ol> <ul> <li><a href="https://en.wikipedia.org/wiki/OSI_model">Wikipedia: OSI model</a></li> <li><a href="https://en.wikipedia.org/wiki/OSI_model#Examples">Wikipedia: OSI model#Examples</a></li> </ul> <aside class="notes"> <p>Følges ikke veldig slavisk</p> </aside> </section><section id="layer-1-physical-layer" class="slide level2"> <h2>Layer 1: Physical Layer</h2> <ul> <li>10BASE5, 10BASE2</li> <li>10BASE-T / 100BASE-TX / 1000BASE-TX</li> <li>802.11a/b/g/n PHY</li> <li>RS-232</li> </ul> <aside class="notes"> <p>Huber og switcher (som gjør en slags routing) er ikke en av disse lagene. Mere en implementasjonsdetalj. RS-232 sin signallering brukes i <em>alle</em> MCUer, mange har flere porter tilgjengelige. Kun signallering, ikke spenningsnivåer. Mange støtter veldig høye datarater (>= 1Mbit/s)</p> </aside> </section><section id="layer-2-data-link-layer" class="slide level2"> <h2>Layer 2: Data Link Layer</h2> <ul> <li>Ethernet</li> <li>WiFi</li> <li>Bluetooth</li> <li>Token Ring</li> </ul> </section><section id="layer-3-network-layer" class="slide level2"> <h2>Layer 3: Network Layer</h2> <ul> <li>IP</li> <li>ICMP</li> <li>IPX</li> </ul> </section><section id="layer-4-transport-layer" class="slide level2"> <h2>Layer 4: Transport Layer</h2> <ul> <li>TCP</li> <li>UDP</li> </ul> </section><section id="layer-5-session-layer" class="slide level2"> <h2>Layer 5: Session Layer</h2> <ul> <li>“sockets”</li> <li>NetBIOS</li> </ul> </section><section id="layer-6-presentation-layer" class="slide level2"> <h2>Layer 6: Presentation Layer</h2> <ul> <li>SSL</li> </ul> </section><section id="layer-7-application-layer" class="slide level2"> <h2>Layer 7: Application Layer</h2> <ul> <li>HTTP</li> <li>DNS</li> <li>(everything else..)</li> <li>MQTT</li> </ul> </section><section id="section" class="slide level2"> <h2></h2> </section></section> <section><section id="notes" class="title-slide slide level1"><h1>Notes</h1></section><section id="assignments" class="slide level2"> <h2>Assignments</h2> <ul> <li>Measure round trip time/latency. Measure UDP, TCP. Measure when the packet size is greater than the MTU</li> </ul> </section></section> </div> </div> <script src="./bower_components/reveal.js/lib/js/head.min.js"></script> <script src="./bower_components/reveal.js/js/reveal.js"></script> <script> // Full list of configuration options available at: // https://github.com/hakimel/reveal.js#configuration Reveal.initialize({ // Push each slide change to the browser history history: true, // Optional reveal.js plugins dependencies: [ { src: './bower_components/reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } }, { src: './bower_components/reveal.js/plugin/zoom-js/zoom.js', async: true }, { src: './bower_components/reveal.js/plugin/notes/notes.js', async: true } ] }); </script> </body> </html>