Okay, I know that the answer to this question is ICMP - all my textbooks are saying so, the Internet is saying so, everyone is saying so... except for my TA. According to this TA ping is used not only with ICMP, but also IP, arp, and some other. So... which are the protocols used for ping? Other than ICMP?
ICMP means Internet Control Message Protocol and is always coupled with the IP protocol (There's 2 ICMP variants one for IPv4 and one for IPv6.)
echo request and echo response are the two operation codes of ICMP used to implement ping
.
Besides the original ping program, ping might simply mean the action of checking if a remote node is responding, this might be done on several layers in a protocol stack - e.g. ARP ping for testing hosts on a local network. The term ping might be used on higher protocol layers and APIs as well, e.g. the act of checking if a database is up, done at the database layer protocol.
ICMP sits on top of IP. What you have below depends on the network you're on, and are not in themselves relevant to the operation of ping.