<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Computer Networks (2)</title>
<meta name="cours-n" content="2">
<meta name="author" content="Rémi Emonet">
<meta name="venue" content="DWA M1 WI/MLDM">
<meta name="date" content="2017">
<meta name="affiliation" content="Université Jean Monnet − Laboratoire Hubert Curien">
<style type="text/css">
.inlineimages img {display: inline !important; }
.slide .above {position:absolute; left: 20px; top: 20px; width: 760px; height: 460px; text-align:center;}
.above {z-index: 100 !important;}
</style>
<!--
<script src="deck.js/extensions/includedeck/load.js"></script>
<script src="extensions/slides-dev.js"></script>
-->
<script src="extensions/deck-packed.js"></script>
<script src="extensions/slides.js"></script>
<script>go()</script>
</head>
<body>
<div class="deck-container">
<div class="deck-loading-splash" style="background: black; color: chartreuse;"><span class="vcenter" style="font-size: 30px; font-family: Arial; ">Please wait, while our marmots are preparing the hot chocolate…</span></div>
<section class="smart">
# @chunk: chunks/title.md
# @chunk: chunks/objectives.md
## Today // higher level/latency/throughput + projects + maybe some tools?
- End of intro: latency, bandwidth, throughput
- About the projects {itproj}
- Some tools {ittools}
## Part 1: General Introduction {#plan overview}
- Goal
- have a tour of the main concepts
- that will be seen in details later
- Overview
- what is internet {it1}
- what is a protocol {it2}
- the network edge {it3}
- layers and encapsulation {it6}
- security {it7}
- some history {it8}
- the network core {it4}
- performance: latency, bandwidth, throughput, etc. {it5}
# @copy:#plan
<!-- bitrate, throughput, latency, etc -->
# @copy:#plan: %+class:inred: .it5
## Buffering/Queuing and Packet Loss
@SVG: media/part1/link-capacity-3.svg 800px 200px {svg}
- Cause
- input bitrates are greater than the capacity of the output link
- a temporary situation
- but long enough to fill the buffer ⇒ need to drop packets
- Effects
- delay due to the queuing
- necessity to handle (at higher levels) the loss
// ignore, resend, compensate (interpolate), ...
## Four Sources of Delay
@SVG: media/part1/link-delays.svg 800px 200px {svg}
- Sources of delay/latency
- $d_{proc}{}$ : < 1ms {a1}
- $d_{queue}{}$: depending on router congestion {a2}
- $d_{trans} = \frac{L}{R} = \frac{\text{size}}{\text{capacity}}$ {a3}
- $d_{prop} = \frac{d}{s} = \frac{\text{distance}}{\text{speed}}$ {a4}
- @anim: #analyze + .a1 | #file + .a2 | #transmission + .a3 | #propagation + .a4
## Exercise
- Total delay $d\_{total}{}$ includes $d\_{proc} + d\_{queue} + d\_{trans} + d\_{prop}{}$
- How much time does it take to transfer
- a single 125 kB packet
- over a 100 Mbps link
- supposing there is no congestion
1. To a computer in the classroom next-door?
1. To a computer in San Francisco? (~ 9000 km)
## Capacity, Bitrate, Throughput, Bandwidth
- Precise terminology
// but still fuzzy in the usage
- for a link: bandwidth == capacity == rate
- from a device to another
- transfer rate == throughput
- the actual throughput is upper bounded by the link capacity
- instantaneous throughput, average throughput
- Data transfer rates in a network{slide}
- analogy with fluids in some pipes
- @anim: .svg | #pipeview | #classical + #server | #clients | #rest
@SVG: media/part1/link-capacities.svg 800px 200px {svg}
<!-- PROJECTS -->
# @copy:#plan: %+class:inred:.itproj
# Projects {overview no-print}
## Projects {libyli}
- Subject
- peer to peer file sharing, kind of bittorent
- Phase 1
- github registration: done?
- group and team creation, sending an email
- name and github username (of each member)
- chosen programming language for the project
- deadline: **Tuesday, January 17th, 22h** // then I invite
- Phase 2
- distribution of the subject and meta-groups
- understanding of the subject
- creation of a protocol documentation (version 1)
- a clear specification document
- the protocol will mix text and binary
- deliverable: protocol document
## Projects
- Subject
- peer to peer file sharing, kind of bittorent
- Phase 1
- group creation
- Phase 2
- understanding of the subject
- creation of a protocol documentation (version 1)
- Phase 3 {libyli}
- implementation
- test
- documentation of possible evolutions
## Projects: evaluation and comments {libyli}
- Evaluation
- correct usage of git
- project that works
- proper understanding of the P2P architecture
- ability to exchange a file using P2P
- interoperability
- ability to exchange a file within meta-groups
- clean code, robust code, automated tests, …
- retrospective, …
- Advice
- *start today*
- specify also you file format for ".torrent" files
- communicate in your meta-group if you protocol changes are needed
- in the end
- tell what works
- explain if/how the protocol had to evolve
- explain how you tested the robustness
- compare the implementations
- …
<!-- TOOLS -->
# @copy:#plan: %+class:inred:.ittools
# Tools {overview no-print}
## Telnet: interactive connection
- Opens a TCP connection on a host+port
- Displays what is received
- Sends what is typed (on new line)
- Useful for quick testing of a simple text protocol
## Ping
- Measure the round-trip time to a host
- Allows to choose the size of the packets
- …
## Traceroute (or mtr)
- Measures the round-trip time to a host
- Measures it for each router between the computer and the destination
- Uses packets with a limited TTL
- Available online // or mira
- Possibility to see an approximate locate of routers on a map
- `mtr`
- continuous traceroute
## Nslookup: querying DNS servers
- Sends requests to name servers
- NB: DNS uses a binary protocol
- Ex:
- `nslookup gmail.com`
- `nslookup -querytype=NS gmail.com`
- `nslookup gmail.com ns1.google.com.`
- `nslookup -querytype=MX gmail.com`
- Possible interactive mode
- …
- Dig
- other tool to query DNS servers
## Whois: query the whois database
- Gets information associated to a domain name registration
- Also available online
## Wireshark: intercepts packets
- Traces all communications on a network interface
- Shows a graphical interface
- Allows to filter data for visualization
- Very useful to see encapsulated data
- …
</section>
<p class="deck-status" data-progress-size=": spe.top(10, 585) ; bottom: slide.top" style="z-index: 0; color: #339; background: #EEE;"> <span class="deck-status-current"></span> / <span class="deck-status-total"></span> − <span class="var-author">will be replaced by the author</span> − <span class="var-title">will be replaced by the title</span></p>
<a data-progress-size=": spe.top(15, 555); height: 45*designRatio; left: slide.right - 70*designRatio; width: 70*designRatio" class="ccby" href="http://en.wikipedia.org/wiki/Creative_Commons_license" title="This work is under CC-BY licence." target="_blank"></a>
<a class="ujm" data-progress-size=": spe.top(15, 525); height: 65*designRatio; left: slide.left; width: 130*designRatio" target="_blank"></a> <!-- shown only if with-ujm is set on the container -->
</div>
<!-- clicky Cla -->
<script type="text/javascript">
var clicky_site_ids = clicky_site_ids || [];
clicky_site_ids.push(100779706);
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = '//static.getclicky.com/js';
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/100779706ns.gif" /></p></noscript>
<!-- Histats.com START (aync)-->
<script type="text/javascript">var _Hasync= _Hasync|| [];
_Hasync.push(['Histats.start', '1,2767123,4,0,0,0,00010000']);
_Hasync.push(['Histats.fasi', '1']);
_Hasync.push(['Histats.track_hits', '']);
(function() {
var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true;
hs.src = ('http://s10.histats.com/js15_as.js');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs);
})();</script>
<noscript><a href="http://www.histats.com" target="_blank"><img src="http://sstatic1.histats.com/0.gif?2767123&101" alt="javascript hit counter" border="0"></a></noscript>
<!-- Histats.com END -->
</body>
</html>