If I have a mobile host on a GPRS or CDMA network, connecting to a land
based host, can I assume that all of the hops in between simply relay TCP
packets between the two hosts? Is it possible that the data gets buffered
somewhere in between and that an ack is sent from somewhere other than the
end hosts?

I'm having connectivity problems with a mobile on a CDMA network. The
same device is working fine with GPRS. What I see on the GPRS host, when
everything is working fine, is that the mobile host sends a data packet to
the server and receives a data packet with an application level ack. The
same happens on CDMA, when all is well the mobile end sends a data packet
and gets a application level ack back. But sometimes I'm only
getting a TCP level ack back from the server end. The mobile end waits
for the application level ack and times out when it doesn't get it.
There's no reason why the server should respond differently to a GPRS or
CDMA mobile. All I can think of is that the server end sees a small
window TCP window size so the stack doesn't include any data when it sends
the TCP ack. Or that somewhere the connection is lost and an intermediary
hop is sending the TCP ack. I don't have access to the server to get a