Date: Mon, 19 Jun 2006 09:58:40 +0800 From: Blue <Susan.Lan@zyxel.com.tw> To: freebsd-net@freebsd.org Subject: [freeBSD-6.1RELEASE] wonderings about function tcp_input() Message-ID: <449604D0.8090701@zyxel.com.tw>
next in thread | raw e-mail | index | archive | help
Hi, all: I have a question about line 1765 to 1776 in tcp_input(): /* * If the ACK bit is off: if in SYN-RECEIVED state or SENDSYN * flag is on (half-synchronized state), then queue data for * later processing; else drop segment and return. */ if ((thflags & TH_ACK) == 0) { if (tp->t_state == TCPS_SYN_RECEIVED || (tp->t_flags & TF_NEEDSYN)) goto step6; else goto drop; } My question is: if we are currently in TCPS_SYN_RECEIVED state, why does a segment without ACK bother? Why we need to store the segment and process it? Without considering T/TCP, the code should be: if ((thflags & TH_ACK) == 0) { goto drop; } Best regards, blue
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?449604D0.8090701>