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?
- Within an organization: by neighbor trading
- Within a large ISP: usually by sending link info
- Between ISPs: Border Gateway Protocol
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:
- email viruses
- network attacks on open ports
buffer overflow!
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)