Esta parte del RFC se trata de pasar la responsabilidad al sistema operativo o lo que sea la siguiente etapa del proceso. Se trata fundamentalmente de la separación de capas.
Un reconocimiento por parte de TCP no garantiza que los datos se hayan entregado al usuario final, sino solo que el TCP receptor ha asumido la responsabilidad de hacerlo.
Siempre lo he pensado de esta manera:
- El sistema operativo podría bloquearse entre el envío del ACK y los datos que llegan al proceso del cliente ("cliente" aquí significa cliente del sistema operativo, no "cliente de red")
- El proceso del cliente puede ser defectuoso o bloqueado, o simplemente mucho más lento de lo previsto para tratar con sus datos entrantes, o de hecho solo leerlo en circunstancias no obvias
- Si el cliente envía los datos en adelante, tal vez a un archivo de disco, es posible que el archivo aún no se haya escrito o vaciado
- Si el cliente envía los datos en adelante por TCP, es posible que el lado lejano TCP no haya transmitido los datos, no haya recibido un ACK o el proceso lejano haya consumido los datos con éxito
Todo lo que dice es que este es un reconocimiento de capa 3 ("escucho sus bytes") no un reconocimiento de capa superior . Considere, por ejemplo, la diferencia entre el TCP ACK, el SMTP 250 OK
después de que la pasarela de correo del siguiente salto acepte un mensaje, un mensaje de recepción de mensaje (por ejemplo, según RFC 3798 ), un píxel de seguimiento de mensaje abierto, una nota de agradecimiento de un PA, y una respuesta que dice "Sí, lo haré".
Otro ejemplo concreto sería una impresora:
- Debe ACEPTAR los datos antes de saber lo que contiene (puede ser un archivo PostScript que comience con una biblioteca incluida más grande que la ventana de transmisión TCP)
- Puede contener una consulta de estado ("¿tiene papel?", Que obviamente puede ejecutar)
- Puede contener un comando de impresión ("imprima esto", que podría fallar si no tiene papel)
Sugeriría que si los usuarios ven y envían ACK pero aún experimentan problemas de conectividad, es mucho más probable que haya problemas de congestión, sistema operativo o aplicaciones que cualquier cosa estrictamente relacionada con la red.
Para diagnosticar, sugiero buscar retransmisiones, en lugar de los ACK específicamente.