CS2911
Network Protocols

Videos

Titles

Data encoding, part 1 (Click here to view video)

Revised: 31 August 2014

(1:45-6:43) I have removed 1's complement from the outcomes requirements. The rest of the video is still part of the class.

Time code Topic
00:00 Introduction
00:30 Importance of data encoding in network protocols and applications
01:00 Historical issues
01:45 Numeric encoding (unsigned, 1's-complement, 2's-complement)
06:43 Endian-ness (big, little)
09:33 Hexadecimal notation, powers of two
11:38 End

Data encoding, part 2 (Click here to view video)

Revised: 31 August 2014

Time code Topic
00:00 Introduction
00:40 Character encoding: Morse
01:35 Character encoding: Baudot-Murray
02:40 Character encoding: ASCII
04:29 Byte character sets, ISO-8859-X
07:23 Unicode
10:25 End

Data encoding, part 3 (Click here to view video)

Revised: 31 August 2014

Time code Topic
00:00 Introduction
00:30 Unicode encoding, UTF-8, UTF-16
01:52 Details of UTF-8 encoding
04:30 UTF-8 encoding example
06:54 Percent-hex encoding (e.g., URLs)
08:23 Percent-hex encoding procedure
10:36 Percent-hex URL encoding example
14:11 End

Introduction to packet switching (Click here to view video)

Revised: 09 September 2013

This video might come into play in Week 10 when we discuss the network layer.

Time code Topic
00:00 Introduction
00:30 Packet switching as an alternative to circuit switching
01:15 Sharing bandwidth dynamically by breaking data up into packets that travel through the network
03:00 Store-and-forward packet transmission
03:50 Packet reception, storage/queuing, transmission; channel data-rate effects; queue capacity
05:50 Routing and link/path selection, routing tables and dynamic re-routing
07:25 Delays in packet switching: propagation, queuing, processing, transmission
08:50 Packet loss: queue overflow, link and node failures
09:15 Data throughput

What is a protocol? (Click here to view video)

Revised: 12 September 2013

Time code Topic
00:00 Introduction
00:30 Protocol: dictionary definitions
01:08 Example: interpersonal communication protocol
03:00 Protocol characteristics: setup, requests, responses, termination (and alternative flows)
04:35 Definition of messages and interactions within a protocol
05:05 Protocol definition components

Principles of network applications (Click here to view video)

Revised: 13 September 2013

The audio quality for this video is not up to desired standards, and there are references to some videos on low-level network topics that you may not yet have viewed; sorry about that.

Time code Topic
00:00 Introduction
00:30 Building applications that make use of network services
00:50 Layers in a protocol stack, interface abstraction
01:59 Physical layer: moving data from one point to another
02:28 Link layer: low-level management of "frames" of data across a link
03:20 Network layer: managing routing through network nodes and links
04:58 Transport layer: moving application-level messages from sender to receiver (e.g., UDP, TCP)
05:40 Virtual circuits using TCP in the transport layer
06:10 Application layer: managing a particular type of data from one application to another across the network (HTTP, SMTP, IMAP, FTP)

Introduction to the Python programming language, part 1 (Click here to view video)

Revised: 12 September 2014

There are many web and other resources on Python, and these videos are only a limited introduction.

This video uses Python 2 instead of Python 3. Most of this video still applies in Python 3, but there are differences:
00:30-end Whenever you use print, you must put parenthesis around the arguments, just like with other function calls in Python.
02:20 raw_input in Python 2 has been replaced by input in Python 3
05:05 You no longer need to specify the character set of your source code in a comment at the top of a file. UTF-8 is assumed by default in Python 3.
05:30 The handling of UTF-8, Unicode, ASCII text, and raw bytes has changed significantly in Python 3
08:20 (again) The handling of UTF-8, Unicode, ASCII text, and raw bytes has changed significantly in Python 3

Time code Topic
00:00 Introduction
00:30 Python syntax, comments
01:00 Variable declaration and initialization, value output
01:50 Variables and value types
02:20 Python user input
03:10 String concatenation vs arithmetic addition
04:00 Using int() function
04:45 Simple python data types
05:05 Source code character set specification
05:40 UTF-8 vs ASCII character strings
06:15 String formatting using format() function/method
07:10 Integer division and exponentiation operator
07:30 Float and boolean values, variable naming convention
08:20 UTF-8 string length for non-ASCII characters
09:20 Python type() function and mention of duck typing
10:13 End

Introduction to the Python programming language, part 2 (Click here to view video)

Revised: 12 September 2014

This video uses Python 3 instead of Python 3. Most of this video still applies in Python 3, but the discussion of Unicode and UTF-8 (from 09:50 through the end) has changed significantly in Python 3

Time code Topic
00:00 Introduction
00:30 Lists and dictionaries
02:20 Control structures, if/elif/else statements
04:05 Iteration: for loops, ranges, conditional expressions
06:20 Break statements in loops
07:20 Functions: def statements
08:00 Main methods
09:00 None values
09:50 Unicode and UTF-8 processing
13:37 End

Python's Internal Encoding (Watch on VidGrid)

Posted: 7 September 2018

Request timeline for this video

Introduction to network programming in Python (Click here to view video)

Revised: 18 September 2014

This video uses Python 2 instead of Python 3. This video applies completely to Python 3 as well; just note that the data sent and received is a bytes object holding raw bytes, not a str string object holding characters, so you will need to use b'' instead of '' when you run this code.

Time code Topic
00:00 Introduction
00:30 Transport layer review (UDP, TCP)
01:10 Python socket class
02:25 UDP: sending
04:04 UDP: receiving
08:05 TCP: sending
08:50 TCP: receiving and server sockets
13:40 End

Introduction to HTTP protocol, part 1 (Click here to view video)

Revised: 19 September 2013

Time code Topic
00:00 Introduction
00:30 HTTP (HyperText Transfer Protocol)
01:10 "RFC" network protocol standards
01:55 HTTP client and server
02:37 HTTP and TCP, virtual circuit client/server connection
03:05 HTTP requests and responses
03:40 Persistent and non-persistent connections; single or multiple connections between a client and a server
04:45 HTTP message formats: request and response
05:25 Entity bodies in responses and requests
06:10 "Line" structure of HTTP messages and the HTTP line terminator
07:20 HTTP request line components: method, URL, protocol version
08:35 URL format in HTTP request, identifying a specific site within a server

Introduction to HTTP protocol, part 2 (Click here to view video)

Revised: 19 September 2013

Time code Topic
00:00 Introduction
00:30 HTTP header lines in a request
01:00 Header line format
01:30 Grammar used in HTTP message format specification
04:50 Parsing an example request header

Introduction to HTTP protocol, part 3 (Click here to view video)

Revised: 20 September 2013

(09:45-end) The Java programming issues discussed in this part of the video are closely related with the bytes/str distinction which is so important in Python 3

Time code Topic
00:00 Introduction
00:30 HTTP response message
01:30 Response status line
02:50 Classes of HTTP status codes
03:15 "Moved permanently" response
03:50 Response header lines
05:10 Response transfer encoding (e.g., "chunked")
06:00 Chunked transfer encoding in HTTP specification
06:35 Syntax for chunked transfer encoding
09:45 Java programming issues for HTTP data: buffering, "reading"
14:39 End

Introduction to DNS, Part 1a (Watch the video on VidGrid and Take the Quiz)

Revised: 29 September 2015

Time code Topic
00:00 Introduction
00:30 Address translation, DNS acronym
02:00 DNS servers, BIND software
02:45 DNS server capabilities, canonical names

Want more? Continue to the full video, Introduction to DNS, Part 1 (a-b)

Introduction to DNS, Part 1 (a-b) (Click here to view video)

Revised: 28 September 2013

Time code Topic
00:00 Introduction
00:30 Address translation, DNS acronym
02:00 DNS servers, BIND software
02:45 DNS server capabilities, canonical names (apologies for some text problems)
05:38 DNS server hierarchy, TLD, domain servers, hierarchical lookup
08:12 Local DNS servers, caching, stale data
11:08 DNS records: A, NS, CNAME, MX
12:22 DNS messages, UDP
13:53 End

Transport-layer protocols (Click here to view video)

Revised: 30 September 2013

Time code Topic
00:00 Introduction
00:30 Transport layer in protocol stack
00:55 Transport-layer protocols: UDP, TCP
01:20 UDP and TCP characteristics
01:45 Transport-layer protocols operate in connection endpoints
02:25 Segments that make up transport-layer messages
02:40 Network layer review, linking hosts, IP protocol
03:18 Multiple meanings of the term "datagram"
04:05 Relationship between transport and network layers, multiplexing and demultiplexing
07:15 End

Transport-layer multiplexing and demultiplexing (Click here to view video)

Revised: 30 September 2013

Time code Topic
00:00 Introduction
00:30 Transport-layer multiplexing
01:12 UDP datagram port usage: source, destination
03:00 "Reply" UDP datagram port usage
03:45 Simplicity of UDP port number addressing
04:15 TCP port usage introduction
04:55 TCP listening port considerations
05:30 TCP connection port assignment
06:15 Identifying the proper connection port on the server
07:40 TCP destination port as seen by client
08:20 Handling subsequent client traffic with connection port
09:00 TCP listening/connection port number translation table
11:01 End

UDP protocol (Click here to view video)

Revised: 23 October 2013

Time code Topic
00:00 Introduction
00:30 UDP protocol
01:27 UDP RFC 768
01:50 UDP message format
02:30 UDP source port and UDP reply
03:00 UDP destination port, message length
03:17 UDP checksum
04:30 UDP protocol characteristics
05:08 Why use UDP?
07:30 Use of UDP by DNS for two-way communication
08:10 UDP for streaming data
08:26 End

TCP protocol (Click here to view video)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

Email protocols (Click here to view video)

Revised: 10 October 2013

Time code Topic
00:00 Introduction
00:30 Email protocol summary
00:55 SMTP protocol, original SMTP use
01:28 "Today's" email transmission process
02:40 DNS MX record for destination server IP address
03:18 Email fetch protocols: POP, IMAP
03:55 POP vs IMAP for received message handling
05:30 IMAP with more than one email client device
06:05 Webmail client
06:45 IMAP selective access to email headers
07:19 End

Sending email (SMTP), old version (Click here to view video)

Revised: 28 August 2014

Time code Topic
00:00 Introduction
00:30 Sending email with SMTP
01:00 SMTP from originating client to server, between servers
01:58 SMTP protocol specification
02:40 SMTP evolution, types of data in email
03:16 SMTP standard (RFC) overview
03:50 SMTP access via Telnet
04:12 SMTP exchange: commands, responses
05:00 HELO/EHLO greeting
05:30 MAIL FROM command
05:55 RCPT TO command
06:25 DATA command
07:00 QUIT command
07:18 RFC 5322: email message headers
08:21 End

Sending email (SMTP), Part 1 (Click here to view video)

Revised: 15 October 2014

Time code Topic
00:00 Introduction
12:58 End

Sending email (SMTP), Part 2 (Click here to view video)

Revised: 15 October 2014

Time code Topic
00:00 Introduction
08:57 End

Delivering/receiving email (IMAP), Part 1 (Click here to view video)

Revised: 19 October 2014

Time code Topic
00:00 Introduction
00:30 IMAP mail delivery
01:06 Securing message delivery (IMAPS, IMAP STARTTLS)
03:40 IMAP operation, complexity
05:25 IMAP standards (RFCs)
06:55 IMAP RFC 3501
07:45 Python IMAP support options
09:03 Listing mailboxes with imaplib
12:23 Trace output from mailbox listing operation, protocol message format
14:22 End

Fetching email (IMAP) and Java email client library (Click here to view video)

Revised: 14 October 2013

Time code Topic
00:00 Introduction
00:30 IMAP protocol introduction
01:10 IMAP server folders
02:08 IMAP RFC 3501
02:40 IMAP commands and responses
03:15 Example IMAP session
03:40 Java client-side IMAP library - javax.mail
05:00 Java email classes and methods
06:00 Java email: folder traversal and naming
07:00 Java email: folder access
07:37 Java email: message access
08:31 End

Network-layer protocols and routers (Click here to view video)

Revised: 28 October 2013

Time code Topic
00:00 Introduction
00:30 Network layer in the protocol stack
01:00 Role of network layer
01:30 Forwarding and routing packets
02:11 Routers
02:45 Routing tables
03:15 Message buffers
03:50 Switching fabric and queuing in a router
04:58 Router queue buffer overflow and packet loss
05:35 Effect of large buffer sizes
06:03 Forwarding (routing) table loading
06:50 Routing protocols: RIP, OSPF
08:05 Dynamic routing table updates in case of network changes/outages
09:00 Dijkstra's shortest-path algorithms and spanning-tree algorithms
09:57 End

IP protocol (Click here to view video)

Revised: 29 October 2013

Time code Topic
00:00 Introduction
00:30 Internet protocol (IP) characteristics
01:09 IPv4 and IPv6
01:30 RFC 791 spec for IPv4
01:45 IP header format
02:45 Packet "time to live" - maximum number of "hops"
03:30 Header checksum
04:08 Source and destination IP addresses and address space limitations
05:34 End

IPv4 addressing and DHCP (Click here to view video)

Revised: 29 October 2013

Time code Topic
00:00 Introduction
00:30 IPv4 addressing and DHCP
00:55 IPv4 address format (octets), hex representation, dotted-decimal notation
02:25 Subnet masks and address classes A/B/C (now obsolete)
04:05 Subnet mask notation - separating address components (CIDR)
06:30 DHCP - dynamic host configuration protocol
07:45 DHCP specification RFC 2131
08:30 DHCP operation: discover, offer, request, acknowledgment
09:28 DHCP leases, lease renewal, address reuse
10:18 End

Network address translation (NAT and UPnP) (Click here to view video)

Revised: 30 October 2013

Time code Topic
00:00 Introduction
00:30 Network address translation (NAT)
01:05 Cable modem example: single network address
01:40 Network address translation to allow sharing of a single "outside" IP address
02:40 Router implementation of NAT
03:15 Non-routable IP addresses, allocated by DHCP
04:00 NAT operation: external realm, private realm
05:09 Address/port translation table
06:30 External port number mapping to internal address/port
07:00 NAT example
08:05 Translating an address for a message to an external host
09:10 External port number assignment and use
09:50 NAT translation table entries
10:10 Handling external response to internal message
11:03 Reuse of internal IP address (non-routable) ranges
11:40 External host establishing connection with internal host - how?
12:20 Opening a port on the external network
13:30 Opening ports with UPNP (universal plug-and-play)
14:48 End

Cryptography in network protocols (Click here to view video on VidGrid)

Revised: 5 November 2013

Time code Topic
00:00 Introduction
14:39 End

Public key cryptography (Dr. Yoder's version) (Watch on VidGrid)

Posted: 6 September 2018

Request timeline for this video

Public key cryptography (Dr. Sebern's version) (Click here to view video)

Revised: 01 November 2013

Time code Topic
00:00 Introduction
00:30 Brief review of symmetric-key encryption
01:45 Public-key encryption introduction
03:30 Simplified mathematical view of public-key encryption
04:19 Reversing roles of the private and public keys
04:55 Lack of sender authentication in basic public-key encryption
06:15 Dependence on the difficulty of factoring large prime numbers in the RSA algorithm
07:52 Use of a symmetric session key, in turn encrypted using public-key algorithm
08:38 Security of the session key and perfect forward secrecy
10:00 Ephemeral session keys and Diffie-Hellman key exchange algorithm
11:21 End

Modular arithmetic (Click here to view video on VidGrid)

Revised: 31 October 2014 (Dr. Yoder)

Time code Topic
00:00 Introduction
00:30 Game: around the circle
03:50 A variation on the game: modular addition
05:36 Modular multiplication
06:15 Raising to a power
09:20 Modular arithmetic and RSA algorithm
09:29 End

How RSA Works (Click here to view video) on VidGrid

Revised: 02 November 2014 (Dr. Yoder)

Time code Topic
00:00 Introduction
00:17 Modular arithmetic review
00:50 Modular arithmetic and RSA public-key encryption
01:18 Example: creating a public/private key pair
01:40 Secret modulus (totient )
02:10 Public/private key definitions, encoding/decoding process
03:00 How it works: modular arithmetic proof
04:30 Example: encryption/decryption with small numbers
05:55 Need for factoring a prime number, difficulty of doing that
06:19 End

More vidoes

Looking for more? Check out the video archive.

Acknowledgement

Nearly all of the this page and the videos it links to were created by Dr. Mark Sebern.