CPSC 441 - Computer Networks
(T02 & T05)



Fall 2020

Instructor: Dr. Sina Keshvadi

References: D2L and Course's webpage

Here are contents (slides, video recordings, codes, etc.) for tutorials


Contents  

Session 22

This is our last tutorial session! We discuss security in computer networks and try to cover as much as possible from chapter 8 of the book: "Computer Networking: A Top-Down Approach". We talk about basic security concepts and the most common protocols and algorithms used in computer networks. We use the slide deck (pptx, pdf) provided by the book's authors. Topics that we couldn't cover due to our limited time and remain for students to study at their convenience include TLS, IPSec, Security in WiFi and Mobile networks, Firewalls and IDS, etc. To watch: T02 recording and T05 recording.

Monday, 07 December 2020

Session 21

This is a help session for assignment 4 and is dedicated to answering students' questions. One important concern that many have is about the "Poisoned Reverse" technique that they need to implement and explain it with an example in their PDF manual. They do NOT need to write code more than the "Poisoned Reverse". To watch: T02 recording and T05 recording.

Wednesday, 02 December 2020

Session 20

In this session, we talk about Ethernet and WiFi protocols, their appearance, evolution, and their standards. Different topologies and collision detection/avoidance algorithms are used that we overview. We also introduce the elements and frame structure for these protocols. Download the slides: Ethernet and WiFi. To watch: T02 recording and T05 recording.

Monday, 30 November 2020

Session 19

This session is the second of two sessions dedicated to the demo presentation of assignment 3. The instructions and details of these sessions are available on D2L and sent to the students via email.

Wednesday, 25 November 2020


Session 18

This session is the first of two sessions dedicated to the demo presentation of assignment 3. The instructions and details of these sessions are available on D2L and sent to the students via email.

Monday, 23 November 2020


Session 17

In this session, we once more expand our hands-on experience with Wireshark. We use "traceroute" on Linux/macOS and "tracert" on Windows to produce Echo Request packets. We capture these in Wireshark, analyze the process of the Traceroute, and study the Internet Protocol field of the Wireshark and all the information demonstrated there. We use traceroute (this time on Windows: "pingplotter" tool) to send big size Echo requests and see what happens in Wireshark with respect to fragmentation of the packets when they exceed the Ethernet frame's maximum default size. We then talk briefly about IP addressing, subnet masks, and the history behind them. We will continue with this topic in the following sessions, as it requires more time and practice to perceive fully. You can watch a selected recording here.

Wednesday, 18 November 2020


Session 16

This is the last help session for assignment 3, answering students' questions on both parts of the assignment. Then, for the time left of the session, we talk about some basic commands in the Linux terminal that are important and useful to know. To watch: T02 Recording and T05 Recording.

Monday, 16 November 2020


Session 15

In this session, we talk about Part 1 of Assignment 3. We first discuss the Internet Control Message Protocol (ICMP) and the Ping and Traceroute utilities that transmit ICMP packets (Echo Request and Echo Reply) to find and announce errors in the network, diagnose network issues, and identify network routes. We show how these tools work by a couple of examples. We then analyze the provided code for the server-side of the assignment (PingServer.java) and discuss how the client-side needs to be implemented to accomplish the ping tool's functionality by communicating to PingServer. To watch: T02 Recording and T05 Recording.

Wednesday, 4 November 2020

Session 14

In this session, we talk about Part 2 of Assignment 3. We demonstrate how to create a Google Cloud Virtual Machine (gcloud VM), have it running, and connect to it via SSH (Reference: Google Compute Engine Documentation). We then install "tshark" on that VM and start capturing packets with the appropriate options and in the suitable format (Reference: tshark Docs). Other minor notes and tips are given as well. Part 1 of the assignment will be discussed next session. To watch: T02 Recording and T05 Recording.

Monday, 2 November 2020

Session 13

This session is the second of two sessions dedicated to the demo presentation of assignment 2. The instructions and details of these sessions are available on D2L and sent to the students via email.

Wednesday, 28 October 2020

Session 12

This session is the first of two sessions dedicated to the demo presentation of assignment 2. The instructions and details of these sessions are available on D2L and have to the students via email.

Monday, 26 October 2020

Session 11

We go forward on Wireshark in this session and discuss the UDP packets captured. We find the UDP header fields and confirm what we have learned in theory with what we actually see within UDP packets in Wireshark. As an example for an application protocol that uses UDP, we discuss the DNS protocol, explain how a recursive resolver finds the answer to a DNS query, and how we can see all this in Wireshark. T05 recording is available and suffices to review what we have discussed.

Wednesday, 21 October 2020

Session 10

This session is the help session for assignment 2, a Q/A time for students to ask their questions. We also review some of our previously discussed concepts and demonstrate examples directly useful in this assignment. To watch: T02 recording and T05 recording.

Monday, 19 October 2020

Session 9

This session is the second of two sessions dedicated to the demo presentation of assignment 1. The instructions and details of these sessions are available on D2L and sent to the students via email.

Wednesday, 14 October 2020

Session 8

This session is the first of two sessions dedicated to the demo presentation of assignment 1. The instructions and details of these sessions are available on D2L and sent to the students via email.

Wednesday, 07 October 2020

Session 7

In this session, we continue with Java Networking by introducing more Java classes, URL, URLConnection, HttpURLConnection, InetAddress, DatagramSocket, and DatagramPacket. We run examples for each of these classes and look into Oracle's documentation for more possibilities. We also have a review of the differences between TCP and UDP. Available to download are the slides and the Java examples. Also available to watch are the T02 recording and T05 recording. Due to the time limit, we quickly passed over InetAddress and Datagram classes, especially in the T02 session, but rest assured that we will review them in the next session with more examples.

Monday, 05 October 2020

Session 6

The first half of this session is once again dedicated to answering the questions regarding assignment 1. Then we continue with the second tutorial on Wireshark, discussing HTTP packets. We try to understand better the structure of these packets and the information inside the headers. We briefly discuss the concept of HTTP packets segmentation into multiple TCP packets and check what happens when browsers use their cache while sending GET requests. You can download a trace of HTTP connections, and you can watch the T02 recording and T05 recording, as well.

Wednesday, 30 September 2020

Session 5

This session is a Q/A, dedicated entirely to assignment 1, to answer the student's questions. Furthermore, I try to describe the essential parts of the code where the students need to fully understand and fill in with appropriate lines so the program would work correctly. Picking up the proper methods of DataInputStream and DataOutputStream classes, as well as filling the parts where the responses are being read, are the keys to solving this puzzle. Students need to realize where the headers are being read/made and where the body is being read using a byte buffer. Read the documentation for String, DataInputStream, DataOutputStream, Socket, and ServerSocket classes on Oracle docs, for more information and the list of their methods. Watch the T02 recording and T05 recording.

Monday, 28 September 2020

Session 4

In this session, we continue on Socket Programming with more examples and briefly discuss the code of assignment 1. The next session, Mon, Sep 28, 2020, will be dedicated to discussing assignment 1, how to test run it, and the common problems. To download now: Java examples (+more), T02 recording, and T05 recording.

Wednesday, 23 September 2020

Session 3

In this session, we quickly review the essential Java I/O classes that can be useful in finishing assignment 1. We then discuss the Socket Programming concept and demonstrate how it can be implemented in Java by "java.net" package, using two coding examples. More about Socket Programming and coding samples are to be discussed next session. To download: slides, examples, T02 recording, and T05 recording.

Monday, 21 September 2020

Session 2

In this session, we use our CPSC accounts to connect to a Linux machine in the CS department via SSH and access our own storage space for future use. We also review a few basic commands in a Unix-based terminal. We then overview the basics of Java and talk more about Strings and I/O with multiple examples of the most common and important methods and features. You can download the slides, the ZIP file of samples, and the T05 recording.

Wednesday, 16 September 2020

Session 1

In this first lab session, students get acquainted with Wireshark, learn how to install it on their computers and make simple packet captures and observations. They also get to become familiar with its panels and basic features and, finally, try to answer a couple of basic questions. To download: slides and the T05 recording.

Monday, 14 September 2020