main
July 7th, 2010    

CIS 748 & CIS 49.2
Main
Files
Syllabus
Links
Homeworks


Notes
0001

Networking PDFs
Intro
LAN Intro
Topologies
Comp Networks
Layers
Signals
Medium
Line Coding

DNS
E-Mail
Sockets
HTTP

MAC Layer
LLC Layer
Flow Ctrl
Err Detect
Err Correct
Ethernet
Token LAN
Multiplex
WAN Arch
Dist Sys
P2P
Security
Misc

Unrelated

Non-Class Stuff
Gen Prog
codegen.zip
PHP (src code)
C# DB (src code)
More C# DB (src code)

Quizes
20080903
20080910
20080917
20080924
20081029 (748 midterm)
20081031 (49 midterm)
Samples
20081208 (rmi example)

Homeworks

You should EMAIL me homeworks, alex at theparticle dot com. Start email subject with "CIS748" or "CIS49".

CIS49 & CIS748 HW# 1 (due by 2nd class; not accepted after 20080918): Email me your name, prefered email address, IM account (if any), major, and year.

CIS49 & CIS748 HW# 2 (due by 3rd class; not accepted after 20080918): Write an Internet page grabber program in C programming language. Your program should work similarly to UNIX program ``wget'' (only much simpler). Read the description of `wget' online. You specify a URL at command line, and your C program connects and downloads a web-page. Tip: Internet search engine is your friend. Submit the program source code (ie: .c file). [hw2 hint Another hint: if you're doing this on Ubuntu, and can't find documentation for functions via "man" command, run this: apt-get install manpages-dev, which will install the linux programmer's manual pages; you'll be able to do: man gethostbyname to get documentation for the function, etc.].

CIS49 & CIS748 HW# 3 (due by 4th class; not accepted after 20080924): In any language of your choice (I suggest C, but you're free to use anything you're comfortable with), write a `telnet' client. Your program should work identically to the telnet client installed on your computer. Note that this is simpler than HW2; you open a socket to the destination, and write to socket whatever user enters, and display whatever you read from socket.

CIS49 & CIS748 HW# 4 (due by 5th class; not accepted after 20081001): In any language of your choice, write a network scanner. Your program will accept startip and endip (ie: ip addresses) as two command line parameters. Your program will loop for every IP address in that range (IP address is just a 32bit integer), and for every port between 1 and 64k, and attempt to make a TCP connection. If the connection succeeds, your program outputs IP and port (and doesn't output anything otherwise). Your program is similar in spirit to `nmap'; though nmap is quite a bit more efficient than what's described here.

CIS49 & CIS748 HW# 5 (due by 6th class; not accepted after 20081020): In any language of your choice, write an NTP client. NTP is Network Time Protocol. Your program sends a UDP packet to the server. The server responds with a similarly formatted UDP packet with the current time. A public ntp server is: pool.ntp.org. This homework is part research part programming. Research part: Find the NTP specification, and determine what the UDP packet format is. Programming Part: Write a program to send the packet and recieve a response. When your program is executed, it will output the current time (recieved from NTP server) to standard output, in ``Wed Sep 24 07:29:23 EDT 2008'' format, (Note that since you're using UDP, not all packets will get through---so you might need to run the program a few times in order to get the correct time). You can lookup the format for the to/from message in NTP RFC (google for it)---the format is pretty simple. Your program should work similar to the unix utility ``ntptime''; [hw5 hint]

CIS49 HW# 6 (due by 20081031; not accepted after 20081107): In any language, build a DNS client. This is similar to HW5. Accept hostname as command line argument. Construct a UDP packet with hostname, and send it to a DNS server. Recieve a UDP packet as response, and display the IP address on standard output. Note, your program must not use any DNS libraries (such as `gethostbyname' functions, etc.). ie: In this homework, you are writing your own DNS library.

CIS748 HW# 6 (due by 20081031; not accepted after 20081107): You are in charge of designing the networking piece of an online game. The game is interactive, and may have thousands of simultanious users. Think Quake or Doom, or WoW. Design (not code) the networking logic: it has to be detailed enough for developers to code from. You need to indicate what protocol, and how it will be used (how many threads, servers, clients, etc.). Reliability, etc. UDP or TCP? Client-Server or P2P? You may outline the logic via pseudo code. Note that these aren't bank transactions---it is ok to sometimes sacrifice speed for accuracy. Write out a few paragraphs, and email them, etc. Your job is to convince me your approach will work (before the company spends development resources to implement it).

CIS49 & CIS748 HW# 7 (due by 20081119; not accepted after 20081126): In any language of your choice, implement the Hamming(7,4) code. You will need 2 programs: Program1 will read standard input, and for every 4 bits of input, it will output to standard output one byte, with 7 bits set according to the Hamming code. Program2 will do the reverse: read standard input and for every byte, output 4 bits (ie: it will need to read 2 bytes, and output 1 byte, etc.). To test, you should be able to do: "cat somefile.txt | program1 | program2", etc. You can also write a randomizer program, that reads bytes from standard input, randomly flips 1 bit in each byte, and outputs that. Your hamming programs should correctly fix that bit flip.

CIS49 & CIS748 HW# 8 (due by 20081211): Build a chat server and a chat client (command line based) using RMI (java) or .NET Remoting (C# or VB.NET). [tip: rmi example



































© 2006, Particle