Networking (Business Data Communication) 2023
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 #260311
Lecture (306007011): Wednesday 234 (09:10 ~ 12:00) @ Classroom #260312
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: {112356021, 112356046} 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
Class video on demand, lab video: https://www.youtube.com/@nccu.hsiaom/
Forum: https://groups.google.com/forum/#!forum/nccu-networking
Homework Submission System: http://hsiaom.nccu.edu.tw:8888/nccuhwapp/
Announcement (Fall 2023)
-/-: 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 26th. MIS students, including those pursuing a double major or minor, are guaranteed to receive the necessary signature for enrollment.
-/-: You can find the playlist of English videos titled "[NET][EN] Computer Networks". All the materials in the playlist consist of English-speaking videos, and they have automatically generated English subtitles provided by Google.
10/02: Homework! HW#01 and HW#02 are announced.
They are both due at 23:59 in 19 October.http://hsiaom.nccu.edu.tw:8888/nccuhwapp/ We will explain how to use this system in 10/03 and 10/04. Currently, your account is not activated.
For students who did not get password, please come to classroom in 10/03 or 10/04. Otherwise, contact TA by email.
10/25: Homework! HW#03 is announced. Due at 23:59 Nov. 6.
11/06: Homework! HW#04 is announced. Due at 23:59 Nov. 11.
11/22: Assignment AS#01! AS#01 is announced. Due at 23:59 Dec. 7.
12/05: Homework and assignment!
12/12: Homework HW#06: Due at 23:59 Jan. 1, 2024.
The weight of this homework is twice as the other homework. Note that please make sure you submit a single PDF file to the system. Make sure your figures are nice and clear.
Note that Final Exam is one week earlier (1/1 and 1/2).
12/18:
12/19 and 12/20: No Class.
Please watch AS#03 video: https://youtu.be/7eH2TOq7y00, and the AS#03 assignment is here.
The due date of AS#03 is after the Final (1/2 and 1/3), and the due date will be announced later.
12/27:
12/29:
Due to the power outage in NCCU on Dec. 30, the homework submission system may be not online on Jan 1st. If so, we will extent the due date of HW#06, HW#07, and HW#08 to 23:59 in Jan 7, 2024 (the same as AS#03). However, please finish your homework as early as possible.
UPDATE 12/31: the server is down due to the power outage! We will restart the server in the afternoon of Jan 6th, and the due date of everything will be extended to Jan 9 and 10, i.e., the last day of our class.
1/10: Last Announcement
Your final grade will be ready on our homework system (http://atsl.nccu.edu.tw:8888/nccuhwapp/ or http://hsiaom.nccu.edu.tw:8888/nccuhwapp/) on 1/23 (Tue).
If you have any question about your grade and FINAL, you can meet TAs in person on 1/24 (Wed) between 10am to 2pm at NCCU Commerce Building Room #260521. Or you can send TA an email in advance to schedule an online meeting (on 1/24 between 10am to 2pm as well).
The final grade will be sent to the Office of Academic Affairs on 1/25 (Thurs) at noon. No modification is allowed after this time.
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 2023)
09/12-13: Syllabus; (1) Computer Networks and Internet
09/19-20: (1) Computer Network and Internet
09/26-27: (1) Computer Network and Internet
10/03-04: (2) Application Layer
10/10-11: No class. National Day.
10/17-18: (2) Application Layer
10/24-25: (3) Transport Layer
HW#03: dut at 23:59 in 6 November.
10/31-11/01: (3) Transport Layer
11/07-08: (3) Transport Layer
HW#4: due at 23:59 in 11 Nov.
11/14-15: Midterm. (a week late)
11/21-22: (4) Network Layer - Data
Term Assignment AS#01
Socket Programming: "Berkeley socket programming". Please see the video and try one of the Python and Java examples.
11/28-29: (5) The Network Layer - Control
12/05-06: (6) The Link Layer
12/12-13: (6) The Link Layer
HW#06: due at 23:59 in 1 Jan.
12/19-20: Lab: SNTP Server/Client.
Term Assignment #3
AS#03: SNTP Server/Client.
12/26-27: (6) LAN + (7-1) Wireless Network
HW#7, HW #8
01/02-03: Final. (a week earlier)
01/09-10: (7-2) Mobile Networks
Some interesting videos.
Lab (Fall 2023)
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
TBA
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.