Networking (Business Data Communication) 2024
Business Data Communication is a mandatory course exclusively intended for senior students majoring in Management Information Systems. Only students majoring in MIS, including those with a double major, are eligible to participate in this course. Students from other departments, IMBA students, and exchange students are kindly requested to unregister from this class.
This course offers an introductory overview of essential principles related to the design and implementation of computer communication networks, protocols, and applications. The topics covered include layered network architecture, the physical layer, data link protocols, network layer design, transport protocols, routing protocols, and network applications. Illustrative examples will be drawn from the Internet TCP/IP protocol suite. Moreover, the course incorporates various programming assignments (previous coding experience is a prerequisite), allowing students to gain practical skills in basic network programming and the development of simple network applications.
Class Info
Instructor: Prof. Shun-Wen Hsiao, NCCU MIS Dept., hsiaom at nccu.edu.tw
Lecture (306007001): Tuesday 234 (09:10 ~ 12:00) @ Classroom TBD
Lecture (306007011): Wednesday 234 (09:10 ~ 12:00) @ Classroom TBD
Prerequisite
This course is specifically tailored for MIS students and those pursuing a double major. Students who wish to enroll in this class MUST have completed two semesters of programming experience. Please note that we will not delve into programming details during the course. However, the homework, assignments, and projects will require a certain level of programming proficiency.
TA: {TBA} at g.nccu.edu.tw
Office Hours: By appointment only.
Textbook: "Computer Networking: A Top-Down Approach" by James F. Kurose and Keith W. Ross
Forum: https://groups.google.com/forum/#!forum/nccu-networking
Homework Submission System: http://hsiaom.nccu.edu.tw:8888/nccuhwapp/
Announcement (Fall 2024)
-/-: As there are limited seats available and considering the workload of the teaching assistants, we are unable to accommodate a large number of students in both classes. Nevertheless, students have the option to switch between classes 306007001 and 306007011. Priority for enrollment will be given to junior and senior MIS students, followed by MIS graduate students, and finally, MIS students pursuing a double major.
-/-: You can expect to have homework assignment almost every week, including textbook exercises, lab assignments, and a term assignment. Managing multiple courses with heavy workloads can be challenging, so I strongly advise you to carefully consider taking this course. It is important to be aware of the potential difficulty and workload involved before making your decision.
-/-: The deadline for signing the enrollment document is September ??. MIS students, including those pursuing a double major or minor, are guaranteed to receive the necessary signature for enrollment.
Course Objectives & Learning Outcomes
The primary objective encompasses a range of goals, including but not limited to the following:
Gain a comprehensive understanding of networking design principles.
Develop a solid grasp of layered network architecture and the underlying techniques involved.
Acquire the knowledge and skills required to implement basic network-based programs.
Demonstrate the ability to design and evaluate network structures for both home and enterprise environments.
The desired outcomes for students encompass various goals, including but not limited to the following:
Familiarity with the design of existing computer networks.
The ability to determine suitable hardware and software components for complex computer networks.
Proficiency in analyzing protocol performance, both theoretically and experimentally, and understanding the trade-offs associated with different protocol designs.
Competence in writing socket programs using network libraries.
Experience in working with network devices, utilizing their own personal computers or laptops.
The capability to manage complex enterprise networks effectively.
Proficiency in monitoring network packets and performing thorough analysis.
The ability to identify and address network security issues.
Schedule (Fall 2024)
09/10-11: Syllabus; (1) Computer Networks and Internet
09/17-18: No class. Moon Festival. 16+2
09/24-25: (1) Computer Network and Internet
10/01-02: (1) Computer Network and Internet
10/08-08: (2) Application Layer
10/15-16: (2) Application Layer
10/22-23: (3) Transport Layer
10/29-30: (3) Transport Layer
11/05-06: (3) Transport Layer
11/12-13: Midterm. (a week late)
Term Assignment AS#01
Socket Programming: "Berkeley socket programming". Please see the video and try one of the Python and Java examples.
11/19-20: (4) Network Layer - Data
11/26-27: (5) The Network Layer - Control
12/03-04: (6) The Link Layer
Term Assignment AS#02
Lab: Wireshark: TFTP. See the video of TFTP and Endianness. Try to understand the TFTP code.
12/10-11: (6) The Link Layer
12/17-18: (6) LAN + (7-1) Wireless Network
Term Assignment AS#03
AS#03: SNTP Server/Client.
12/24-25: (6) LAN + (7-1) Wireless Network
12/31-01/01: No class. New Year. 16+2
01/07-08: Final.
Lab (Fall 2024)
Network Commands
L2: ipconfig /all or ifconfig /all, arp -a
L3: route print, traceroute (Linux/Mac) or tracert (Windows), ping
L4: netstat
L7: nslookup, telnet, ftp
Socket Programming
Berkeley socket programming: Please google "Berkeley socket programming" for a better understanding of the codes or wiki "Berkeley sockets". Here is a tutorial video 'Berkeley Socket Programming'.
A simple TCP (server/client) socket programming in Python. (You may want to see the official Python document.)
Troubleshooting for macOS.
A simple TCP echo (server/client) socket programming in Java. (You may want to see the official Java Tutorials.)
Here are PCAP files capturing the interaction between a TCP server and a client.
HTTP server/client
Multi-thread HTTP server/client
TFTP server/client
HTTP: A simple HTTP request and response (http.cap); a simple HTTP request with a one packet gzip Content-Encoded response (http_gzip.cap).
SMTP (smtp.pcap), POP3, IMAP: A short IMAP session (imap.cap)
DNS: Try to capture your DNS records.
FTP: a complicated file transfer protocol (ftp.pcap)
TFTP: read request (tftp_rrq.pcap), write request (tftp_wrq.pcap).
See also this video: 'Trivial File Transfer Protocol' and this video "Endianness".
See also the TFTP server example code and the TFTP client example code in Python (and Java TFTP Server).
SNTP
ICMP: Try to capture ping messages.
DHCP: Try to capture your DHCP messages. (> ipconfig /renew)
ARP: arp.pcap a successful arp request and a failure one.
802.11 radio packet: 80211.pcapng.
Some more samples of packets (here)
Grading Policy
Homework (40%): 8 homework.
Term Assignment (5%+7%+8%): socket programming
Midterm and Final (40%)
Here is an example of the midterm.
100%: Grade, GPA
100~90: A+, 4.3
89~85: A, 4.0
84~80: A-, 3.7
79~77: B+, 3.3
76~73: B. 3.0
72~70: B-, 2.7
69~67: C+, 2.3
66~63: C, 2.0
62~60: C-, 1.7
59~57: D+, 1.3
56~53: D, 1.0
52~50: D-, 0.7
49~0: F, 0.0
Homework
To ensure timely submission of your homework, it is required to use the designated submission system and adhere to the specified due date and time. Late submissions are generally NOT permitted unless valid reasons are communicated to the TA or instructor via email at the time when the homework is announced.
Additionally, it is important to note that each student has an individual account in the system, and sharing your password with classmates is considered cheating. Similarly, displaying or sharing your homework with others is also regarded as cheating. It is essential to maintain the integrity and individuality of your work throughout the course.