Date post: | 19-Dec-2015 |
Category: |
Documents |
View: | 214 times |
Download: | 1 times |
Administrivia
From [email protected] Thu Nov 8 12:05:31 2001
Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST)
From: [email protected]
no goodies for you
just a lump of coal
Administrivia
From [email protected] Thu Nov 8 12:05:31 2001Return-Path: <[email protected]>Received: from Princeton.EDU (postoffice.Princeton.EDU [128.112.129.120]) by upright.CS.Princeton.EDU (8.11.6/8.11.6) with ESMTP id fA8H5QQ29528 for <[email protected]>; Thu, 8 Nov 2001 12:05:31 -0500 (EST)Received: from yuma.Princeton.EDU (yuma.Princeton.EDU [128.112.128.89]) by Princeton.EDU (8.9.3/8.9.3) with SMTP id MAA29199 for dpd; Thu, 8 Nov 2001 12:04:36 -0500 (EST)Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST)From: [email protected]: <[email protected]>Status: RO
no goodies for youjust a lump of coal
Why the internet works
• TCP/IP• Other protocols
– http– Smtp
• Lots of means of testing and seeing the network– Traceroute (on UNIX) (tracert on windows)– ping– www.arin.net (whois command)– www.caida.org (who sees who)
• http://www.caida.org/projects/internetatlas/gallery/ascore/demo.xml (step by step)
When things go wrong
• Code-red virus– On July 19, 2001 more than 359,000 computers were
infected with the Code-Red (CRv2) worm in less than 14 hours. At the peak of the infection frenzy, more than 2,000 new hosts were infected each minute. 43% of all infected hosts were in the United States, while 11% originated in Korea followed by 5% in China and 4% in Taiwan. The .NET Top Level Domain (TLD) accounted for 19% of all compromised machines, followed by .COM with 14% and .EDU with 2%. We also observed 136 (0.04%) .MIL and 213 (0.05%) .GOV hosts infected by the worm.
– Visualization
The Internet
• Where did it come from
• How has it grown
• Who owns the internet
Internet, as we know it
• 1960’s DoD built ARPANET– Experimental network
– Would function even in event of nuclear war
• 1985 NSF created NSFNET– Based on ARPRANET
– National backbone service
– Free to educational and research institutions
– Corporations (eg Sprint, MCI) built networks • Networks linked to NSFNET
Internet, as we know it (cont.)
• 1993 InterNIC created by NSF– directory and database services (AT&T)
– registration services (Network Solutions Inc.)
– information services (General Atomics/CERFnet)
• 1989 http created by Tim Berners-Lee – Released to high energy physicists in 1991
– Mosaic in 1993
– Netscape in 1994
Internet – key events
• 1961 Kleinrock – packet-switching theory
• 1966 Roberts – Plan for ARPANET
• 1969 – First ARPANET
With much help from Hobbes' Internet Timeline http://www.zakon.org/robert/internet/timelineCopyright (c)1993-2000 by Robert H Zakon.
First packets sent by Charley Kline at UCLA as he tried logging into SRI. The first attempt resulted in the system crashing as the letter G of LOGIN was entered. (October 29)
Internet – key events (cont.)
• 1973 – Ethernet invented– Email is 75% of ARPANET traffic
• 1974– TCP designed
• 1978– TCP split into TCP and IP
• 1980– First virus
Internet – key events (cont.)
• 1983– First nameserver– Cut over to TCP/IP
• 1984– DNS (Domain Name System) introduced
• .com, .edu, …
– Number of hosts above 1000
• 1988– CERT (Computer Emergency Response Team) formed
in response to Morris worm
Internet – key events (cont.)
• 1989– Number of hosts above 100,000
• 1990– ARPANET ceases to exist
• 1993– Mosaic; WWW proliferates at a 341,634% annual growth rate
of service traffic
• 1994– 25th anniversary of ARPANET
Growth in number of hosts
Growth in number of domains
Growth in number of networks
WWW Growth
Who owns the internet?
• Central organizations– InterNIC and its successors (for names)– ISP’s for transportation
• The networking community– Setting and following standards
• IETF (Internet Engineering Task Force)• W3C (World Wide Web Consortium)
– Network managers
Who owns the internet? (cont.)
• We all do– Information wants to be free– A lot of good social behavior is required
What happens next?
• Various scenarios…– Which one do you believe?
Networking (conclusion)
• At the bottom– Hardware generating packets– Protocols for packet transmission– Collision, backoff, …
• In the middle– TCP/IP is the key idea
• At the top– Some nice tools
• Ping, traceroute, … are useful
– Ports on my machine for http, ftp, fingerd, ping, …
A few questions
• What does it mean to be connected to the internet?– How is the web different from the internet?
• What about security?– Child security in chatroom– Would/should you give a credit card number
• What’s next?
Programming
November 13, 2001
Where we are
• Built a machine
• Built an operating system to control the machine
• Now, want to run programs under the operating system
What is programming
• We did machine language– Single instructions that tell the hardware what to do
– Primitive• Arithmetic, simple branching, communication with memory
• We built state machines– States using memory– Transitions modeling tasks
Problem solving
We’ve seenTruth tables
Logic gates
States and transitions in a state machine
Machine language
Now, higher level programming language
To build a computer program
• Figure out what you want to do– Understand the rules that guide the process you
are automating• Make sure that your rules are complete
• Translate the rules into the computer language– Build structures to hold your data– Build tools to manipulate them
• Make sure that the program does what the rules say
Figuring out the rules
• For traffic lights, – We stored data that told us the current color of lights
– We read input from sensors
– We had rules that told us whether to change state
– We had rules that told us how to change state
Light
ATraffic Light Behavior
IF A=1
AND B=0
Always
IF A=0
AND B=1
Otherwise
Light BOtherwise
Always
Turn Memory Into Variables
• Store data to tell current color of lights– Dim LightA, LightB as Integer
• ‘ 0 for red, 1 for yellow, 2 for green
• Read input from sensors– Dim SensorA, SensorB as Integer
• ‘ tell if cars are waiting
Turn Rules Into Statements
• Decide whether to change state– If LightA = 2 And SensorA = 0 And SensorB = 1 Then
• ‘ here we want to specify that the colors change
– If LightB = 2 And SensorA = 1 And SensorB = 0 Then• ‘ again, we want to specify that the colors change
Build shell of program
Dim LightA, LightB as Integer Dim SensorA, SensorB as Integer If LightA = 2 And SensorA = 0 And SensorB = 1 Then
ChangeGreenToYellow(LightA)ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)
If LightB = 2 And SensorA = 1 And SensorB = 0 ThenChangeGreenToYellow(LightB)ChangeYellowToRed(LightB)ChangeRedToGreen(LightA)
Some Rules
• Statements have to be in blocks• How does the computer know that it is
If LightA = 2 And SensorA = 0 And SensorB = 1 ThenChangeGreenToYellow(LightA)ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)
• And NotIf LightA = 2 And SensorA = 0 And SensorB = 1 Then
ChangeGreenToYellow(LightA)
ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)
Some Rules
• Statements have to be in blocksIf LightA = 2 And SensorA = 0 And SensorB = 1 Then
ChangeGreenToYellow(LightA)
ChangeYellowToRed(LightA)
ChangeRedToGreen(LightB)
End If
More Rules
• We have to tell the program to loopDo While condition
action Loop
More Rules
• We have to tell the program to loop
Do While StillWantToControlTraffic RunMyTrafficControlProgram
Loop
Procedures
• Must fill in functions to change lightsPrivate Sub ChangeGreenToYellow(Light As Integer)
Light = 1End SubPrivate Sub ChangeYellowToRed(Light As Integer)
Light = 2End SubPrivate Sub ChangeRedToGreen(Light As Integer)
Light = 0End Sub
Could build Procedure of Procedures
ChangeGreenToYellow(LightA)ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)
Could become the command ChangeLights(LightA,LightB)
Private Sub ChangeLights(Light1 As Integer, Light2 As Integer)
ChangeGreenToYellow(Light1)
ChangeYellowToRed(Light1)ChangeRedToGreen(Light2)
End Sub
Using the procedure
ChangeLights(LightB,LightA) then does
ChangeGreenToYellow(LightB)
ChangeYellowToRed(LightB)
ChangeRedToGreen(LightA)
The program
Private Sub ChangeGreenToYellow(Light As Integer)Light = 1
End SubPrivate Sub ChangeYellowToRed(Light As Integer)
Light = 2End SubPrivate Sub ChangeRedToGreen(Light As Integer)
Light = 0End SubPrivate Sub ChangeLights(Light1 As Integer, Light2 As Integer)
ChangeGreenToYellow(Light1)
ChangeYellowToRed(Light1)ChangeRedToGreen(Light2)
End Sub
The program (cont.)
Dim LightA, LightB as Integer
Dim SensorA, SensorB as Integer
If LightA = 2 And SensorA = 0 And SensorB = 1 Then
ChangeLights(LightA,LightB)
End If
If LightB = 2 And SensorA = 1 And SensorB = 0 Then
ChangeLights(LightB,LightA)
Make it happen forever
Dim LightA, LightB as Integer
Dim SensorA, SensorB as Integer
Dim StillWantToControlTraffic as Integer
StillWantToControlTraffic = 1
Do While StillWantToControlTraffic If LightA = 2 And SensorA = 0 And SensorB = 1 Then
ChangeLights(LightA,LightB)
End If
If LightB = 2 And SensorA = 1 And SensorB = 0 Then
ChangeLights(LightB,LightA)
End If
Loop
What could go wrong?
• Program could get confused– Check for consistency
• ReplacePrivate Sub ChangeGreenToYellow(Light As Integer)
Light = 1End Sub
• WithPrivate Sub ChangeGreenToYellow(Light As Integer)
If (Light = 0) ThenLight = 1
ElseReportInconsistency()
End IfEnd Sub
Building a bigger program
• Could write this as a subroutine– Private sub
ControlTrafficLight(light1,light2,sensor1,sensor2)
• Could reuse the subroutine to do a whole string of lights.
• But how would we keep track of hundreds of lights?
Arrays
• Build arrays– LightNS[1], LightNS[2], LightNS[3], …– LightEW[1]. LightEW[2]. LightEW[3], …– SensorNS[1], SensorNS[2], SensorNS[3], …– SensorEW[1], SensorEW[2], SensorEW[3], …
Arrays (con’t).
• Keep track of things in arrayControlTrafficLight(lightNS[i],lightEW[i],sensorNS[i],sensorEW[i])
• Control all the traffic lights in ManhattanFor i = 1 To 100
ControlTrafficLight(lightNS[i],lightEW[i],sensorNS[i],sensorEW[i]) Next i
• But, – lights may want to communicate
– Light at an intersection carries more information
Object oriented programming
• Figure out characteristics of your data– objects
• Figure out operations you will want to perform – Methods
• Modern idea in programming.
Objects
• Traffic light at intersection involves– Lights in each direction
• Call them red, yellow and green and not 0,1,2
– Sensors in each direction– Timing (rate of change in each direction)
• Timings needn’t be the same
– Neighboring Lights• May affect change as much as sensors
Methods
• Method of querying color of light
• Method of changing color of light
• Method of scheduling a color change later
• …
What happens to the program?
• Compiled or interpreted– Eventually it gets translated into machine
language
• If compiled– Can store executable and run again
• If interpreted– Interpret each time it is executed
What does the compiler do?
• Identifies variables (need space in RAM)– Uses stores and loads to get values to registers
• Parses commands– Turns each command into a string of machine
language commands
• Sets things up for execution
History of Programming Languages
• Fortran (1954) for scientific • Cobol (1959) for business
• Algol (1958) more universal Fortran
• Lisp (1958) string/concept oriented
• APL (1960) formula oriented
History of Programming Languages
• PL/1 (1964) from Algol + Fortran
• Basic (1964) for everyone to use
• Simula (1967) combines with Algol to yield Smalltalk (1969) – object oriented
• BCPL B C (1971)
• Algol Pascal (1971) Modula 1,2,3,
History of Programming Languages
• C++ (1983) C with object oriented features– Often C is still used
• Awk (1978) Perl (1987) report generators– Web programming language
• Java (1991) object oriented and portable– Web applets, devices
• Visual Basic(1991) macros and programs– Core of Microsoft systems
What makes a good language
• Does the task you want
• Keeps you from making mistakes
• Supports debugging when you need it
• Has a strong tool kit
Next class
• Look at a bigger system
• Some internals of how the compiler works
• Some notable bugs
• How do we know if we’ve gotten it right?