If a client sends a message to the server using TCP and an ack is received then does it mean that the application (on the server) for which the message was intended has received the message.
The question is that when is the ack sent , on receipt of the message by the operating system or on the receipt of MSG by the application(on the server).
It should be the app that is responding unless you have something else setup.
Is it confirmed that it is the application which sends the ACK after receiving the tcp packet??
Or is it the operating system that sends the ACK when the tcp packet is received in the OS input buffer??
Kindly confirm the situation.......Because as read the TCP protocol maintains the reliable connection in the Network Layer......
The operating system has a TCP/IP stack which handles the receiving of incoming IP packets (TCP rides on top of IP). When the stack receives the packet, it strips off any TCP-related information and has other means (other protocols) by which it delivers the data up the stack to the intended, listening application specified by the destination port field in the TCP header. The stack is what is responsible for sending back an ACK.
And strictly speaking, TCP does not reside at the Network layer. IP is at the Network layer and TCP rides on top of it at the Transport layer.
When does the OS stack sends the ACK?? i.e. just after receiving the packet or after giving it to the listening application....
Also, please elaborate on the protocols by which OS delivers the data up the stack to the intended, listening application specified by the destination port field in the TCP header.
Rather than asking me, why don't you google these questions? There is tons of information on TCP/IP on the net; most of which can give you much better answers than I can.
Typically, a TCP stack would send the ACK when it gets data, regardless of whether the app is ready to receive the data (typically from a socket).