I have been trying very hard to find about buffers used in TCP/IP as part of packet transfer in linux. More i read, more i get confused. Below given are questions i have. Can someone help me figure it out?
1)Is the driver queue which is implemented as a ring buffer with descriptors pointing to skbs, same as receive and send buffers of TCP? If not when does receive/send buffers of TCP comes to picture in the packet travel?
2)Is TCP connection backlog queue totally different queue from accept/receive queue? Where does backlog queue fit in the packet travel? I understand backlog queue is for pending connections.
3)Is there a separate buffer area for each socket to which data is transferred from TCP accept/send buffers?
4)For incoming connections is the correct flow? NIC -> Kernel Ring buffer(skb) -> IP stack -> TCP accept/receive buffers -> Qdisc layer -> socket buffer for connection.