Networking (Business Data Communication) 2021
"Business Data Communication" is a required course designed only for senior students who major in Management Information Systems. ONLY MIS students (including double major) are allowed to enroll in this course. For students from other departments, IMBA students, and exchange students, please unenroll from this class.
This course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, protocols, and applications. Topics to be covered include layered network architecture, physical layer, and data link protocols, network and transport protocols, routing protocols, and network applications. Examples will be drawn from the Internet TCP/IP protocol suite. The course also includes several programming assignments in which students gain hands-on experience with basic network programming and the development of simple network applications.
Class Info
Instructor: Shun-Wen Hsiao, NCCU MIS Dept., hsiaom at nccu.edu.tw
Lecture (306007001): Tuesday 234 (09:10 ~ 12:00) @ Classroom #260312
Lecture (306007011): Wednesday 234 (09:10 ~ 12:00) @ Classroom
#260207Prerequisite
This course is designed for MIS students and double major students. Students who enroll in this class must have prior programming experience for two semesters. We will NOT cover any programming details. Homework, assignments, and projects need a certain level of programming skills.
TA: 109356017 and 110356047
Office Hours: By appointment only.
Textbook: "Computer Networking: A Top-Down Approach" by James F. Kurose and Keith W. Ross. (7th)
Class live streaming, video on demand, lab video: https://youtube.com/channel/UCIIOuh-0H1Wrq75ozOVBaHA
Forum: https://groups.google.com/forum/#!forum/nccu-networking
Homework submission system: http://hsiaom.nccu.edu.tw:8888/index/ (See detail in homework section below)
Announcements (Fall 2021)
09/01: Due to the limited seats and TA workload, we cannot afford too many students in both classes. However, students may switch between 306007001 and 306007011. The priority would be junior/senior MIS students, MIS graduate students, and MIS double major students.
09/01: On average, we will have weekly homework (including textbook homework, lab assignment, and term assignment). It is difficult to manage multiple heavy-load courses so please seriously considering not taking this course.
09/07: According to the COVID-19 guidelines from NCCU, students are requested NOT to come to the classroom before 9/26. PLEASE DO NOT COME TO THE CLASSROOM in 9/14-15. Please go to https://youtube.com/channel/UCIIOuh-0H1Wrq75ozOVBaHA for the live streaming class.
09/08: The LAST DAY of signing the enrollment document will be 5-6 Oct. MIS students (including double major, minor) are guaranteed to get the signature.
09/26
The classes on 9/28-29 are still provided online. Please go to https://youtube.com/channel/UCIIOuh-0H1Wrq75ozOVBaHA for the live streaming class.
You MUST fill in the following form before 9/30 for receiving the password of the homework system. Password will be sent to your registered email address. https://forms.gle/YmW7kDUmmngePbpL8
10/4
Please come to the class on Oct. 5-6. We will deal with enrollment and un-enrollment problems.
If you cannot come to the class (e.g., under quarantine or any reasons), please email TA your document before the class, TA will help you.
Homework passwords will be distributed in the classroom on Oct. 5-6. If you do not show up, we will send the password via your registered email in this form https://forms.gle/YmW7kDUmmngePbpL8.
Homework #01 is announced. You must upload your homework via the submission system. The due time is 13/14 Oct. 23:59, the system will be ready by 8 Oct. No late submission is allowed. (However, in case of any account problem or system errors, you may send your PDF file to TA by email this time and only this time before due time.) Details will be explained in the class on Oct 5-6.
10/5: If you did not register your email before 9/30 as we requested, please register now by this form https://forms.gle/YmW7kDUmmngePbpL8. We will send the password to your registered email later.
10/18: Homework #02S is announced on Oct. 18th, 2021. Submit this homework before 23:59 on 26/27 October 2021 via the homework submission system. No late submission.
10/25: Homework #03E is announced on Oct. 25th, 2021. Submit this homework before 23:59 on 3/4 November 2021 via the homework submission system. No late submission.
11/02
Homework #04S is announced on Oct. 25th, 2021. Submit this homework before 23:59 on 3/4 November 2021 via the homework submission system. No late submission.
The midterm will be held on 11/09-10 as expected. Students should attend the midterm physically in the classroom, and take the exam with pen and paper. The questions of the midterm for Tuesday and Wednesday classes are different, so students of Tuesday MUST go to Tuesday's midterm and students of Wednesday MUST go to Wednesday's midterm. If you have any reasonable reason that makes you cannot go to the classroom for the midterm, please send an email to TA and Instructor BEFORE 11/05 23:59:59 for further arrangement.
Section 1.1~1.5, 2.1~2.5, and 3.1~3.4.
Midterm example is here.
11/16
Assignment AS#00 is announced. Read all the materials of Lab 2.1 "Berkeley socket programming" and Lab 3 "TFTP". Try to execute the socket codes provided and capture the packets by Wireshark. NO need to hand in anything.
Assignment AS#01 is announced (and will explain in the class on Nov 23/24). Due 23:59:59 on 6/7 Dec. You can modify the TCP server/client example code to finish your AS#01. (TFTP example code will be used in #AS02.)
11/18: Invited talk on 11/23 10:30~12:00. Please come to the classroom if you can. It's our pleasure to have Ms. Cathy Hsu, who is an expert in FinTech, SaaS, and Cloud, sharing her experience of studying and working abroad.
This is a private talk that will only be provided on 11/23 in the classroom. We welcome Wednesday's students to join Tuesday's class.
11/24: The explanation of AS#01 is here. https://youtu.be/4bjelcv7pcU
12/6
12/10
Homework #05S is announced. Submit this homework before 23:59 on 14/15 Dec 2021.
Homework #06S is announced. Submit this homework before 23:59 on 20/21 Dec 2021.
12/27
Bonus #01 is announced. Submit this homework before 23:59 on 4/5 Jan 2022.
Homework #07S is announced. Submit this homework before 23:59 on 4/5 Jan 2022.
Homework #08E is announced. Submit this homework before 23:59 on 10/11 Jan 2022.
12/30
Homework #09E is announced. Submit this homework before 23:59 on 10/11 Jan 2022. (same as HW08E)
12/30: Addition videos
For Tuesday's students, here is an additional video that discusses modern routing topology for your reference.
For all students, please take some time to watch the following videos.
PaperClip - 海底光纜如何連接全球互聯網 (5:28)
PaperClip - 為什麼你家的Wi-Fi 這麼慢 (05:10)
PaperClip - 你的手機是怎麼上網的 (04:57)
1/6: Schedule
1/11 & 12 09:10-12:00 Final Exam.
1/17 17:00 PM, TA will finish grading the final exam and you can check your exam result in the system.
1/18 & 19 09:10-12:00 TA time at 商院 260521. To get your answer paper and review them.
1/19 17:00 PM. TA will announce your final grade for this course.
Course Objectives & Learning Outcomes
The main objective includes but not limited to
Review the ideas of networking design
Understand the layered network architecture and the underlying technique
Understand and implement the basic network-based program
Be able to develop/evaluate a network structure for home and enterprise
The desired outcomes for students include
They know the design of the current computer network.
They see what hardware or software should be used in a complex computer network.
They can analyze the performance of a protocol theoretically and experimentally and recognize the trade-offs between different protocol designs.
They can write socket programs with network libraries.
They have experience working with network devices (by using their own PC or laptop).
They can manage a complex enterprise network.
They can monitor the network packet and analyze them.
They can identify network security problems and solve them.
Schedule (Fall 2021)
09/14-15: Syllabus; (1) Computer Networks and Internet
Please do NOT come to the classroom. Live streaming class start at 9:10.
09/21-22: No class. Mid-Autumn Festival.
09/28-29: (1) Computer Network and Internet
10/05-06: (2) Application Layer
10/12-13: (2) Application Layer
10/19-20: (2) Application Layer
10/26-27:(3) Transport Layer
11/02-03: (3) Transport Layer
11/09-10: Midterm.
11/16-17: (3) Transport Layer
Announce Term Assignment #1a.
Lab 2: Socket Programming, 1: "Berkeley socket programming". Please see the video and try one of the Python and Java examples. And capture the packets by Wireshark.
11/23-24: (3) Transport Layer + Talks
Announce Term Assignment #1b.
Lab 3: Wireshark: TFTP. See the video of TFTP and Endianness. Try to understand the TFTP code.
Assignment #AS01 announced.
Talk 10:30~12:00
We will invite an expert of FinTech, SaaS, and Cloud to share her experience of studying and working abroad.
11/30-12/01: (4) The Network Layer - Data
12/07-08: (4) The Network Layer - Data
12/14-15: (5) The Network Layer - Control
12/21-22: (6) The Link Layer
12/28-29: (7-1) Wireless Network
01/04-05: (7-2) Mobile Networks
01/11-12: Final.
Lab (Fall 2021)
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).
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 (44%): 6~8homework.
Term Assignment (4+6+6%): 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
You must submit your homework via the homework submission system (http://hsiaom.nccu.edu.tw:8888/index/ ) before the due date/time. Late submission is NOT allowed unless reasonable excuses are emailed to the TA/lecture when homework is announced.
ONLY Portable Document Format (PDF) is allowed in the system (unless upload format is pre-designated); homework in any other format (which may increase TA's load) will be pending (possibly forever).
ID and password will be given in the class. Each student has an individual account in the system. Giving your password to your classmate is considered cheating.