About protocol stack:
The upper layer calls the next layer service, which is like a stack process, then the data is transferred to another entity, and the other party will resolve the data in the opposite process, similar to the forth. So it is called the protocol stack.
Example: An application exchanges data by FTP and another application
Process of application a (send): ftp ----> tcp-> ftp ----> IP, TCP, FTP ----> (ICMP / IGMP), IP, TCP, FTP ----> Mac, (ICMP / IGMP), IP, TCP, FTP
Application B (received) process: Mac, (ICMP / IGMP), IP, TCP, FTP ---> (ICMP / IGMP), IP, TCP, FTP ----> IP, TCP, FTP - -> TCP-> ftp ----> ftp