How does NAT (Network Address Translation) supports ping ?
Most IPv4 Internet accesses are behind NAT (Network Address Translation boxes. While students easily learn how NAT translate packets from TCP connections or UDP (https://beta.computer-networking.info/syllabus/default/protocols/udp.html?highlight=udp) flows, the interactions between NAT and the Internet Control Message Protocol is more complex.
A recent blog post provides a nice discussion of these interactions with code demonstrating how to experiment with NAT on Linux as well as packet traces. This could be the basis for a nice lab for students willing to understand NAT in more details.