We implment a 3-layer acoustic link with C# (.NET 9) and ASIO or WASAPI, including PHY, MAC and IP. C# is good at high level abstraction and low level control, and also flexibility (you will notice some dynamic vars in our code).
- Project 0. Warm Up [3/3]
-
- Task 1: (0 point) Self-assessment
-
- Task 2: (3 points) Understanding Your Tools
-
- Project 1. Acoustic Link [10/10 + Optinal 5/8]
-
- Task 1: (3 points) Understanding Your Tools
-
- Task 2: (2 points) Generating Sound Waves at Will
-
- Task 3: (5 points) Transmitting Your First Bit
-
- Task 4: (Optional, 1 point) Error Correction
-
- Task 5: (Optional, 2 points) OFDM
-
- Task 6: (Optional, 2 points) Chip Dream
-
- Task 7: (Optional, 1 point) MIMO
-
- (2/2) Task 8: (Optional, 2 points) Range Challenge
-
- Project 2. Manage Multiple Access [11/12 + Optinal 6/6]
-
- Task 0: (0 point) Audio Toolkit
-
- Task 1: (4 points) Cable Connection
-
- Task 2: (5 points) Acknowledgement
-
- Task 3: (2 points) Carrier Sense Multiple Access
-
- Task 4: (1 point) CSMA with Interference
-
- (3/3) Task 5: (Optional, 3 points) Performance Rank
-
- Task 6: (Optional, 3 points) X
-
- Project 3. To the Internet [10/10 + Optinal 4.5/*]
-
- Task 0: (0 point) Sending and Receiving IP Datagram
-
- Task 1: (3 points) ICMP Echo
-
- Task 2: (4 points) Router
-
- Task 3: (3 points) NAT
-
- Task 4: (Optional, 1 point) NAT Traversal
-
- Task 5: (Optional, 1 point) IP Fragmentation
-
- Task 6: (Optional, 0 point) Virtual Network Device
-
- Task 7: (Optional, 1 point) ICMP Echo #
-
- Task 8: (Optional, 1 point) Router #
-
- Task 9: (Optional, 1 point) NAT #
-
- Task 10: (Optional, 1 point) ARP
-
- (1.5/*) Task 11: (Optional, * points) Star
-
- Project 4. Above IP [8/8 + Optinal 2/2]
-
- Task 1: (4 points) DNS
-
- Task 2: (1 points) HTTP
-
- Task 3: (3 points) Project Report
-
- Part 4. (0 point) Relaunch
-
- Part 5. (Optional, 1 point) Browsing the Web
-
- Part 6. (Optional, 1 point) Project Report #
-
- Buy a good speaker and microphone before you start project 1. Mono is recommanded.
- Volume is the most important part in this project, adjust and find your best volume before you start implement the project! Be careful that higher volume is not always better due to the low quality of provided sound cards.
- Whenever you find a good volume, base-band transmission is good enough to finish project 2&3&4.
- A virtual interface combined with Winodws integrated features can significantly reduce the work in project 3&4, however you won't be able to finish some optional tasks like NAT Traversal or IP Fragmentation unless using your own NAT implemention.
- You will find these command useful:
New-NetNat: Setup a NAT in Windows.New-NetIPAddress: Setup virtual interface IP address, it will also setup route table.Set-NetIpInterface -Forwarding: Enable packet forwarding for the interface, open it to pass Star task. Also reminber disabling the NAT.
- WSL provides mirrored interface, while Linux's
pingandcurlprovide options to use certain interface. It is useful to debug your program without disconnecting other links. - You can find other reminders by reading the code!