Comp 150-001, TTh, 11:00-2:00, DH-339, Class 10

Computer Networks

Some supplemental notes can be found at http://cs.luc.edu/pld/courses/443/netnotes.html.

How Ethernet LAN works
    Addr lookup problem
    Connecting remote & dissimilar LANs

Question to keep in mind: how do we find destination addr?

Commmunication styles: peer-to-peer versus big-server

routing table take 1: Ethernet switches
    The name "packet-switched network"

Internet: TCP/IP

What IP tries to do:
    support interconnection
    best-effort service
    Routing & Addressing: two intertwined objectives
    IP addrs: net & host portions
        original class A, B, C
        modern "CIDR"
    routing tables take 2
        smaller
        administrative assignment

DNS

Details of DNS hierarchy, cache
    basic strategy: distributed name lookup
    cacheing
    domain-name registration

    How are tables built?
    Asymmetric routing


How we scale to large size
    backbone routing
    Internet 2: Now we have a "big" router table.

TCP: making a connection
    ports
    multiple connections to same port
    brief look at "sliding windows":
        multiple packets in transit

    Packet loss rates & VOIP

Firewalls
    organization firewalls
    pc firewalls

Home routers: mostly doing NAT
    What NAT is
    home linux routers

Network breakins:

Buffer Overflow Attacks

Smashing the stack for fun and profit.



Python

def collatz(n):
    count = 0
    while n!=1:
        if n%2 == 0: n=n/2
        else: n=3*n+1
        count += 1
    return count


index versus value: lab 3
    vals = map (collatz, range(1000))
    max(vals)
    vals.index(178)

map (function, list)
filter (function, list)
    [x for x in list if function(x)]
reduce(function(x,y), list)

face(): returns a LIST of drawing pieces? Each drawn with x.draw(w)?
    for x in L: x.draw(w)
Here's an example:

from graphics import *

def face(p):
   leyep = p.clone()
   leyep.move(-40, -20)
   reyep = p.clone()
   reyep.move(40, -20)
   nosep = p.clone()
   nosep.move(0,5)
   m1 = p.clone()
   m1.move(-35, 45)
   m2 = p.clone()
   m2.move(35, 45)
   mc = p.clone()
   mc.move(0,60)
   face = []
   face = face + [Circle(p, 100)]
   face = face + [Circle(leyep, 10)]
   face = face + [Circle(reyep, 10)]
   face = face + [Circle(nosep, 5)]
   face = face + [Line(m1, mc)]
   face = face + [Line(mc, m2)]
   return face;

w = GraphWin("pld", 400, 400)

for x in face(Point(200, 200)): x.draw(w)