doc - ???????
1 Aug 2014 ... ... to immense documentary exercises without any tangible benefits. ...... offers
adjustment pockets/ buckets which is not the case in option 2.
Part of the document
Computer Networks, Fall 2010
Instructor: Prof. Ying-Dar Lin, ydlin@cs.nctu.edu.tw
Lecture hours: 9AM-12NN Wednesdays at EC026
Course homepage: http://speed.cis.nctu.edu.tw/~ydlin/course/cn/mcn.html
Course Objectives:
This graduate-level course is a part of a book project "Computer
Networks, An Open Source Approach" to be published by McGraw Hills in Feb
2011. The book project is motivated by an observation that none of the
existing textbooks on computer networks really demonstrate where and how
network protocols and algorithms are implemented in real systems. This
course covers why and how various protocols and algorithms are designed
(domain knowledge) and implemented (hands-on skills) into Linux kernel,
drivers, and various daemons. In short, physical and data link layers are
embedded into network adaptors and their drivers, while IP and TCP/UDP
layers are built into kernel; and various application servers stand as
daemons.
The loading for students includes (1) 8 homework sets for the 8
chapters (hand-writing and hands-on), and (2) midterm and final exams.
Course materials for each chapter (slides and book materials) are
downloadable from the course homepage. Feedbacks (error reporting or
suggestions) to the book materials are much welcome. Class lectures are in
English. Textbook: Computer Networks: An Open Source Approach, Ying-Dar Lin, Ren-
Hung Hwang, Fred Baker, published by McGraw Hill, Feb 2011. Draft book
materials at http://speed.cis.nctu.edu.tw/~ydlin/course/cn/mcn.html
References:
1. Larry L. Peterson and Bruce S. Davie, Computer Networks, A Systems
Approach, 4th edition, Elsevier, 2007.
2. ???, ???????, ?????, 2007?9?.
Grading: Homework (x8) 40%, Midterm 30%, Final 30%. Course Outline: 1 Fundamentals (63 pages, 24.2K words)
1.1 Requirements of Networking
1.1.1 Connectivity: Node, Link, Path
Sidebar - Historical Evolution: Standard Links
Sidebar - Historical Evolution: ATM Faded
1.1.2 Scalability: Number of Nodes
1.1.3 Resource Sharing
Sidebar - Principle in Action: Datacom vs. Telecom
1.2 Underlying Principles
1.2.1 Performance Measures
Sidebar - Principle in Action: Little's Result
1.2.2 Operations at Control Plane
1.2.3 Operations at Data Plane
1.2.4 Interoperability
1.3 The Internet Architecture
1.3.1 Solutions to Connectivity
Sidebar - Principle in Action: Constantly Challenged
Statelessness
1.3.2 Solutions to Scalability
1.3.3 Solutions to Resource Sharing
1.3.4 Control-Plane and Data-Plane Operations
Sidebar - Principle in Action: Flavors of the Internet
Architecture
1.4 Open Source Implementations
1.4.1 Open vs. Closed
1.4.2 Software Architecture in Linux Systems
1.4.3 Linux Kernel
1.4.4 Clients and Daemon Servers
1.4.5 Interface Drivers
1.4.6 Device Controllers
1.5 Book Roadmap: A Packet's Life
1.5.1 Packet data structure: sk_buff
1.5.2 A Packet's Life in a Web Server
Sidebar - Performance Matters: From Socket to Driver within a
Server
1.5.3 A Packet's Life in a Gateway
Sidebar - Performance Matters: From Input Port to Output Port
within a Router
Sidebar - Principle in Action: A Packet's Life in the Internet
1.6 Summary
Common Pitfalls
Further Reading
FAQ
Exercises
2 Physical Layer (90 pages, 27.4words)
2.1 General Issues
2.1.1 Data and Signal: Analog or Digital
Sidebar - Principle in Action: Nyquist Theorm vs. Shannon
Theorem
2.1.2 Transmission and Reception Flows
2.1.3 Transmission: Line Coding and Digital Modulation
2.1.4 Transmission Impairments
Sidebar - Historical Evolution: Software Defined Radio
2.2 Medium
2.2.1 Wired Medium
2.2.2 Wireless Medium
2.3 Information Coding and Baseband Transmission
2.3.1 Source and Channel Coding
2.3.2 Line Coding
Open Source Implementation 2.1: 8B/10B Encoder
2.4 Digital Modulation and Multiplexing
2.4.1 Passband Modulation
2.4.2 Multiplexing
2.5 Advanced Topics
2.5.1 Spread Spectrum
2.5.2 Single-Carrier vs. Multiple-Carrier
2.5.3 Multiple Inputs Multiple Outputs (MIMO)
Open Source Implementation 2.2: IEEE 802.11a Transmitter with
OFDM
Sidebar - Historical Evolution: Cellular Standards
Sidebar - Historical Evolution: LTE-advanced vs. WiMAX
2.6 Summary
Common Pitfalls
Further Readings
FAQ
Exercises 3 Link Layer (107 pages, 36.7K words)
3.1 General Issues
3.1.1 Framing
3.1.2 Addressing
3.1.3 Error Control and Reliability
Sidebar - Principle in Action: CRC or Checksum?
Sidebar - Principle in Action: Error Correction Code
Open Source Implementation 3.1: Checksum
Open Source Implementation 3.2: Hardware CRC32
3.1.4 Flow Control
3.1.5 Medium Access Control
3.1.6 Bridging
3.1.7 Link-Layer Packet Flows
Open Source Implementation 3.3: Link-Layer Packet Flows in Call
Graphs
3.2 Point-To-Point Protocol
3.2.1 High-level Data Link Control (HDLC)
3.2.2 Point-to-Point Protocol (PPP)
3.2.3 Internet Protocol Control Protocol (IPCP)
Open Source Implementation 3.4: PPP
3.2.4 PPP over Ethernet (PPPoE)
3.3 Ethernet (IEEE 802.3)
3.3.1 Ethernet Evolution: A Big Picture
Sidebar - Historical Evolution: Competitors to Ethernet
3.3.2 The Ethernet MAC
Open Source Implementation 3.5: CSMA/CD
Sidebar - Historical Evolution: Power-line Networking: HomePlug
3.3.3 Selected Topics in the Ethernet
Sidebar - Historical Evolution: Backbone Networking: SONET/SDH
and MPLS
Sidebar - Historical Evolution: First-mile Networking: xDSL and
Cable Modem
3.4 Wireless Links
3.4.1 IEEE 802.11 Wireless LAN
Sidebar - Principle in Action: Why not CSMA/CD in WLAN?
Open Source Implementation 3.6: IEEE 802.11 MAC Simulation with
NS-2
3.4.2 Bluetooth Technology
Sidebar --- Historical Evolution: Comparing Bluetooth and IEEE
802.11
3.4.3 WiMAX Technology
Sidebar - Historical Evolution: Comparing 3G, LTE, and WiMAX
3.5 Bridging
3.5.1 Self Learning
Sidebar - Historical Evolution: Cut-through vs. Store-and-
Forward
Open Source Implementation 3.7: Self-Learning Bridging
3.5.2 Spanning Tree
Open Source Implementation 3.8: Spanning Tree
3.5.3 Virtual LAN
Sidebar - Principle in Action: VLAN vs. Subnet
3.6 Device Drivers of a Network Interface
3.6.1 Concepts of Device Drivers
3.6.2 Communicating with Hardware in a Linux Device Driver
Open Source Implementation 3.9: Probing I/O ports, Interrupt
Handling and DMA
Open Source Implementation 3.10: The Network Device Driver in
Linux
Sidebar - Performance Matters: Interrupt and DMA Handling within
a Driver
Sidebar - Historical Evolution: Standard Interfaces for Drivers
3.7 Summary
Common Pitfalls
Further Readings
FAQ
Exercises
4 Internet Protocol Layer (140 pages, 43.1K words)
4.1 General Issues
4.1.1 Connectivity Issues
Sidebar - Principle in Action: Bridging vs. Routing
4.1.2 Scalability Issues
4.1.3 Resource Sharing Issues
4.1.4 Overview of IP-Layer Protocols and Packet Flows
Open Source Implementation 4.1: IP-Layer Packet Flows in Call
Graphs
Sidebar - Performance Matters: Latency within the IP Layer
4.2 Data-Plane Protocols: Internet Protocol
4.2.1 Internet Protocol version 4
Open Source Implementation 4.2: IPv4 Packet Forwarding
Sidebar - Performance Matters: Lookup Time at Routing Cache and
Table
Open Source Implementation 4.3: IPv4 Checksum in Assembly
Open Source Implementation 4.4: IPv4 Fragmentation
4.2.2 Network Address Translation (NAT)
Sidebar - Principle in Action: Different Types of NAT
Sidebar - Principle in Action: Messy ALG in NAT
Open Source Implementation 4.5: NAT
Sidebar - Performance Matters: CPU Time of NAT Execution and
Others
4.3 Internet Protocol Version 6
Sidebar - Historical Evolution: NAT vs. IPv6
4.4 Control-Plane Protocols: Address Management
4.4.1 Address Resolution Protocol
Open Source Implementation 4.6: ARP
4.4.2 Dynamic Host Configuration
Open Source Implementation 4.7: DHCP
4.5 Control-Plane Protocols: Error Reporting
Open Source Implementation 4.8: ICMP
4.6 Control-Plane Protocols: Routing
4.6.1 Routing Principles
Sidebar - Principle in Action: Optimal Routing
4.6.2 Intra-domain Routing
Open Source Implementation 4.9: RIP
Open Source Implementation 4.10: OSPF
Sidebar - Performance Matters: Computation Ov