CS75 Network Protocols
David Morgan
Santa Monica College

Administrativa

Syllabus

Grade reports

Course outline

Zoom meeting recordings

Homework schedule


General Information

RFC lookup

TCP/IP Pocket
Reference Guide
 - IPv4 version
 - IPv6 version

"ip" command doc

Network calculators:
  here's one
  and another


Protocol RFCs

datalink
 - ppp

network
 - icmp
 -  ip
 -  ipv6

transport
 -
tcp
 - udp
 -
sctp

application
 -
echo
 - discard
 - chargen
 -
tftp
 - dhcp

other
 -
ssh
 - ip over ip

 

 


 



WINTER 2022
Section 1196 online

This Website (http://classpage.dmorgan.us/cs75/cs75.htm) will be used to communicate with you. Announcements, grade reports, and assignments will be posted here. The site can be viewed from an internet-connected browser anywhere. You are responsible for awareness of the information posted here.

Homework #12 - protocol evolution
listen - course outline section 14 link entitled "httpd & spdy"
nothing to turn in
(2/8)

Homework #11 - TCP 2nd look
listen - to the resources in course outline sections 9-12 at the various links 
entitled:
 "Principles of Reliable Data Transfer"
 "Connection-oriented Transport: TCP"
 "TCP Part 1 - Getting Connected"
 "Principles of Congestion Control"
 "TCP Congestion Control"
 "tcp traffic control"
 "Retransmission Timeout Problems"
 "Out of order segements" 
 "TCP Pt.3 - Necessary Refinements"
in that suggested order.
view - course outline section 12 Homework column link entitled "simulation, 
congestion avoidance phases"
nothing to turn in
(2/8)

Homework #10
read - the "Use of the fork( )..." paragraph below
listen - the backgrounder  in course outline section 21 Reading column at link entitled "how processes get run"
do - exercise at link entitled "concurrent servers" in course outline section 21 Homework column.   due 2/11, upload to Canvas (2/7)

Use of the fork( ) system function without accompanying exec( ) to allow concurrent servers:

"There are two typical uses of fork:

"A process makes a copy of itself so that one copy can handle one operation while the other copy does another task. This is typical for network servers....

"A process wants to execute another program. Since the only way to create a new process is by calling fork, the process first calls fork to make a copy of itself, and then one of the copies (typically the child process) calls exec ... to replace itself with the new program. This is typical for programs such as shells."

   UNIX Network Programming, Stevens, Fenner, Rudoff, Addison-Wesley, 2004

Instructional emphasis is usually on the second use, where there is an exec( ) function call in the mix, along with the fork( ). But sometimes, you actually want the child to be a copy of the parent unchanged in terms of its code, not some other program. Network servers that want to be able to honor/handle/process multiple "hits" are a good example. They are programmed to be so-called concurrent, rather than iterative:

With concurrent service every connection gets its own process; and since you can have multiple processes, you can have multiple connections. All clients at the other ends of these connections will be receiving service simultaneously. Most real-world network servers are concurrent. When a website is being visited by five visitors for example, there are six copies of the serving program (perhaps apache). One program, six processes. Five of them are doing whatever the server does, for a single client. The other one is waiting (blocked at the accept( ) call) to hear from a further client that might ring the doorbell. (2/7)

Homework #9
listen - the five narrated slide presentation, links entitled "tunnels:..."  in course outline section 7 Slides column
do - [ !! scripts for this exercise will be provided tomorrow !!  scripts are now available, from link within exercise's instructions ] exercise at link entitled "tunneling" in course outline section 18 Homework column. 
What to turn in
for this is a file named "written-answers.txt" in which you answer the questions found in the assignment under the link entitled "Questions for you to answer".  due 2/7, upload to Canvas (1/31)

Homework #8
read
- selections in course outline section 7 Reading column
listen - narrated slide presentation, link entitled "tftp"  in course outline section 7 Slides column
do - exercise at link entitled "tftp" in course outline section 7 Homework column due 2/3, upload to Canvas (1/26)

Homework #7
read - Forouzan selection in course outline section 17 Reading column
do - exercise at link entitled "bridging" in course outline section 17 Homework column due 1/31, upload to Canvas (1/24)

Homework #6 - I wonder - how many plans have gone bad?
                 what happens when a UDP client talks to a server that isn't there??
                 what happens when a TCP client talks to a server that isn't there???
Don't you?
do - exercise at link entitled "port behavior" in course outline section 4 Homework column due 1/28, upload to Canvas (1/24)

Homework #5
listen - the 13-minute Jim Kurose segment on ipv6 in course outline section 3 Homework column.
do - exercise at link entitled "ipv6 address autoconfiguation" in course outline section 3 Homework column. due 1/26, upload to Canvas  (1/21)

Homework #4
do - exercise at link entitled "clientserver-socket types" in course outline section 13 homework column. It extends an earlier foundation exercise performed in the CS70 course. If you did not take CS70 please first listen also to the slide lectures at the links entitled "part1" and "part2".The product of doing the exercise is three packet capture files. Produce and hold the files. I will later let you know what to do further.
  
==> screenshot file due 1/23, upload to Canvas (posted 1/20)
read - the selections from Forouzan chapters 13 and 14 related to udp, and chapters 26 and 27 related to ipv6, which appear in the course outline sections 3 and 4's Reading column. This is a lot of material. For the ipv6 chapters in particular, you need not read them for mastery. You should read them over to see what they contain, and to become exposed to what the issues are concerning this protocol. You should read the udp and transport layer related chapters more closely.  (1/18)

Homework #3
read - the Forouzan selection on NAT in course outline section 3 Reading column.
listen - the 7-minute Jim Kurose segment on NAT in course outline section 3 Homework column
 do - "Network address translation" exericse in course outline section 3 Homework column due 1/18, upload to Canvas  (1/12)

Homework #2
Your homework is about a certain hands-on exercise that you are not to do. That's because you can't. You don't have the equipment to do it, nor will virtual machines work. So I must do it as a demonstration.
read - the exercise instructions, link entitled "ppp data-link protocol" in course outline section 2 Homework column.
watch - the exercise being conducted, link entitled "video demo" in course outline section 2 Homework column.
listen - YouTube video (6m), link entitled "null-modem cable"  in course outline section 1 Homework column.
listen - narrated slide presentation, link entitled "ppp protocol"  in course outline section 2 Slides column.
examine - the items in course outline section 2 Reading column. 
There is nothing to turn in. Completion due by 1/14.  (1/7)

Previous email "welcome messages" - these messages about this course were sent to all students enrolled at the time of sending, on December 10 and December 24. If you did not receive them (perhaps because you were not then enrolled yet) please read them now.
 December 10 message     December 24 message
 (posted 1/4)

A virtual machine (VM) for you - hands-on lab exercises will be performed on a virtual machine that you can run in your own computer. Familiarize yourself with this material.
- Obtaining and installing your VM
     direct link to fedora31-spring21.ova file on Google Drive
       video - historical help session about getting the VM environment up and running
 
- Your VM's configuration
- Transferring files in and out of it if necessary
     howto videos, per method:   network (13m)   usb (19m)   shared folder (16m)
- VirtualBox networking "complete guide" - a good website on the subject (1/4)

Homework - get infrastructure installed. Do, in the following order:
 install - VirtualBox (VB)
   per www.virtualbox.org
 import - into VB, my provided virtual machine (fedora31-spring21)
   per "Obtaining..." link above
 run - my scripts for producing "sniffing" experiment
   howto video: setting up experiments using provided scripts (26m)
  read - above link "Your VM's configuration" to learn your way around the VMs I have given you, once up and running. 
  install - the sock program in sniffing's CLIENT and SERVER VMs due 1/11, upload to Canvas
  read - sock's documentation
 do - "enable diagnostic protocols" in course outline section 6 Homework column due 1/11, upload to Canvas
 do - "exercise diagnostic protocols" in course outline section 6 Homework column due 1/11, upload to Canvas
 (1/4)

Assumed familiarity - this course assumes familiarity with networking at the level of a first networking course, such as the CS70 course I teach here at Santa Monica College. Two things from CS70 in particular we will extend in CS75. First, the main transport protocols, udp and tcp. Second, a pair of demonstration programs used in CS70 to model client-server computing (socket api). If you did not take CS70 you may well know about udp and tcp, but won't know about those demonstration programs. At your leisure early in this course, to prepare or review, you can avail yourself of this information on those topics:
udp - this recording from the 20:00-1:22:00 timing mark
tcp - the above recording continuing from 1:22:30 to 1:47:00,  followed by this recording
client-server demo programs - are described at the "part1" and "part2" lecture links in the course outline, section 13, homework column. We will modify the programs described there. (If you took CS70 you remember these programs.)

A Remote Unix system account is available for your use.

Using ssh (secure shell). ssh is an important tool you will use for interacting with remote computers. For that you will need an ssh client. There are a number of ssh client alternatives.

 


Eniac - 1946

Milestone in the history of computation

Did you get the 'L'?
 1969