Videos
Titles
- Data encoding, part 1
- Data encoding, part 2
- Data encoding, part 3
- Introduction to packet switching
- What is a protocol?
- Principles of network applications
- Introduction to the Python programming language, part 1
- Introduction to the Python programming language, part 2
- Python's Internal Encoding
- Introduction to network programming in Python
- Introduction to HTTP protocol, part 1
- Introduction to HTTP protocol, part 2
- Introduction to HTTP protocol, part 3
- Introduction to DNS, part 1a
- Introduction to DNS
- Transport-layer protocols
- Multiplexing and demultiplexing
- UDP protocol
- TCP protocol
- Email protocols
- Sending email (SMTP)
- Sending email
- Sending email
- Delivering/receiving email
- Fetching email (IMAP)
- Network-layer protocols and routers
- IP protocol
- IPv4 addressing and DHCP
- Network address translation (NAT and UPnP)
- Cryptography in network protocols
- Public key cryptography
- Modular arithmetic
- RSA encryption
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 in VidGrid)
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 in VidGrid)
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), 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.