CS2910
Outcomes

This is an old version of this course, from Fall 2014. A newer version is available here.

Miscelaneous Outcomes

  • Define Network Protocol
  • Define connectionless in the context of network protocols.
  • Define stateless in the context of network protocols.
  • Describe the function of each component of the network stack
  • Explain the role of the IP address, socket, and MAC address in internet protocols, and which level(s) of the network stack each of these is found
  • List the levels of the network stack
  • Define transmission, propegation, queueing, and processing delay
  • Compute propegation delays within a network
  • Compute transmission delays within a netowrk
  • Compute queueing delays within a network
  • Compute processing delays within a network
  • Compute sender utilization
  • Explain how DHCP works, and what it does?

Application Layer -- HTTP

  • Read and interpret the HTTP standard
  • Explain the difference between a persistent connection and pipelining for HTTP.
  • Explain the purpose of the If-Modified-Since, Content-Length, Location, Transfer-Encoding headers, and how they relate to each other.
  • Describe in detail the HTTP request line
  • Describe in detail the HTTP status line
  • Describe where PUT, GET, or HEAD would be found in an HTTP request, and describe what these methods are used for
  • Describe an example of a conditional get
  • Describe the purpose of the HTTP cookie
  • Describe how the length of the request/response is determined for a variety of conditions, including chunked and unchunked data
  • Describe the difference between a character and a byte
  • Explain how the difference between a character and a byte impacts programming in the Python language
  • Describe how characters are encodeded in the HTTP protocol
  • Interpret raw HTTP protocol transmissions
  • Explain the role of headers in an HTTP transmiission
  • Explain the role of chunking in an HTTP transmission
  • Properly implement chunking and determine when the end of the stream has been reached.
  • Explain how binary data is encoded in HTTP
  • Explain how the character set can be specified for the body in HTTP
  • Explain how URIs can encode characters from alternate character sets

Application Layer -- E-mail

  • Describe the roles of the SMTP, IMAP, and POP3 email protocols
  • Describe the headers used for SMTP or IMAP???
  • Describe how character sets are encodedin in SMTP????
  • Explain how SMTP and IMAP are used, and the server configuration used in contemporary email settings
  • Describe the differences between POP3 and IMAP
  • Program an email interface in Python

Application Layer -- DNS

  • Describe the purpose of the DNS protocol
  • Describe the information contained in DNS A, CNAME records
  • Describe the roles of the various servers and clients in the DNS protocol
  • Describe the roles of servers used in the DNS system and their relationships to each other

Transport Layer

  • List the two key transport-layer protocols
  • Describe the differences between UDP and TCP
  • Choose the appropriate protocol (UDP or TCP) for a given application and defend your answer
  • Select which of UDP or TCP is most appropriate for a variety of applications, and describe your choice
  • Describe the differences between the Application and Transport layers
  • Describe the key fields (source port, destination port) in a transport-layer segment headers and why these are found at the transport layer.
  • Describe the process of multiplexing
  • Describe how the TCP protocol allows multiple connections \"through\" the same port
  • Write code to create UDP or TCP connections in Python
  • Describe how port scanning is accomplished and what its goals are.
  • Provide a mechanism for protecting against port scanning.
  • Explain the purpose of a checksum in a transport-layer packet.

Transport Layer -- UDP

  • List common applications that use UDP
  • Explain the role of the UDP broadcast packet
  • Explain why/why not UDP single-destination addresses can/cannot be used over long distances on the internet
  • Explain why/why not UDP broadcast packets can be used over long distances on the internet
  • Describe the role of the key components of the UDP segment header -- source port, destination port, length, checksum
  • Describe how the checksum is computed for a UDP packet

Transport Layer -- TCP

  • Define flow control and congestion control
  • Describe the role of the key components of the TCP segment header -- source port, destination port, sequence number, acknowledgement number, header length, receive window, internet checksum, and ACK, RST, SYN, and FIN bits.
  • Describe how the checksum is computed for a TCP packet.
  • Construct two TCP messages with the same checksum using a simple checksumming approach
  • Explain how TCP reduces noise when estimating the round-trip time
  • Explain how TCP uses round-trip estimates to guage congestion
  • Explain the role of sequence numbers and ACKs in congestion control
  • Explain how sequence numbers are selected
  • Explain how a server can avoid a SYN flood attack
  • Explain how buffer-overflow is avoided in the TCP protocol
  • Explain the difference between recevier buffers and router buffers in TCP
  • Explain the difference between IPv4 and IPv6

Network Layer

  • Describe the typical entries in an IP packet, and how they are interpreted by routers
  • Explain the effect of increasing router buffer size

Physical Layer

  • Describe contention strategies???
  • Define time-division multiplexing
  • Define frequency-division multiplexing
  • Define code-division multiplexing?
  • Describe the differences between TDMA, FDMA

Security

  • Define public-key encryption
  • Describe the function of public and private keys
  • Explain why public/private keys are not used for encrypting the bulk of a transmission, and what is used instaed
  • Explain public-key (asymmetric-key) encryption using functional notation
  • Explain symmetric-key encryption using functional notation
  • Define symmetric-key encryption
  • Describe how exponentiation works for some numbers in the encryption and decryption equations for the simple RSA used in class
  • Describe situations where public-key cryptography is useful
  • Describe situations where symmetric-key cryptography is useful
  • Describe in words, figures, and mathematical symbols how public-key cryptography can be used for privacy
  • Describe in words, figures, and mathematical symbols how public-key cryptography can be used for message authentication
  • Explain why modulus arithmetic can be thought of as arithmetic on a number-circle
  • Describe the simplification that can be used when adding numbers in modular arithmetic
  • Describe the simplification that can be used when multiplying numbers in modular arithmetic
  • Describe the simplification of the base that can be used when raising numbers to a power in modular arithmetic
  • Describe the simplification of the power of an exponent that can be applied when raising a number to a power -- when the base of the modulus is the product of two primes and the exponent is relatively prime with the base
  • Explain why x + y is the same as x mod n + y mod n (mod n), but x^y mod n is not the same as (x mod n)^(y mod n) (mod n).
  • Explain what it means for one number to divide another
  • Define divisor
  • Define prime
  • Write a simple brute-force algorithm to determine if a number is prime
  • Define the term co-prime
  • Write a simple brute-force algorithm to determine if two numbers are co-prime, given an implementation of the gcd algorithm
  • Define gcd (Greatest Common Divisor)
  • Define co-prime (also known as relatively prime)
  • Define prime factorization
  • Apply Euclid's Lemma
  • Prove Fermat's little theorem
  • Define congruence as x = a (mod b) iff there exists h such that (x-a) = hb (I instead refer to the "magical world of mod n" in the video)
  • Prove the congruencies a = b (mod p) and a = b (mod q) iff a = b (mod pq) when p and q are prime (This requires Euclid's Lemma and the definition of congruence)
  • Prove the congruence x^y = x^(y mod z)   (mod n)   where n = pz, p and q are prime, and x is any number. (This is a straightforward generalization of the proof on Wikipedia's RSA article)
  • Apply the RSA encryption and decryption algorithms in Python
  • Explain how the rule of modulus arithmetic employed by RSA keeps modulus secret while still performing a scrambling modulus operation
  • Describe how RSA uses modulus arithmetic when encoding a number
  • Describe how RSA overcomes the flaw in multiplicative keys with modulus arithmetic
  • Describe how you could crack an RSA algorithm without using brute force. Why is this challenging?
  • Describe how the RSA public and private keys are selected
  • Explain why e should be relatively prime with phi(n) in RSA.
  • Explain how we can easily test that e is relatively prime with phi(n) without even using the Extended Euclid's Algorithm.
  • Discuss failure-modes of public and private key encryption algorithms
  • Define cryptographic hash
  • Explain why salting a hash is important
  • Describe how to crack a password that has not been salted
  • Describe ways in which an attacker could compromise Confidentiality, Message integrity, End-point authentication, or Operational security
  • Describe the differences between ciphertext-only, known-plaintext, and chosen-plaintext attacks.
  • Explain the difference between a Block cipher and a chaining cipher. Explain how a chaining cipher is less suseptible to attack.
  • Explain the difference between a Stream cipher and a block cipher
  • Explain how information can leak out in a block cipher and how cipher block chaining overcomes this problem
  • Explain how a session can be compromised if one of the party's keys is compromised.
  • Explain how public-key encryption can be attacked with a man-in-the-middle attack.
  • Explain how public key certification overcomes the challenge of the man-in-the middle attack
  • Explain why the simple prime algorithm is O(n^2) using approaches from Data Structures, but is O(exp(n)) for "large numbers".
  • Explain why despite the simple prime algoirithm being exponential in the number of bits, it is possible to efficiently determine if a number is prime
  • Explain why RSA is secure, given that it determines rapidly if two numbers are prime, and our simplistic algorithm for determining the primality of numbers can also tell us all the factors of a number.