Messages in this thread | | | Subject | Re: TCP stack behaviour question | From | Andi Kleen <> | Date | 18 Sep 2006 10:29:12 +0200 |
| |
"Stuart MacDonald" <stuartm@connecttech.com> writes:
> I'm having some trouble with a network application I've written. I've > done a lot of research the last few days; man 7 ip, man 7 tcp, kernel > 2.4.31 source code, Stevens' Illustrated TCP/IP Vol 1 & 3 (for some > reason we don't have Vol 2), Usenet, websites. I'm hoping someone here > can help me out, or point me in the correct direction.
Stevens is a good reference to BSD networking, but not necessarily to Linux.
> Question 1: There's the original packet, plus 7 retransmitted packets > for a total of 8, then TCP gives up. How is 7 (or 8) derived from the > tcp_retries[12] settings?
Documented in tcp(7)
> Question 1a: The time between last and second-last retransmit packets > is only about 27 seconds. I've read there's a maximum time, but also > that it's usually 100 or 120 seconds. Where can I find that setting in > /proc?
It's fixed by the TCP specification.
> Question 2: After the retransmit has given up, the app is still > making an occasional write(), which succeeds! However, tearing down > and attemting a new connection results in an immediate EHOSTUNREACH > error. Why is the write() succeeding?
It goes all in the local buffer, until it starts blocking (or EAGAIN for non blocking sockets)
> > Question 2a: How can my app find out the EHOSTUNREACH error > immediately? IP_RECVERR is not implemented on TCP, and SO_ERROR always > reports no error (0).
Did you really read the manpages? It is implemented and it's documented.
-Andi (your new temporary manpage proxy) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |