¿Es la API de socket una interfaz entre la capa de aplicación y la capa de transporte?

Sí. Es una forma de escribir aplicaciones distribuidas que se basan en ciertos requisitos de comunicación (confiabilidad, integridad, orden, …) sin tener que preocuparse de cómo se alcanzan estos requisitos. Las aplicaciones solo tienen que elegir el tipo de servicio de transporte que desean, en función de las garantías que necesitan y de lo que están dispuestos a “pagar” por ellas, y crear un socket en consecuencia. La capa de transporte se asegurará (por medios que sean transparentes para la capa de aplicación) de que las aplicaciones “obtengan lo que pagaron”.

Metáfora del servicio postal:

  1. por 1 €, la carta tarda unos 3 días hábiles y tiene un 5% de probabilidad de perderse;
  2. por 4 €, la carta llega el siguiente día hábil, se garantiza que no se perderá y se le notificará cuando se entregue.

Como remitente (= capa de aplicación), no necesita saber cómo el servicio postal (= capa de transporte) logra cada nivel de servicio. Tiene una especificación de cada tipo de servicio (= interfaz), compre el sello correcto para el nivel de servicio que está dispuesto a pagar con esta carta en particular (= configure su socket), y ponga la carta en el buzón (= enviar a través de enchufe).