Courses/Computer Science/CPSC 441.W2014/Textbook Notes

= Introduction = Hello, my name is Carrie Mah and I am currently in my 3rd year of Computer Science with a concentration in Human Computer Interaction. I am also an Executive Officer for the Computer Science Undergraduate Society. If you have any questions (whether it be CPSC-related, events around the city, or an eclectic of random things), please do not hesitate to contact me.

I hope you find my notes useful, and if there are any errors please correct me by clicking "Edit" on the top of the page and making the appropriate changes. You should also "Watch this page" for the CPSC 441 page to check when I upload notes. Just click "Edit" and scroll down to check mark "Watch this page."

You are welcome to use my notes, just credit me when possible. If you have any suggestions or major concerns, please contact me at cmah[at]ucalgary[dot]ca. Thanks in advance for reading!

= Course Information =

Disclaimer: This is a page created by a student. Everything created and written by me is not associated with the Department of Computer Science or the University of Calgary. I am not being paid to do this nor am getting credit. I was a class scribe for CPSC 457 and enjoyed it so much that I wanted to continue it with a course related to it. I find writing Wiki notes for courses I am not familiar with are helpful for me, so I hope you find these notes helpful. I encourage that you still write your own notes, as it helps you retain information, but my notes are public and free to use!

This course is for W2014, taught by Dr. Carey Williamson.

The course website is here: http://pages.cpsc.ucalgary.ca/~carey/CPSC441

= Textbook =

The textbook used for this course:


 * Computer Networking: A Top-Down Approach (Sixth Edition), by Jim Kurose and Keith Ross, Addison Wesley, 2013

There is a companion site:


 * Book Web Site


 * The supplementary material for students includes several demos and coding examples. The supplementary material for instructors includes slides, quizzes, assignments, programming projects, and sample solutions. I will be making use of some of these materials, particularly the applets, at various points during the course.

= Chapter 1: Computer Networks and the Internet =

1.1.1: A Nuts-and-Bolts Description

 * Internet is a computer network that interconnects 100s of millions of computing devices throughout the world
 * End systems : connected together by a network of communication links and packet switches
 * Different links transmit data at different rates, with the transmission rate of a link measured in bits/second
 * One end system sends data to another, the sending end system segments the data and adds header bytes to each segment
 * Resulting packages of information, known as packets, are sent through the network to the destination end system, where original data is reassembled


 * Packet switch : takes packet arriving on an incoming communication link and forwards packet on an outgoing communication link
 * Two prominent types of switches forward packets toward destination
 * Router : used in network core
 * Link-layer : used in access networks
 * Route/path : sequence of communication links and packet switches traversed by packet from the sending end system to the receiving end system
 * Example: Cargo segmented and loaded into fleet of trucks that travel through network of highways, roads and intersections to the destination warehouse
 * At destination warehouse, cargo is unloaded and grouped with the rest of the cargo arriving from the same shipment


 * Internet Service Providers (ISPs) : end systems access Internet through ISPs, including:
 * Residential ISPs such as local cable or telephone companies
 * Corporate or university ISPs
 * ISPs that provide Wi-Fi access in airports, hotels, coffee shops and other public places
 * ISP is a network of packet switches and communication links. They provide a variety of types of network access to the end systems, including residential broadband access such as cable modem or DSL, high-speed local area network access, wireless access and 56 kbps dial-up modem access
 * ISPs provide Internet access to content providers, connecting websites directly to the Internet
 * ISPs also interconnects end systems as The Internet is all about hat
 * These lower-tier ISPs are interconnected through national and international upper-tier SPs (Level 3 Communication, AT&T, Sprint, NTT)
 * An upper-tier ISP consists of high-speed routers interconnected with high-speed fiber-optic links
 * Each ISP network is managed independently, runs the IP protocol, and conforms to certain naming and address conventions


 * Protocols : controls the sending and receiving of information within the Internet. End systems, packet switches and other pieces of the Internet run these
 * Internet Protocol (IP) : specifies format of the packets that are sent and received among routers and end systems
 * Transmission Control Protocol (TCP) and IP are Internet's principal protocols


 * Internet standards: developed by Internet Engineering Task Force (IETF) have documents called requests for comments (RFCs) are technical and detailed documents resolving network and protocol design problems
 * RFCs defined protocols such as TCP, IP, HTTP, and SMTP

1.1.2: A Services Description

 * The Internet is also an infrastructure that provides services to applications
 * Applications include electronic mail, Web surfing, social networks, instant messaging, Voice-over-IP (VoIP), video streaming, distributed games, peer-to-peer (P2P) file sharing, TV over the Internet, remote login, etc.
 * Distributed applications since they involve multiple end systems that exchange data with each other


 * Internet applications run on end systems, not in the packet switches in the network core
 * Applications must be written n programs that run on end systems (such as in Java, C or Python)


 * Developing a distributed Internet application require data sending between the different end systems that programs run on
 * How does one program running on one end system instruct the Internet to deliver data to another program running on another end system?


 * Application Programming Interface (API) : specifies how a program running on one end system asks the Internet infrastructure to deliver data to a specific destination program running on another end system
 * Set of rules that the sending program must follow so that the Internet can deliver he data to the destination program
 * Example: Postal Service has its own API as Alice needs to write Bob's name, address and ZIP code on the envelope, include a stamp and seal the envelope

1.1.3: What is a Protocol?

 * In a human protocol, there are specific messages we send, and specific actions we take in response to the received reply messages or other events (such as no reply)
 * No useful work can be done if people run on different protocols (if one person has manners and the other does not, or they have different conception of time)
 * Network protocol have entities that exchange messages and take actions on hardware or software components of some device
 * Protocols govern all activity in the Internet that involves two or more communicating remote entities
 * Example: hardware-implemented protocols in two physically connected computers control the flow of bits on the 'wire' between the two network interface cards
 * Congestion-control protocols in end systems control the rate at which packets are transmitted between sender and receiver
 * Protocols in routers determine a packet's path from source to destination


 * Protocol : defines the format and the order of messages exchanged between two or more communicating entities, as well as the actions taken on the transmission and/or receipt of a messages or other event

Back To Navigation

Section 1.2: The Network Edge
Back To Navigation

Section 1.3: The Network Core
Back To Navigation

Section 1.4: Delay, Loss, and Throughput in Packet-Switched Networks
Back To Navigation

Section 1.5: Protocol Layers and Their Service Models
Back To Navigation

Section 1.5: Protocol Layers and Their Service Models
Back To Navigation

= Chapter 2: Application Layer =

Section 2.1: Principles of Network Applications
Back To Navigation

Section 2.2: The Web and HTTP
Back To Navigation