layout: true background-image: url(SlideTemplate/img/Background.png) --- class: center, middle ### A Brief (Hi)Story of Networks and # Communications:
From Fire Signals to NetFlix ### Forschungstage Informatik - 2018 ##### *Prof. Dr.-Ing. Thorsten Herfet, .hon-speaker[Andreas Schmidt], Pablo Gil Pereira, Kelvin Chelli* ##### Telecommunications Lab, Saarland Informatics Campus, 14th and 15th June 2018 --- .andreas[  ] # Who am I? -- Andreas Schmidt is ... ... a **PhD student** at the Telecommunications Lab of **Prof. Thorsten Herfet**. ... doing research in the area of **fast and reliable** networking ([larn.systems](http://larn.systems)).
.center[
] ... developing **real-time protocols** with **error and congestion control**. ... teaching the **Hands-On Networking** practical course (for 3rd - 5th semester students). ... reachable via [schmidt@nt.uni-saarland.de](). -- .alert.alert-info.small[ ... participated in the ["Bundeswettbewerb Informatik"](https://www.bwinf.de/bundeswettbewerb/) twice (never reached the second round), but
... participated in the ["Intel-Leibniz Challenge"](http://www.intel-leibniz-challenge.de/) twice (close to maximum achievable points both times). ] --- class: center, middle # Introduction ??? * The first question we have to ask ourselfes: What is telecommunications? --- # Telecommunications **Definition ([Wikipedia](https://en.wikipedia.org/wiki/Telecommunication))**: *Telecommunication is the **transmission of** signs, signals, writings, images and sounds or **intelligence of any nature** by wire, radio, optical or other electromagnetic systems, as defined by the International Telecommunication Union (ITU).*
**Telecommunication** occurs when the exchange of information between communication participants **includes the use of technology**. It is transmitted either electrically over physical media, such as cables, or via electromagnetic radiation. Such transmission paths are often divided into **communication channels** which afford the advantages of **multiplexing**.
.pull-left[  .small[Source: Frederic Remington] ] .pull-right[  ] ??? * We will deal with: * Mechanisms to encode intelligence. * Technologies for communication. * Communication channels. * Multiplexing. --- # Telecommunication Networks **Definition ([Wikipedia](https://en.wikipedia.org/wiki/Telecommunications_network))**: *A telecommunications network is a collection of **terminal nodes**. **Links are** connected so as to enable telecommunication **between the terminals**.* *The transmission links connect the nodes together. The nodes use **circuit switching**, **message switching** or **packet switching** to pass the signal through the correct links and nodes to reach the correct destination terminal.* *Each terminal in the network usually has a **unique address** so messages or connections can be routed to the correct recipients. The collection of addresses in the network is called the **address space**.* .pull-left[  .small[[Source](https://telovations.files.wordpress.com/2012/09/telephonepoles.jpg)] ] .pull-right[  .small[[Source](http://computernetworkusa.com/wp-content/uploads/2013/02/header2.jpg)] ] ??? You will learn about: * Node types. * Link types. * Switching mechanisms. * Addressing. --- # 21st Century Computer Networking .pull-left[  .right.small[[Source](https://chooseyoursmartphone.files.wordpress.com/2015/07/1.jpg)]  .right.small[[Source](http://img.gawkerassets.com/post/4/2013/02/appsdropbox.jpg)] ] .pull-right[  .right.small[[Source](http://www.ecdl.org/media/shutterstock_1139108621.jpg)]  .right.small[[Source](http://cdn.ttgtmedia.com/visuals/German/article/internet-of-things-1-fotolia.jpg)] ] ??? * Telecommunications is omnipresent today * Mobile computing changed the game. * Significantly increased the usage of Internet-based systems. * Mobile web, and mobile video streaming. * Internet everywhere, services galore. * Mail, Notes, Social Media, News, Photo-Sharing, Telephony, ... * Internet of things connecting everything. * Sensors: Temperature, Humidity, Light, * Locations: Home, Production Environments, Your Body, ... * ... and the kitchen sink. * Highlight different aspects: * Services * Quality of Service * Performance * Security ! How does TC in general work? Let's go back to the past and see. --- # The Internet * Invented as a network to connect: * .fa.fa-fw.fa-graduation-cap[] Academia (exchange research results, etc.) * .fa.fa-fw.fa-shield-alt[] Military (exchange intelligence, reliable communication infrastructure, ...) * Evolved into the ... * largest (51% of the world's population could access it in June 2017), * most ubiquitous, * most versatile (services from Facebook to remote maintenance) and * cheapest to access (no extra fee for international connections, ...) * ... network of mankind. ??? * Academia: Exchange research results. * Military: Provide a resilient, decentralized communcation system (withstand atomic crisis in cold war) * largest: * first network covering the globe * allowing even small objects to participate * versatile: never ever has the same technology been used to buy groceries and watch videos of cats at the same time. * cheapest to use * clearly not to operate * broadband flat rates made communication nearly free of charge --- class: center, middle # Communication Concepts --- # At the Train Station .pull-left[  ] .pull-right[ Through computer scientist's glasses... * *Party A* communicates * with *Party B* * with *Purpose P* * in *Environment E* * and under *Requirements R* ] .clear[] .alert.alert-info[ **Example**: Alice (*A*) asks Bob (*B*) for the time (*P*) at the train station (*E*). ] -- **.fa.fa-fw.fa-question-circle[] What are the Requirements (*R*)?** ??? Alice is at the train station. Wants to ask Bob for the time. Trains approach all the time. It is noisy. -- * *B*'s answer should be valid (R1). * *E* should not be too noisy (R2). * *A* and *B* should talk same language (R3). * *A* has to say "Good day, may I ask you a question" first (R4).
.light[Because otherwise *B* will think he is impolite and refrain from answering.] --- # Communicate .alert.alert-info.center[ **Meaning (information)** is transmitted through **something else (symbols)**, which is built using e.g. **words (alphabet)**. ] -- **Examples** * Information.
.light[Time of day. Sensor readings. Thought: "This is interesting."] * Symbols.
.light[11 o'clock. Tomorrow. In general: Sentences from a language.] * Alphabet.
.light[All words/numbers used to describe time information. In general: Language XYZ] --- # Time flies by... ??? Question: Where is time passing in our scenario? -> collect at board Go trough points. Calculation: * Processing Delay: 2s (per side) * Transmission Delay: 2s (per side) * Propagation Delay: 5ms (340m/s (Speed of Sound), 2m Distance) * RTT: 2 \* 2s + 2 \* 5ms + 2s = 6,01s -- **Processing Delay ($D_{s}$)**
.light[ * Enquirer: Phrase the question. * Responder: Understand question. Look at the watch. Phrase answer. ] -- **Transmission Delay ($D_{t} = \frac{\text{Data Length}}{\text{Data Rate}} = \frac{L}{R} $)**
.light[ * Enquirer: What time is it? * Responder: Eleven o'clock. ] -- **Propagation Delay ($D_{p} = \frac{\text{Distance}}{\text{Speed of Propagation}} = \frac{d}{c}$)**
.light[ * Natural bound: Speed of sound / light etc. * Distance between mouths and ears. ] -- **Round-Trip Time ($RTT$)**
.light[ * Time between asking the question and receiving the answer. * $RTT = 2 \cdot D_p + 2 \cdot D_t + D_s$ ] --- # Loss **.fa.fa-fw.fa-question-circle[] What can cause misunderstandings?** ??? Where do losses appear? How much data is transmitted? * Tell another time (retransmit, ARQ). * Tell more than needed (FEC). -- * A cannot understand B because a train is approaching. * B has a horrible accent. **.fa.fa-fw.fa-question-circle[] How can this be solved?** -- * B repeats what he said before.
.light[Later: *Automated Repeat reQuest (ARQ)*.] * B says something like "it's eleven o'clock on the minute".
.light[Later: *Forwarding Error Coding (FEC)*.] -- ** .fa.fa-fw.fa-cube[] Formal Sizes:** * Packet Loss Rate * Bit Error Rate --- # Links .alert.alert-info[ **.fa.fa-fw.fa-lightbulb[] Analogy:** Packet Conveyor Belt. ] .center[  ] -- **.fa.fa-fw.fa-question-circle[] Questions:** * How long does it take for a packet to traverse the belt? ??? * 5sec -- * How large is the throughput (packets per second) if we send a single packet? ??? * 0.2 packets per second -- * How many packets can fit the belt / can be sent back to back? ??? * 5m fit 10 packets a 0.5m -- * What happens if we send more? ??? * We need to buffer or drop! --- # Wired (Conveyor Belt)  --- # Wireless (Conveyor Belt) .center.base-station[ .right.small[[Source](http://www.nowebagency.com/mwc16-nokia-shows-lte-advanced-pro-with-3d-beamforming-to-triple-site-capacity/)] ] --- # Mobile (Conveyor Belt) .small[... and obviously wireless] .center.wireless-car[  ] .small[[Source](https://commons.wikimedia.org/wiki/File:Caddy_and_Antenna.jpg)] --- # One Effect of Mobility .pull-left[ **.fa.fa-fw.fa-question-circle[] How does the sound change, when an ambulance car moves by?** .center[  .small[[Source](https://www.flickr.com/photos/jamin2/3555151084)] ] ] -- .pull-right[ **Doppler Effect**: Relative motion causes frequency-dependent frequency shift. .center[ $\Delta f = \frac{\Delta v}{c} f_0$  ] ] --- # Doppler Compensation in Practice .pull-left[ **.fa.fa-fw.fa-camera-retro[] Original** .center.mobility[  ]
] -- .pull-right[ **.fa.fa-fw.fa-sign-in[] Received** .center.mobility[  ] ] -- .pull-right[ **.fa.fa-fw.fa-check-square[] Corrected** .center.mobility[  ] ] --- # Data Network Links **Base Sizes:** * Length $\equiv$ **delay $D, [D]=sec$**. * Speed $\equiv$ **throughput $B, [B]=bps$**.
.light[Also called bandwidth or data rate.
**Careful:** Bandwidth is most of the times given in Hertz and a frequency size.] * Packet size $\equiv$ **packet length $L, [L]=byte$**.
.light[Largest possible packet size: **Maximum Segment Size** ($MSS, [MSS]=byte$).] -- **Composed Sizes:** * Number of *bytes* a link can contain at any time:
*Bandwidth-Delay Product* ($BDP = B \cdot D, [BDP] = byte$). * Number of *packets* a link can contain at any time:
*Window* ($N=\frac{BDP}{MSS}, [N]=1$) --- # Data Network Link - By Example .fa.fa-fw.fa-info-circle[] Given: $MSS = 1280 byte$, $D = 200ms$, $B = 50Mbps$. .fa.fa-fw.fa-question-circle[] How big is the BDP? How many packets can be sent? --
.center[ $BDP = B \cdot D = 50Mbps \cdot 200ms = 10Mbit = 1280kByte$ $N = \frac{BDP}{MSS} = 1024$ ] --- # Size(s) matter... .small[even for computer scientists] .pull-left[ **.fa.fa-fw.fa-stopwatch[] Time** .smaller[ * **Latency / Delay**
.light[How long something takes in seconds.] * **Forward-Trip Time (FTT)**
.light[How long from source to sink?] * **Round-Trip Time (RTT)**
.light[FTT + way back. Sometimes 2*FTT.] * **Jitter**
.light[Variance of delay.] ] ] -- .pull-right[ **.far.fa-fw.fa-tachometer[] Data Rate** .smaller[ * $R = \frac{Transmitted Data}{Time} \rightarrow [R]=bits/s$ * **Throughput**
.light[Overall data rate.] * **Goodput**
.light[Useful data rate (app data per time).] * **Maximum Bandwidth**
.light[Maximally achievable data rate of a channel. Careful: Not Hertz!] ] ] .clear[] -- .pull-left[ **.fa.fa-fw.fa-trash[] Loss** .small[(Rate usually given in %)] .smaller[ * **Packet Loss Rate**
$plr = \frac{Lost Packets}{Transmitted Packets}, [plr]=1$ ] ] .pull-right[ ** ** .smaller[ * **Bit Error Rate**
$ber = \frac{Wrong Bits}{Total Bits} \rightarrow [ber]=1$ ] ] --- # Symbol Rate .alert.alert-danger[ **.fa.fa-fw.fa-bolt[] Potential Problem:** Consider Alice speaking incredibly fast (think of chipmunks). Bob cannot understand her, because his hearing system is overwhelmed. ] -- * For many physical transmission systems, the rate at which symbols are generated is important and has to be agreed on: -- * Rate automatically selected / conveyed by the transmission systems or standardized among interoperating systems. -- * Has to be specified when tuning in to a communication.
.light[e.g. baud rate for a serial connection between PC and embedded board] -- * Mathematically speaking: * Symbol Duration: $T_s$ * Symbol Rate: $f_s = \frac{1}{T_s}$ --- # Networks vs. Services .pull-left[ **.fal.fa-fw.fa-share-alt[] Networks** * Communication systems ... * are itself useful for transmitting. * require an established **network** for access and connectivity. * Examples: * Fire Signal Network * PSTN (Telephone Network) * Internet ] -- .pull-right[ **.fab.fa-fw.fa-youtube[] Services** * Users want something to be done.
.light[e.g. telling someone something] * Doing something is implemented by one or multiple cooperating **services**. * Examples: * Tell Troy has fallen. * Configure my router in Troy. * Book a hotel in Troy. * Check the weather in Troy. ] --- # Protocols **Definition ([Wikipedia](https://en.wikipedia.org/wiki/Communications_protocol))**: *In telecommunications, a communication protocol is a **system of rules** that allow **two or more entities** of a communications system to transmit information via any kind of variation of a physical quantity. These are the rules or standard that defines the **syntax**, **semantics** and **synchronization** of communication and possible **error recovery methods**. Protocols may be implemented by hardware, software, or a combination of both.* -- **Protocol Specification**: * *Service* to be provided to a user of the protocol. * *Assumptions* to be made about environment and participants. * *Vocabulary* to be used by participants. * *Encoding* to map elements of the vocabulary to transmittable symbols (flags etc.). * *Behavioural Rules* to be followed by participants. --- # Train Station Time Query Protocol * **Service:** Get to know the current time by asking someone. -- * **Assumptions:** -- * Participants can hear each other and talk the same language. -- * **Vocabulary:** -- * Question words. * Time information bits (numbers (0-24), modifiers (half past), well-known times (noon, midnight), imperial specialities (a.m., p.m.)). -- * **Encoding:** -- * Sounds (*W-H-A-T T-I-M-E I-S I-T*, *N-O-O-N*). * Gestures (*point at wrist*). -- * **Behavioural Rules:** Ask politely! -- .alert.alert-info[ **.fa.fa-fw.fa-exclamation-triangle[] Important:** Define an acronym, e.g. Train Station Time Query Protocol (TSTQP). ] --- class: center, middle # Video Streaming on the Internet --- # Video Streaming Services .pull-left[ .center.video-streaming[ .right.small[[Source](https://de.wikipedia.org/wiki/YouTube)] ]
.center.video-streaming[ .right.small[[Source](https://dotesports.com/general/news/how-to-stream-twitch-console-20556)] ] ] .pull-right[ .center.video-streaming[ .right.small[[Source](https://assets.cdn.moviepilot.de/files/9352e1e87338a18da68bbe6c4c574585006854bb06566ae79405314455e8/fill/1080/521/netflix.jpg)] ]
.center.video-streaming[ .right.small[[Source](https://img.ardmediathek.de/standard/00/21/52/09/32/-2062574680/1x1/1280?mandant=ard)] ] ] --- # Streaming vs. Broadcast **.fa.fa-fw.fa-question-circle[] How is video streaming different from traditional TV broadcast?** --
Video Streaming
(Digital) TV Broadcast
Consumption
Individual
Collective
Distribution
Unicast (1:1)
Broadcast (1:N)
Video Start
On Demand
On Time (e.g. 20:15)
Quality
Variable / Adaptive
Binary (Maximum quality or black screen.)
Network
Internet
TV Network (Cable, Satellite, Terrestrial)
Data "Forms"
Video Chunks in Packets
Video Signal over Media
Playback
Controllable
Continuous
-- .alert.alert-danger[ **.fa.fa-fw.fa-exclamation-triangle[] Bottomline:** Multimedia distribution is facing disruptive shifts in paradigms and technologies! .light[Which comes with tremendous need for research and development.] ] --- # Video Coding **.fa.fa-fw.fa-film[] Frame rate ([Wikipedia](https://en.wikipedia.org/wiki/Frame_rate))**: *The frequency at which consecutive images called frames appear on a display*. With 24 frames per second, usually no visible image switching for humans. **.fa.fa-fw.fa-th[] Pixel ([Wikipedia](https://en.wikipedia.org/wiki/Pixel))**: *The smallest controllable element of a picture represented on a screen*. The bits per pixel is the color depth or the number of possible colors. .pull-left[ **.far.fa-fw.fa-tachometer[] Data Rates (uncompressed)** * **HDTV (10-bit, 1080p, 24fps)** $10bit \cdot 1920 \cdot 1080 \cdot 24 fps =$
$62208000 Bps = 59.326 MBps$ * **4K (30-bit, 2160p, 60fps)** $30bit \cdot 4096 \cdot 2160 \cdot 60 fps =$
$1990656000 Bps = 1898.4375 MBps$ ] .pull-right[ **.fa.fa-fw.fa-compress[] Video Compression**: Reduce data rate by removing spatial and temporal redundancy. .center.compression[  ] .center.compression[  ] ] --- # Video Streaming .pull-left[ **.fa.fa-fw.fa-server[] Server**: Web Server. **.fab.fa-fw.fa-firefox[] Client**: Web Browser. **.fa.fa-fw.fa-arrow-circle-right[] URL**: Reference to resources such as web page or video. **.fa.fa-fw.fa-exchange-alt[] Communication Process**: * Request
.light[Client composes a request for the content to be downloaded.] * Response
.light[Server answers with status code (OK, ERROR...) and possibly additional data.]] .pull-right[ **Hypertext Transfer Protocol (HTTP)**: .center[  ] ] --- # Service Naming An **IP address** is needed to find a server on the Internet. * What web page is hosted at `216.58.205.100`? -- IPs are difficult to remember. Services are indentified by **domain names**. * What web page is behind `youtube.com`? -- .pull-left[ **.fa.fa-fw.fa-book[] Domain Name Service (DNS)**:
.light[(a.k.a the Internet yellow pages)] * Translation from names to IPs. * DNS servers make the translation. ] .pull-right[ .center[  ] ] .clear[] -- .alert.alert-info[ Don't have an DNS resolving server in your local network? Use [quad9.net](https://www.quad9.net/)! ] --- # Variable Link Conditions .pull-left[ On the Internet, available resources are not guaranteed to the client and they might change due to... **.fa.fa-fw.fa-wifi[] Wireless Communication**
.light[Fluctuations in link characteristics (e.g. due to interference, shadowing, mobility).] **.fa.fw-fa.fa-truck[] Congestion**
.light[Sending more than a link can handle results in slow download or even losses.] **.fa.fa-fw.fa-chart-pie[] Resource Sharing**
.light[Applications should be fair to others and reduce their throughput on a shared link.] ] .pull-right[ .center.fair-sharing[ .small[[Source](https://biblio.ugent.be/publication/8552455/file/8552457.pdf)] ] .center.fair-sharing[ .small[[Source](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.153.3152&rep=rep1&type=pdf)] ] ] --- # DASH .pull-left[ * Dynamic Adaptive Streaming over HTTP (**DASH**). * HTTP protocol is used to request the video segments. * **Objective**: Best possible quality for available resources. * Compression at different bit rates to overcome throughput fluctuations. * Segmentation to switch across different bit rates. * Video buffer to avoid stopping the playback if slow download. ] -- .pull-right[ * Users complain about... * long time to load the video. * video suddenly stoping. * low video quality. * many quality changes. .center[  .small[[Source](https://www.researchgate.net/profile/Tobias_Hossfeld/publication/271524253_A_Survey_on_Quality_of_Experience_of_HTTP_Adaptive_Streaming/links/55f4224e08ae63926cf2688f/A-Survey-on-Quality-of-Experience-of-HTTP-Adaptive-Streaming.pdf)] ] ] --- class: center, middle # Video Streaming on the Internet ### Data Transport --- # Data Transport * Process-to-process data transport. * **Ports** identify the process the data should be givent to, among all the processes running on a machine. * **TCP** protocol used by DASH (and most Internet applications). * TCP provides reliable transport on the Internet. To do so it implements... * **Congestion control**. Avoid sending more data that the link can transmit and share links in a fair manner. * **Flow control**. Do not send more data than the receiver can process. * **Error control**. Detect and correct the errors introduced by the channel. --- # Congestion Control .pull-left[ .center.congestion[ ].small[Modified Diagram ([Original Source](https://www.gizmodo.com.au/2017/04/nbn-congestion-is-forcing-isps-to-build-their-own-private-networks/))] ] .pull-right.negative-vspace[  ] -- .pull-right[ **.fa.fa-fw.fa-cogs[] Solution** Transport layer can implement congestion control to... * ... avoid lost packets due to buffer overflows. * ... avoid slow downs by not exhausting maximum data rate. * ... ensure fair share of data rate. ] ??? Time: 5m As traffic jams slow down traffic, this also happens on the Internet to packets. --- # Flow Control .pull-left[ **.fa.fa-fw.fa-lightbulb[] Motivation** * End-point resources are limited (receive / send buffers). * Applications consume transport layer buffer, but on demand and not guaranteed. * Transport layer cannot handle more packets than fit in the buffers, hence: * Sending more packets is wasted effort as receiver will discard. * Accepting more packets from application layer is impossible. ] .pull-right.negative-vspace[ ] -- .pull-right[ **.fa.fa-fw.fa-cogs[] Solution** * Peers communicate their buffer sizes and fill levels via feedback. * Rate control algorithms slow down or stop sending of packets when buffers are filled. * Upon exhaustion of sending sides buffer, the application is informed and has to deal with it. ] ??? Time: 4m Draw on board. --- # Error Control .pull-left[ * **Automatic Repeat reQuest (ARQ)**: Send data again if losses are detected. * ACK message to acknowledge data arrived. * Timeout to detect data was lost. * **Forward Error Correction (FEC)**: Add extra data that helps reconstruct the original message if errors appear. ] .pull-right[  ] --- class: center, middle # Video Streaming on the Internet ### Addressing --- # A Typical Network  ??? A typical network such as the Internet consists of **many interconnected nodes**. However they are **not directly connected to each other** (i.e. our **network graph is not complete**). --- class: routing # Routers Functions .pull-left[ ## Forwarding * Move data from an input link to an output link.  ] .pull-right[ ## Routing * Find out to which output link data needs to go.  ] .clear[] -- .pull-left[ * Node-level process of moving data from one link to another ] .pull-right[ * Network-level process to determine the path of of the data. ] .clear[] .alert.alert-info.center[ A network device forwarding data from one link to another is called a **Router**. ] ??? The network layer provides two important functions, **Routing** and **Forwarding**. **Forwarding** is the process of moving data from one link to another. This process is limited to one specific network device. **Routing** is the process of finding a path or route through the network as a whole. Routing uses knowledge about the structure of the network to find a path from the source of a data packet to the destination. Depending on the type of network and its configuration this can happen in different ways. .clear[] .alert.alert-info[ .center[**Think about traveling by car.**] **Forwarding:** Changing the highway at an intersection.
**Routing:** Looking at the map to find the sequence of intersections to use. ] --- # The Internet Protocol .small[(Version 4)] .alert.alert-info[ * Address nodes in the Internet * **32 bit** addresses * Referred to as **IPv4** * Provides **connectionless** Datagram Service * An IP datagram is called a **packet** ] ### Example Addresses and Notation: | Decimal (Dotted Quad) | Binary | | --------------------- | ----------------------------------- | | 134.96.1.69 | 10000110 01100000 00000001 01000101 | | 192.168.1.2 | 11000000 10101000 00000001 00000010 | | 224.0.0.1 | 11100000 00000000 00000000 00000001 | ??? IP version 4 is the dominant protocol of the Internet. First standardized in 1978 it is to this day responsible for addressing hosts on the Internet and forwarding datagrams through the network. It only offers a **connectionless** datagram service (If required **connection-oriented** service can be provided provided by the **transport layer**). As seen in our generalized datagram model, every packet carries the destination and source address of the end-systems involved. For convenience (i.e. because humans are not usually fluent in binary) **different representations** are in use.
By far the most common is the **dotted-quad** or **dotted-decimal** notation. The binary representation of the address is split up into bytes. The resulting four bytes are then converted into their respective decimal value and separated from each other by a dot. The hex representation is less common, but is sometimes used in professional network equipment or in source code. --- # IPv4 | Subnets  .alert.alert-info[ * The Internet is **made up of subnets** * Network devices **determine whether to use a router** based on the **prefix**
.fa.fa-fw.fa-arrow-right[] **Every device** has to know the **prefix length of its subnet** ] --- # IPv4 | Subnets IP addresses are split up into a .red[**network part**] and a .correct[**host part**] ### CIDR Notation .small[(Classless Inter-Domain Routing)] .alert.alert-info.center[ .bigger[192.0.2.1**/24**]
IP Address Prefix length ] -- .alert.alert-info.center[ .red[**11000000 00000000 00000010**] .green[00000001]
.red[**11111111 11111111 11111111**] .green[00000000] ] -- ### Subnet Mask Notation .alert.alert-info.center[ .bigger[192.0.2.1**/255.255.255.0**]
] --- # IPv4 | Subnets ### A subnet can be divided into further subnets .row.middle.alert.alert-info[ .col-3.right-aligned[ 192.0.2.0/24 ] .col-3.center-aligned[ .fa.fa-long-arrow-right.fa-2x[] ] .col-3[ 192.0.2.0/26
192.0.2.64/26
192.0.2.128/25
] .pull-left.center[ .small[.red[**11000000 00000000 00000010**] .green[00000000]] ] .pull-right.center[ .small[.red[**11000000 00000000 00000010**] **00**.green[000000]]
.small[.red[**11000000 00000000 00000010**] **01**.green[000000]]
.small[.red[**11000000 00000000 00000010**] **1**.green[0000000]] ] .clear[] ] -- ### Multiple subnets can be aggregated to a supernet .row.middle.alert.alert-info[ .col-3.right-aligned[ 192.0.2.0/28
192.0.2.16/28
...
192.0.2.240/28
] .col-3.center-aligned[ .fa.fa-long-arrow-right.fa-2x[] ] .col-3[ 192.0.2.0/24 ] ] --- # Quiz **.fa.fa-fw.fa-question-circle[] How many addresses are in the subnet 134.96.1.0/29?** .pull-left[ .alert.alert-info.option[ **A:** 8 ] .alert.alert-info.option[ **C:** 32 ] ] .pull-right[ .alert.alert-info.option[ **B:** 16 ] .alert.alert-info.option[ **D:** 64 ] ] -- **.fa.fa-fw.fa-warning[] Answer:** .pull-left[ .correct[.fa.fa-fw.fa-check[] A: Yes. Because $2^{32-29} = 2^3 = 8$.] .wrong[.fa.fa-fw.fa-times[] C: Colder.] ] .pull-right[ .wrong[.fa.fa-fw.fa-times[] B: Cold.] .wrong[.fa.fa-fw.fa-times[] D: Ice Cold.] ] --- # Wrap-Up #### .fa.fa-fw.fa-home[] Take-Home Messages * **Communication** is about exchange of **information**. * **Networks** are used to provide **services** that follow **protocols**. * We learned about many layers of the ISO/OSI model: * .fa.fa-fw.fa-bolt[] **1 - Physical**: Wires, wireless, mobility. * .fa.fa-fw.fa-link[] **2 - Link**: Conveyor belt and resource sharing. * .fa.fa-fw.fa-share-alt[] **3 - Network**: Forwarding, routing, addressing. * .fa.fa-fw.fa-truck[] **4 - Transport**: Process-to-Process data transfer. * ... * .fa.fa-fw.fa-shopping-cart[] **7 - Application**: HTTP, DASH, NetFlix. --
.fa.fa-fw.fa-blind[]
8 - User
(sometimes refered to when talking about human errors)
-- **.fa.fa-fw.fa-exclamation-triangle[] Action Points** * Download the task sheet slides and these deck at https://bit.ly/2xRzZwU * Boot your PC, Jupyter and start hacking. -- .questions[ Questions? ]