Does port scanning involve sending ICMP requests?
ICMP does not rely on port numbers for commucation. rather, ICMP messages are sent with a "type" and "code" field, specifiying what it is to do. For example, ICMP type 8 is an echo request, otherwise known as a ping. ICMP type 0 is an echo reply. Type 3 is destination unreachable, and the "code" field further explains the reason, such as Type 3 Code 0 meaning "network unreachable" and Type 3 Code 1 meaning "host unreachable"

Since ICMP communications do not rely on port numbers, it cannot be used to determine if certain ports are open (in other words, if there is an active sevice listening on that port). For this purpose, the communication protocol used by the (possibly) listeneing service is used. If a reply is sent back, that port is open. It's as simple as that.

ICMP packets are commonly used in what is known as "ping sweeps", pinging a range of addresses to see if any are up. This is a common method used to determine which hosts are up to further direct port scans which [i]do[/] rely on port numbers.

For more information, I suggest looking here, or here.