不同socket间TCP数据发送的排队有关问题

不同socket间TCP数据发送的排队问题
两个tcp流
一个正在发数据,sendbuffer开的很大,里面有一堆包(d1, d2,……dn)正在发送中
一个需要回复ACK(a1)
那这个ACK是否是sendbuffer内包被全部发完后再发送,即 d1,d2,……dn,a1的顺序?
此时ACK能否有办法插队,即 d1,a1,d2,……dn 

谢谢

------解决思路----------------------
环形队列!!!!