📄 tcp_timer.h
字号:
/* @(#)tcp_timer.h 4.1 (ULTRIX) 7/2/90 *//************************************************************************ * * * Copyright (c) 1985 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * This software is furnished under a license and may be used and * * copied only in accordance with the terms of such license and * * with the inclusion of the above copyright notice. This * * software or any other copies thereof may not be provided or * * otherwise made available to any other person. No title to and * * ownership of the software is hereby transferred. * * * * This software is derived from software received from the * * University of California, Berkeley, and from Bell * * Laboratories. Use, duplication, or disclosure is subject to * * restrictions under license agreements with University of * * California and with AT&T. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * ************************************************************************//************************************************************************ * Modification History * * * * * 15-Jan-88 lp * Merge of final 43BSD changes. * * Larry Cohen - 09/16/85 * * Add 43bsd alpha tape changes for subnet routing * * * ************************************************************************//* * Copyright (c) 1982, 1986 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * * tcp_timer.h 7.3 (Berkeley) 6/30/87 *//* * Definitions of the TCP timers. These timers are counted * down PR_SLOWHZ times a second. */#define TCPT_NTIMERS 4#define TCPT_REXMT 0 /* retransmit */#define TCPT_PERSIST 1 /* retransmit persistance */#define TCPT_KEEP 2 /* keep alive */#define TCPT_2MSL 3 /* 2*msl quiet time timer *//* * The TCPT_REXMT timer is used to force retransmissions. * The TCP has the TCPT_REXMT timer set whenever segments * have been sent for which ACKs are expected but not yet * received. If an ACK is received which advances tp->snd_una, * then the retransmit timer is cleared (if there are no more * outstanding segments) or reset to the base value (if there * are more ACKs expected). Whenever the retransmit timer goes off, * we retransmit one unacknowledged segment, and do a backoff * on the retransmit timer. * * The TCPT_PERSIST timer is used to keep window size information * flowing even if the window goes shut. If all previous transmissions * have been acknowledged (so that there are no retransmissions in progress), * and the window is too small to bother sending anything, then we start * the TCPT_PERSIST timer. When it expires, if the window is nonzero, * we go to transmit state. Otherwise, at intervals send a single byte * into the peer's window to force him to update our window information. * We do this at most as often as TCPT_PERSMIN time intervals, * but no more frequently than the current estimate of round-trip * packet time. The TCPT_PERSIST timer is cleared whenever we receive * a window update from the peer. * * The TCPT_KEEP timer is used to keep connections alive. If an * connection is idle (no segments received) for TCPTV_KEEP amount of time, * but not yet established, then we drop the connection. If the connection * is established, then we force the peer to send us a segment by sending: * <SEQ=SND.UNA-1><ACK=RCV.NXT><CTL=ACK> * This segment is (deliberately) outside the window, and should elicit * an ack segment in response from the peer. If, despite the TCPT_KEEP * initiated segments we cannot elicit a response from a peer in TCPT_MAXIDLE * amount of time, then we drop the connection. */#define TCP_TTL 60 /* default time to live for TCP segs */int tcp_ttl; /* time to live for TCP segs *//* * Time constants. */#define TCPTV_MSL ( 15*PR_SLOWHZ) /* max seg lifetime */#define TCPTV_SRTTBASE 0 /* base roundtrip time; if 0, no idea yet */#define TCPTV_SRTTDFLT ( 3*PR_SLOWHZ) /* assumed RTT if no info */#define TCPTV_PERSMIN ( 5*PR_SLOWHZ) /* retransmit persistance */#define TCPTV_PERSMAX ( 60*PR_SLOWHZ) /* maximum persist interval */#define TCPTV_KEEP ( 75*PR_SLOWHZ) /* keep alive - 75 secs */#define TCPTV_MAXIDLE ( 8*TCPTV_KEEP) /* maximum allowable idle time before drop conn */#define TCPTV_MIN ( 1*PR_SLOWHZ) /* minimum allowable value */#define TCPTV_REXMTMAX ( 64*PR_SLOWHZ) /* max allowable REXMT value */#define TCP_LINGERTIME 120 /* linger at most 2 minutes */#define TCP_MAXRXTSHIFT 12 /* maximum retransmits */#ifdef TCPTIMERSchar *tcptimers[] = { "REXMT", "PERSIST", "KEEP", "2MSL" };#endif/* * Force a time value to be in a certain range. */#define TCPT_RANGESET(tv, value, tvmin, tvmax) { \ (tv) = (value); \ if ((tv) < (tvmin)) \ (tv) = (tvmin); \ else if ((tv) > (tvmax)) \ (tv) = (tvmax); \}#ifdef KERNELextern int tcp_backoff[];#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -