CS-2910 Network Protocols

Dr. Mark Sebern -- Fall quarter 2014-2015


Videos

Click on a video title in the list to jump to its description, or search this page for a desired keyword.

List of Titles

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

Revised: 31 August 2014

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 data transmission (Click here to view video)

Revised: 25 August 2013

Time code Topic
00:00 Introduction
00:30 Transmitting data on a mountain hike
01:58 Bandwidth, units (Hz), voice channel characteristics
03:00 Frequency and musical notes
03:40 Digital data: bits and bytes, data rate units and abbreviations
05:10 Data rate units: powers of 10 or powers of 2?

Baseband signals, modulation, and circuit switching (Click here to view video)

Revised: 29 August 2013

Time code Topic
00:00 Introduction
00:30 Modulating baseband analog and digital signals on a carrier
01:35 Amplitude modulation (AM)
01:53 Why is a carrier used?
02:20 Sharing communication channels: circuit switching to reduce the number of channels needed
05:20 Circuit-switching advantage: guarantee of access for a full "conversation"

Circuit multiplexing (Click here to view video)

Revised: 31 August 2013

Time code Topic
00:00 Introduction
00:30 More than one circuit on a single channel: circuit multiplexing
01:55 Frequency-division multiplexing (FDM) and time-division multiplexing (TDM)
02:55 FDM: allocate a band of frequencies to each "conversation"
03:40 TDM: allocate entire channel to each "conversation" for a period of time
05:05 FDM example: Morse code signals on separate frequencies - simultaneous channel access
07:30 TDM example: symbols from different "conversations" on a time-shared channel

Problems with circuit switching (Click here to view video)

Revised: 09 September 2013

Time code Topic
00:00 Introduction
00:30 Circuit switching in distributed networks
02:35 "Wasted" bandwidth in allocated circuits ("silent periods") when allocated for duration of a "conversation"
04:30 Advantage of TDM for digital signals
05:24 Circuit switching advantages and disadvantages
06:00 Big disadvantage: wasted channel capacity during "silent periods" and blocking of waiting conversations

Introduction to packet switching (Click here to view video)

Revised: 09 September 2013

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.

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

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

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

Revised: 18 September 2014

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 Java network programming (UDP, TCP) (Click here to view video)

Revised: 13 September 2013

The audio quality for this video is not up to desired standards; sorry about that.

Time code Topic
00:00 Introduction
00:30 Network programming at the transport layer
01:20 Differences between UDP and TCP
01:40 UDP: one-way datagram transmission, no delivery guarantee
02:20 TCP: established connection, bidirectional data flow
02:40 UDP Java programming, library classes
03:15 Internet addressing in Java: IP address, host name
04:45 Port number used to identify application
05:00 Source and destination host addresses and port numbers
06:00 DatagramPacket class
07:00 Transmit data source (byte data) and transmitting the data
07:50 Receiving datagram data
09:30 TCP Java programming
10:00 Socket and ServerSocket classes, "known (listening) port" at destination
11:10 Using TCP socket streams, managing multiple connections on one destination

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

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"

Introduction to DNS (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

Reliable data transfer (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

TCP protocol (Click here to view video)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

TCP flow control (Video not yet available)

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

Transport-level security basics: TLS/SSL (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

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

ICMP protocol (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

Cryptography in network protocols (Click here to view video)

Revised: 5 November 2013

Time code Topic
00:00 Introduction
14:39 End

Public key cryptography (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)

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

RSA encryption (Click here to view video)

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

Message integrity and digital signatures (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

End point authentication (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

Securing TCP connections (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

Wireless LAN security (Video not yet available)

Revised: 28 August 2014

Time code Topic
00:00 Introduction

TCP congestion control (Video not yet available)