• The first lecture will be held on January 7, 2019. We will have two contact sessions per week. Contact sessions can be lectures or exercise sessions, depending on the schedule of the course. Please note that it is mandatory to attend the contact sessions. 

    Course Content:

    Todays computing systems are distributed and interconnected by fixed and wireless networks. Computers and cloud services are connected via the internet either fixed or wirelessly. Mobile and on-body devices connect, for instance,via Bluetooth to smartphones, which themselves maintain connectivity via cellular networks (e.g. fifth generation’5G’ systems). In addition, applications like the Industrial Internet or connected vehicles constitute novel, demanding challenges for the scalability and delay and throughput characteristics of future networking technology. At the same time, security gains increasing importance in such networks. 

    The course provides a theoretical and practical basis for computer networking. Besides basic networking principles, the course provides case studies of network protocols at each layer of the OSI model. Examples include HTTP and TCP/IP for data center networking, 5G and 802.11.x for vehicular networking, Bluetooth and Bluetooth Low Energy for short-distance device-to-device communication and symmetric and asymmetric encryption protocols as well as VPN for secure communications. In addition, the course will cover security in modern communication networks. The issue is addressed by introducing symmetric and asymmetric encryption protocols, PGP, VPN and Firewalls.


    We will use an open general-purpose computer networking textbook in the first half of the course. You can find the book titled "An introduction to computer networks" online.  

    Course Assistants:

    Quddus Tahmid     tahmid.quddus(at)aalto.fi 

    Jesus Ly           jesus.ly(at)aalto.fi

  • Textbooks:

    • Peter L. Dordal. An Introduction to Computer Networks. https://intronetworks.cs.luc.edu/ 
    • James F. Kurose and Keith W. Ross. Computer Networking – A Top-Down Approach. Pearson.
    • Andrew S. Tanenbaum and David J. Wetherall. Computer Networks. 5th Edition. 2011. Pearson. 


    • Socket Programming in Python (Guide). https://realpython.com/python-sockets/ 
    • Wireshark website: https://www.wireshark.org/
    • TCPDUMP & LIBPCAP website: https://www.tcpdump.org/


    • John Kristoff's Overview of TCP (Fundamental concepts behind TCP and how it is used to transport data between two endpoints): http://condor.depaul.edu/jkristof/technotes/tcp.html
    • S. Liu, J. Huang, Y. Zhou, J. Wang and T. He, "Task-aware TCP in Data Center Networks," 2017 IEEE 37th International Conference on Distributed Computing Systems (ICDCS), Atlanta, GA, 2017, pp. 1356-1366. doi: 10.1109/ICDCS.2017.175


    • V. K. Adhikari et al., "Measurement Study of Netflix, Hulu, and a Tale of Three CDNs," in IEEE/ACM Transactions on Networking, vol. 23, no. 6, pp. 1984-1997, Dec. 2015. doi: 10.1109/TNET.2014.2354262


    • M. Shafi et al., "5G: A Tutorial Overview of Standards, Trials, Challenges, Deployment, and Practice," in IEEE Journal on Selected Areas in Communications, vol. 35, no. 6, pp. 1201-1221, June 2017. doi: 10.1109/JSAC.2017.2692307

  • Detailed instructions and evaluation criteria will be published here (at the latest one week before the exercise session).

    Course grading (scale : 1-5) is based on the results of the assignments. No late submissions will be graded.

    Grade 1: 61-68

    Grade 2: 69-76

    Grade 3: 77-84

    Grade 4: 85-92

    Grade 5: 93-100

    Assignment 1:  Wi-Fi measurement (14 points)

    Deadline: Jan 29, 2019

    You are supposed to start working on Assignment 1 after the lecture on Jan 14. The experiments include Wi-Fi Access Point scanning, performance measurement of Wi-Fi data transmission, and impact analysis of signal strength and interference on throughput and retransmission rate.

    You can work in a pair on this assignment.

    Please run experiments in the following steps and summarize your experiment results in 4-6 slides.  

    1. Check the configuration of the Wi-Fi network interface on your own computer.
    2. Use command line to scan the Wi-Fi access points and record information of all the APs you observe from one location, including SSID, BSSID, used channel, band, network protocol(e.g. 802.11g/n/ac), supported data rates, signal strength and anything else you can get.
    3. Observe the changes in signal strength when moving around, and analyze the impact of distance and obstacles on wireless signal strength.
    4. Associate your phone or laptop with one Wi-Fi AP, and parse the beacon frames. Compare the description of AP with the result of 1).
    5. Send data from one station to another one connected to the same AP (check BSSID), and measure data rate. You can use iperf  for example to implement data transmission.
    6. Analyze the impact on data rate from signal strength. You can measure the data rate with three different levels of signal strength. (Hint: there are many ways to configure the signal strength. Besides distance and obstacles, you can consider also configuring the transmit power of AP.  In this case, it is not a good idea to run experiments in congested networks.)
    7. Generate interference and monitor noise level and MAC retransmission. Analyze the impact of interference on throughput and retransmission rate.
    In the slides, please describe your experiment setup and analyze your results (better to use figures and tables). 

    Assessment criteria:

    1 point:  Successfully scan Wi-Fi access points, and associate to one AP using command line

    1 point: Be able to monitor and parse beacon frames using tools such as Wireshark. Fill out the fields of beacon frame with the information collected.

    Max 3 points: Use experimental results to analyze the impact of distance (1 point) and obstacles (2 points) on wireless signal strength. 

    3 points:   Send data from one station to another one in the same basic service set (1 point) and analyze the impact of signal strength (e.g. the value, the variance) on data rate (2 points). 

    Max 2 points:  Be able to generate interference using 1-2 methods (1 point for each method).

    Max 4 points:  Be able to measure noise level (1 point) and MAC retransmission rate ( 1 point), and analyze the impact of interference on throughput and retransmission rate (2 points).

    Assignment 2:  Socket programming (18 points + 3 bonus points)

    Deadline: Feb 13, 2019

    You need to complete two exercises and demonstrate your programs to our course assistants during exercise sessions. No need to submit any written report. 

    Assignment 2.1:   Please implement an instant messaging service  (9 points + 3 bonus points)

    Implement a service that allows any two clients to send messages to each other. One client should be able to send messages to multiple clients and to receive messages from multiple clients. For example, if there are 3 clients, A, B and C, Client A can send a message to either B or C, and can receive messages from either B or C. Make sure the messages can be delivered to the right receivers, and correctly displayed on both sender and receiver sides. The sender will be notified if the messages have been sent successfully or not. It is not required to implement graphical user interface.You can choose to implement the service using either TCP/UDP socket.

    Two options:

    1. Every message is sent to the server and then forwarded to the receiver.

    2. Every message is sent directly from one client to another. In this case, the sender needs to query the network address of the receiver.

    Advanced function (You will get 3 extra points if you implement this function):

    1. Group chat: Client can send one message simultaneously to multiple clients.

    Please demonstrate your programs to our course assistants following the instructions below.

    1. Open at least 3 clients and 1 server. Briefly explain the communication mechanisms between clients and between client and server.

    2. Send messages from one client to any of the other clients. Show the sent/received messages on both senders and receivers.

    3. Exchange messages between several pairs of clients simultaneously.

    4. Send a message from one client to a group of clients simultaneously. (optional)

    Evaluation criteria (max 9 + 3 points):

    Feature (weights)

    Unacceptable (0)

    Marginal (1)



    Message delivery (3)

    Messages cannot be sent successfully.

    Messages can be sent from one client to another one successfully. (half-duplex)

    Sent/received messages are displayed on both sender and receiver sides.

    Two clients can send messages to each other simultaneously. (Full-duplex)

    Sent/received messages, sender information, and timestamps are displayed on both sender and receiver sides.

    Messages can be exchanged between different clients successfully.

    Support multiple pairs of clients to exchange messages simultaneously.

    Sent/received messages, sender information, and timestamps are displayed on both sender and receiver sides.

    Group chat (1)


    Messages cannot be sent from one client to multiple clients.

    Messages can be sent from one client to multiple clients at the same time. The client IDs or IPs are indicated as command line parameters.

    Support group management.

    Allow messages to be broadcasted within a group.

    A client can attend several groups and can receive messages from different groups and individual clients at the same time.

    Assignment 2.2:   Please implement Ping using Raw Socket (9 points)

    Please implement a program to measure the time it takes to reach a host. 

    The program sends an ICMP ECHO_REQUEST packet to a specific host, and waits for the host to return an ECHO_REPLY packet. The TTL (time-to-live) value of the packet determines the max number of router hops. If the request does not reach the host, the sender is noted back with one of the following errors.

    • TTL Expired in Transit
    • Destination Host Unreachable
    • Request Timed Out i.e. no reply
    • Unknown Host

    It shows results like this:

    xxxx% ping www.google.com

    PING www.google.com ( 56 data bytes

    64 bytes from icmp_seq=0 ttl=55 time=34.250 ms

    64 bytes from icmp_seq=1 ttl=55 time=10.299 ms

    64 bytes from icmp_seq=2 ttl=55 time=31.466 ms

    64 bytes from icmp_seq=3 ttl=55 time=11.790 ms

    64 bytes from icmp_seq=4 ttl=55 time=13.563 ms


    --- www.google.com ping statistics ---

    5 packets transmitted, 5 packets received, 0.0% packet loss

    round-trip min/avg/max/stddev = 10.299/20.274/34.250/10.364 ms

    Hints: Open a Raw socket using SOCK_RAW with protocol as IPPROTO_ICMP. Remember to set the TTL value and set a timer at the sender side. When the input is a hostname, you need to do a DNS lookup.

    Assessment Criteria:

    3 points: be able to continuously output the RTT calculated from each packet
    2 points: be able to stop the process using Ctrl-C and calculate packet statistics  (i.e.#sent/received packets, packet loss rate) and RTT min/avg/max/stdev
    2 points: be able to handle the error of 'unknown host' (i.e. DNS lookup)
    2 points: be able to handle the error of 'request timeout'

    Assignment 3:  How YouTube works? (18 points)

    Deadline: Feb 17, 2019

    Please use network diagnostic tools to analyze the networking mechanisms used for implementing YouTube services. 

    You can monitor the network traffic during the following process, and describe the entities involved in the process, the protocols in use (e.g. TCP/UDP, HTTP, Streaming protocols, and etc.), and the interaction between entities. 
    1) Search for a video on youtube.com
    2) Choose a video and start video playback
    3) Wait until the video playback completes

    You can use traceroute or other tools to discover the routing paths from your client to YouTube servers. Figure out the architecture of YouTube (e.g. DNS, routers, load balancers, media servers and etc.) and how CDN works in this case.

    Hints:  Repeat your experiments at different times of day, different locations, and using different video (e.g. video generated locally in Finland or abroad). Note that there is a Q&A session for Assignment III, if you have questions regarding the requirements. 

    • Vaibhav Bajpai, Saba Ahsan, Jürgen Schönwälder, and Jörg Ott. 2017. Measuring YouTube Content Delivery over IPv6. SIGCOMM Comput. Commun. Rev. 47, 5 (October 2017), 2-11. DOI: https://doi.org/10.1145/3155055.3155057
    • Albert Rafetseder, Florian Metzger, David Stezenbach, and Kurt Tutschku. 2011. Exploring YouTube's content distribution network through distributed application-layer measurements: a first view. In Proceedings of the 2011 International Workshop on Modeling, Analysis, and Control of Complex Networks (Cnet '11). International Teletraffic Congress 31-36.
    • R. Torres, A. Finamore, J. R. Kim, M. Mellia, M. M. Munafo and S. Rao, "Dissecting Video Server Selection Strategies in the YouTube CDN," 2011 31st International Conference on Distributed Computing Systems, Minneapolis, MN, 2011, pp. 248-257.
    • doi: 10.1109/ICDCS.2011.43
    • V. K. Adhikari et al., "Measurement Study of Netflix, Hulu, and a Tale of Three CDNs," in IEEE/ACM Transactions on Networking, vol. 23, no. 6, pp. 1984-1997, Dec. 2015. doi: 10.1109/TNET.2014.2354262

      Please submit a written report (3-5 pages).  Here is a suggested template of the report:

      Section 1:  Goals of the experiments (what do you want to learn from experiment), design criteria and description of test cases (explain what kind of experiments you run and why you want to run those experiments)
      Section 2:  Architecture of YouTube (entities and their roles) learnt from experimental results
      Section 3:  Workflow of video search and delivery (use workflow graphs to explain the processes,  mention which protocols are in use)
      Section 4:  Discuss how YouTube CDN works based on experimental results

      Assessment Criteria:

      Topic (weight)

      Unacceptable (0)

      Marginal (1)

      Acceptable (2)

      Exceptional (3)

      Experiment design (2)


      Little or no grasp of problem. Incapable of developing proper test cases.

      Some understanding of YouTube services.

      Major deficiencies of test cases.

      Overall sound understanding of the YouTube services. 

      Test cases are well-designed to understand the workflow of video search and delivery.

      Some test cases are missing to fully understand how YouTube works.


      Test cases are well-designed and sufficient to identify the architecture of YouTube, the workflow of video search and delivery, and how YouTube CDN works.

      Explain the design criteria of your test cases.

      Result analysis (3)

      Experiments results are lacking.

      Experiments are properly conducted in most cases.

      Some experiment results are achieved.

      Experiments are all properly conducted.

      Describe the architecture of YouTube and the workflow of video search and delivery clearly.

      Experiments are all properly conducted.

      Describe the architecture of YouTube and the workflow of video search and delivery clearly.

      Figure out  how YouTube CDN works.

      Academic Writing (1)

      The report is difficult to follow. Many grammar errors in the text. A lot of text is irrelevant with the topic.

      The report is otherwise easy to follow, but some important details are missing.

      The report is easy to follow and the ideas are well expressed. The paper is well written, except few places which require clarification.


      It is well written and concise. Ideas are well expressed. The report is well organized and easy to follow. Plots and diagrams are readily understandable and they support the text.

      Part II - Security

      Assignment 1 - Cryptography ( Total 8 Points)

      Deadline: 13 March, 2019

      Please find the details here.
      Assignment 2 - Digital Signature (Total 9 Points)

      Deadline: 13 March, 2019

      Please find the details here.

      Assignment 3 - Authentication (Total 8 Points)

      Deadline: 27 March, 2019

      Please find the details here.

      Assignment 4 - PGP (Total 8 Points)

      Deadline: 27 March, 2019

      Please find the details here.

      Assignment 5 - SSL (Total 9 Points)

      Deadline: 10 April, 2019

      Please find the details here.

      Assignment 6 - IPsec & VPN (Total 9 Points)

      Deadline: 10 April, 2019

      Please find the details here.

    • Tillgänglig om: Fältet User account contains (use: aalto.fi) innehåller aalto.fi
    • Lecture slides will be published here.

      Jan 7, 2019 (Mon)    Introduction   A first look at YouTube

      Jan 9, 2019 (Wed)    TCP/IP Model and Ethernet

      Jan 14, 2019 (Mon)    Wireless LAN

      Jan 21, 2019 (Mon)     Internet Protocol

      Jan 28, 2019 (Mon)     TCP/UDP

      Feb  4, 2019 (Mon)      TCP congestion control and HTTP  Part 1

      Feb 11, 2019 (Mon)      HTTP/2, DNS, CDN and DCN

      Feb 18, 2019 (Mon)     Mid-term summary and feedback session

      Feb 25, 2019 (Mon)    Principles of Cryptography

      Mar 4, 2019 (Mon)      Dijkstra, AS routing and message Integrity

      Mar 11,2019 (Mon)      (no lecture)

      Mar 18, 2019 (Mon)     Message Integrity, digital signatures and End-point authentication

      Mar 25, 2019 (Mon)     Securing Email and TCP connections

      April 1, 2019 (Mon)      IPsec and VPNs

      April 8, 2019 (Mon)      Summary and feedback

    • Note that the first exercise session will be held on Jan 16, 2019. After that, we will have exercise sessions on Wednesdays. 

      If you are not familiar with Linux command line, please refer to http://linuxcommand.org/. 

      Jan 16, 2019   Tutorial on wireless measurement

      Our course assistant will show how to use tools like Wireshark to capture network traffic and analyze packet statistics. The focus will be placed on MAC layer traffic analysis. 

      Jan 23, 2019   Tutorial on traceroute

      Our course assistant will show you how to use network diagnostic tools to discover IP routing paths. 

      Jan 30, 2019   Tutorial on socket programming

      Our course assistant will show you how to implement simple client/server using socket programming. 

      Feb 6, 2019      Q&A for Assignment III and Feedback on Assignment I

      Feb 13, 2019    Demo sessions of Assignment II

      This is the last chance to demonstrate the results of Assignment II to our course assistants. You can of course choose to demonstrate your programs in previous exercise sessions. 

      Information about the other exercise sessions will be published here later.