Para o programador, um socket pode ser utilizado para enviar ou receber dados através da rede. Esses dados são transmitidos na camada de sessão, acima das camadas mais baixas (controladas pelo sistema operacional), que cuidam do roteamento. Há diversos tipos de sockets que determinam a estrutura da camada de transporte. Os tipos mais comuns de sockets são os stream sockets e os datagram sockets.
Lembrando que na pilha TCP/IP a camada de aplicação abrange as camadas de Aplicação, Sessão e Apresentação do modelo OSI.
Logo, Gabarito C.
Fonte: Livro Hacking: The Art of Exploitation, Jon Erickson