亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tcp.h

?? TCPIP協(xié)議包
?? H
字號:
#ifndef	_TCP_H
#define	_TCP_H

/* TCP implementation. Follows RFC 793 as closely as possible */
#ifndef	_GLOBAL_H
#include "global.h"
#endif

#ifndef	_MBUF_H
#include "mbuf.h"
#endif

#ifndef	_IFACE_H
#include "iface.h"
#endif

#ifndef	_INTERNET_H
#include "internet.h"
#endif

#ifndef _IP_H
#include "ip.h"
#endif

#ifndef	_NETUSER_H
#include "netuser.h"
#endif

#ifndef	_TIMER_H
#include "timer.h"
#endif

#define	DEF_MSS	512	/* Default maximum segment size */
#define	DEF_WND	2048	/* Default receiver window */
#define	RTTCACHE 16	/* # of TCP round-trip-time cache entries */
#define	DEF_RTT	5000	/* Initial guess at round trip time (5 sec) */
#define	MSL2	30	/* Guess at two maximum-segment lifetimes */
#define	MIN_RTO	500L	/* Minimum timeout, milliseconds */
#define	TCP_HDR_PAD	70	/* mbuf size to preallocate for headers */
#define	DEF_WSCALE	0	/* Our window scale option */

#define	geniss()	((int32)msclock() << 12) /* Increment clock at 4 MB/sec */

/* Number of consecutive duplicate acks to trigger fast recovery */
#define	TCPDUPACKS	3

/* Round trip timing parameters */
#define	AGAIN	8	/* Average RTT gain = 1/8 */
#define	LAGAIN	3	/* Log2(AGAIN) */
#define	DGAIN	4	/* Mean deviation gain = 1/4 */
#define	LDGAIN	2	/* log2(DGAIN) */

/* TCP segment header -- internal representation
 * Note that this structure is NOT the actual header as it appears on the
 * network (in particular, the offset field is missing).
 * All that knowledge is in the functions ntohtcp() and htontcp() in tcpsubr.c
 */
#define TCPLEN		20	/* Minimum Header length, bytes */
#define	TCP_MAXOPT	40	/* Largest option field, bytes */
struct tcp {
	uint16 source;	/* Source port */
	uint16 dest;	/* Destination port */
	int32 seq;	/* Sequence number */
	int32 ack;	/* Acknowledgment number */
	uint16 wnd;			/* Receiver flow control window */
	uint16 checksum;		/* Checksum */
	uint16 up;			/* Urgent pointer */
	uint16 mss;			/* Optional max seg size */
	uint8 wsopt;			/* Optional window scale factor */
	uint32 tsval;			/* Outbound timestamp */
	uint32 tsecr;			/* Timestamp echo field */
	struct {
		unsigned int congest:1;	/* Echoed IP congestion experienced bit */
		unsigned int urg:1;
		unsigned int ack:1;
		unsigned int psh:1;
		unsigned int rst:1;
		unsigned int syn:1;
		unsigned int fin:1;
		unsigned int mss:1;	/* MSS option present */
		unsigned int wscale:1;	/* Window scale option present */
		unsigned int tstamp:1;	/* Timestamp option present */
	} flags;
};
/* TCP options */
#define	EOL_KIND	0
#define	NOOP_KIND	1
#define	MSS_KIND	2
#define	MSS_LENGTH	4
#define	WSCALE_KIND	3
#define	WSCALE_LENGTH	3
#define	TSTAMP_KIND	8
#define	TSTAMP_LENGTH	10

/* Resequencing queue entry */
struct reseq {
	struct reseq *next;	/* Linked-list pointer */
	struct tcp seg;		/* TCP header */
	struct mbuf *bp;	/* data */
	uint16 length;		/* data length */
	char tos;		/* Type of service */
};
/* These numbers match those defined in the MIB for TCP connection state */
enum tcp_state {
	TCP_CLOSED=1,
	TCP_LISTEN,
	TCP_SYN_SENT,
	TCP_SYN_RECEIVED,
	TCP_ESTABLISHED,
	TCP_FINWAIT1,
	TCP_FINWAIT2,
	TCP_CLOSE_WAIT,
	TCP_LAST_ACK,
	TCP_CLOSING,
	TCP_TIME_WAIT,
};

/* TCP connection control block */
struct tcb {
	struct tcb *next;	/* Linked list pointer */

	struct connection conn;

	enum tcp_state state;	/* Connection state */

	char reason;		/* Reason for closing */
#define	NORMAL		0	/* Normal close */
#define	RESET		1	/* Reset by other end */
#define	TIMEOUT		2	/* Excessive retransmissions */
#define	NETWORK		3	/* Network problem (ICMP message) */

/* If reason == NETWORK, the ICMP type and code values are stored here */
	uint8 type;
	uint8 code;

	/* Send sequence variables */
	struct {
		int32 una;	/* First unacknowledged sequence number */
		int32 nxt;	/* Next sequence num to be sent for the first time */
		int32 ptr;	/* Working transmission pointer */
		int32 wl1;	/* Sequence number used for last window update */
		int32 wl2;	/* Ack number used for last window update */
		int32 wnd;	/* Other end's offered receive window */
		uint16 up;	/* Send urgent pointer */
		uint8 wind_scale;/* Send window scale */
	} snd;
	int32 iss;		/* Initial send sequence number */
	int32 resent;		/* Count of bytes retransmitted */
	int32 cwind;		/* Congestion window */
	int32 ssthresh;		/* Slow-start threshold */
	int dupacks;		/* Count of duplicate (do-nothing) ACKs */

	/* Receive sequence variables */
	struct {
		int32 nxt;	/* Incoming sequence number expected next */
		int32 wnd;	/* Our offered receive window */
		uint16 up;	/* Receive urgent pointer */
		uint8 wind_scale;/* Recv window scale */
	} rcv;
	int32 last_ack_sent;	/* Last ack sent for timestamp purposes */
	int32 ts_recent;	/* Most recent incoming timestamp */

	int32 irs;		/* Initial receive sequence number */
	int32 rerecv;		/* Count of duplicate bytes received */
	int32 mss;		/* Maximum segment size */

	int32 window;		/* Receiver window and send queue limit */
	int32 limit;		/* Send queue limit */

	void (*r_upcall)(struct tcb *tcb,int32 cnt);
		/* Call when "significant" amount of data arrives */
	void (*t_upcall)(struct tcb *tcb,int32 cnt);
		/* Call when ok to send more data */
	void (*s_upcall)(struct tcb *tcb,int old,int new);
		/* Call when connection state changes */
	struct {	/* Control flags */
		unsigned int force:1;	/* We owe the other end an ACK or window update */
		unsigned int clone:1;	/* Server-type TCB, cloned on incoming SYN */
		unsigned int retran:1;	/* A retransmission has occurred */
		unsigned int active:1;	/* TCB created with an active open */
		unsigned int synack:1;	/* Our SYN has been acked */
		unsigned int rtt_run:1;	/* We're timing a segment */
		unsigned int congest:1;	/* Copy of last IP congest bit received */
		int ts_ok:1;	/* We're using timestamps */
		int ws_ok:1;		/* We're using window scaling */
	} flags;
	char tos;		/* Type of service (for IP) */
	int backoff;		/* Backoff interval */

	struct mbuf *rcvq;	/* Receive queue */
	struct mbuf *sndq;	/* Send queue */
	int32 rcvcnt;		/* Count of items on rcvq */
	int32 sndcnt;		/* Number of unacknowledged sequence numbers on
				 * sndq. NB: includes SYN and FIN, which don't
				 * actually appear on sndq!
				 */

	struct reseq *reseq;	/* Out-of-order segment queue */
	struct timer timer;	/* Retransmission timer */
	int32 rtt_time;		/* Stored clock values for RTT */
	int32 rttseq;		/* Sequence number being timed */
	int32 rttack;		/* Ack at start of timing (for txbw calc) */
	int32 srtt;		/* Smoothed round trip time, milliseconds */
	int32 mdev;		/* Mean deviation, milliseconds */
	int32 rtt;		/* Last received RTT (for debugging) */

	int user;		/* User parameter (e.g., for mapping to an
				 * application control block
				 */
	int32 quench;		/* Count of incoming ICMP source quenches */
	int32 unreach;		/* Count of incoming ICMP unreachables */
	int32 timeouts;		/* Count of retransmission timeouts */
	int32 lastack;		/* Time of last received ack */
	int32 txbw;		/* Estimate of transmit bandwidth */
	int32 lastrx;		/* Time of last received data */
	int32 rxbw;		/* Estimate of receive bandwidth */
};
/* TCP round-trip time cache */
struct tcp_rtt {
	int32 addr;		/* Destination IP address */
	int32 srtt;		/* Most recent SRTT */
	int32 mdev;		/* Most recent mean deviation */
};
extern struct tcp_rtt Tcp_rtt[];
extern int (*Kicklist[])();

/* TCP statistics counters */
struct tcp_stat {
	uint16 runt;		/* Smaller than minimum size */
	uint16 checksum;		/* TCP header checksum errors */
	uint16 conout;		/* Outgoing connection attempts */
	uint16 conin;		/* Incoming connection attempts */
	uint16 resets;		/* Resets generated */
	uint16 bdcsts;		/* Bogus broadcast packets */
};
extern struct mib_entry Tcp_mib[];
#define	tcpRtoAlgorithm	Tcp_mib[1].value.integer
#define	tcpRtoMin	Tcp_mib[2].value.integer
#define	tcpRtoMax	Tcp_mib[3].value.integer
#define	tcpMaxConn	Tcp_mib[4].value.integer
#define	tcpActiveOpens	Tcp_mib[5].value.integer
#define tcpPassiveOpens	Tcp_mib[6].value.integer
#define	tcpAttemptFails	Tcp_mib[7].value.integer
#define	tcpEstabResets	Tcp_mib[8].value.integer
#define	tcpCurrEstab	Tcp_mib[9].value.integer
#define	tcpInSegs	Tcp_mib[10].value.integer
#define	tcpOutSegs	Tcp_mib[11].value.integer
#define	tcpRetransSegs	Tcp_mib[12].value.integer
#define	tcpInErrs	Tcp_mib[14].value.integer
#define	tcpOutRsts	Tcp_mib[15].value.integer
#define	NUMTCPMIB	15

extern struct tcb *Tcbs;
extern char *Tcpstates[];
extern char *Tcpreasons[];

/* In tcpcmd.c: */
extern int Tcp_tstamps;
extern int32 Tcp_irtt;
extern uint16 Tcp_limit;
extern uint16 Tcp_mss;
extern int Tcp_syndata;
extern int Tcp_trace;
extern uint16 Tcp_window;

void st_tcp(struct tcb *tcb);

/* In tcphdr.c: */
void htontcp(struct tcp *tcph,struct mbuf **data,
	int32 ipsrc,int32 ipdest);
int ntohtcp(struct tcp *tcph,struct mbuf **bpp);

/* In tcpin.c: */
void reset(struct ip *ip,struct tcp *seg);
void send_syn(struct tcb *tcb);
void tcp_input(struct iface *iface,struct ip *ip,struct mbuf **bpp,
	int rxbroadcast,int32 said);
void tcp_icmp(int32 icsource,int32 source,int32 dest,
	uint8 type,uint8 code,struct mbuf **bpp);

/* In tcpsubr.c: */
void close_self(struct tcb *tcb,int reason);
struct tcb *create_tcb(struct connection *conn);
struct tcb *lookup_tcb(struct connection *conn);
void rtt_add(int32 addr,int32 rtt);
struct tcp_rtt *rtt_get(int32 addr);
int seq_ge(int32 x,int32 y);
int seq_gt(int32 x,int32 y);
int seq_le(int32 x,int32 y);
int seq_lt(int32 x,int32 y);
int seq_within(int32 x,int32 low,int32 high);
void settcpstate(struct tcb *tcb,enum tcp_state newstate);
void tcp_garbage(int red);

/* In tcpout.c: */
void tcp_output(struct tcb *tcb);

/* In tcptimer.c: */
int32 backoff(int n);
void tcp_timeout(void *p);

/* In tcpuser.c: */
int close_tcp(struct tcb *tcb);
int del_tcp(struct tcb *tcb);
int kick(int32 addr);
int kick_tcp(struct tcb *tcb);
struct tcb *open_tcp(struct socket *lsocket,struct socket *fsocket,
	int mode,uint16 window,
	void (*r_upcall)(struct tcb *tcb,int32 cnt),
	void (*t_upcall)(struct tcb *tcb,int32 cnt),
	void (*s_upcall)(struct tcb *tcb,int old,int new),
	int tos,int user);
int32 recv_tcp(struct tcb *tcb,struct mbuf **bpp,int32 cnt);
void reset_all(void);
void reset_tcp(struct tcb *tcb);
long send_tcp(struct tcb *tcb,struct mbuf **bpp);
char *tcp_port(uint16 n);
int tcpval(struct tcb *tcb);

#endif	/* _TCP_H */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产a视频精品免费观看| 一级精品视频在线观看宜春院| 蜜臀久久99精品久久久久久9| 在线视频国产一区| 国产高清在线观看免费不卡| 精品动漫一区二区三区在线观看| 久久疯狂做爰流白浆xx| 精品女同一区二区| 成人一区二区三区| 亚洲激情av在线| 这里只有精品视频在线观看| 老司机精品视频一区二区三区| 精品成人私密视频| 不卡av在线免费观看| 樱桃国产成人精品视频| 欧美日韩国产精选| 久久国产免费看| 国产精品美女久久久久久久久久久 | 色狠狠综合天天综合综合| 一区二区三区免费网站| 欧美一区二区三区视频在线观看| 国产一本一道久久香蕉| 自拍偷拍亚洲激情| 91精品国产色综合久久| 国产成人99久久亚洲综合精品| 亚洲免费毛片网站| 日韩欧美视频一区| 96av麻豆蜜桃一区二区| 日本视频中文字幕一区二区三区| 国产日韩欧美制服另类| 中文字幕在线不卡一区二区三区| 欧洲在线/亚洲| 国产大陆精品国产| 视频在线观看91| 国产欧美日韩精品一区| 欧美人伦禁忌dvd放荡欲情| 国产aⅴ精品一区二区三区色成熟| 一区二区三区四区激情| 久久久久久久免费视频了| 欧美色综合久久| 国产精品一二三区| 日本欧美韩国一区三区| 亚洲视频电影在线| 久久九九久精品国产免费直播| 欧美日韩精品一区二区三区四区 | 亚洲一区二区三区四区在线免费观看 | caoporm超碰国产精品| 日本美女视频一区二区| 综合婷婷亚洲小说| 日本一区二区三级电影在线观看| 欧美日韩精品一区二区天天拍小说| 成人成人成人在线视频| 韩国一区二区三区| 蜜臀久久久久久久| 亚洲大片精品永久免费| 最近中文字幕一区二区三区| 久久久国产一区二区三区四区小说| 欧美日韩国产色站一区二区三区| 精品久久人人做人人爰| 91精品国产色综合久久ai换脸| 91国偷自产一区二区三区成为亚洲经典| 国产精品888| 蜜臀国产一区二区三区在线播放| 午夜精品久久久久久久| 亚洲国产精品久久艾草纯爱| 亚洲免费在线看| 国产精品盗摄一区二区三区| 国产精品天美传媒| 中文字幕巨乱亚洲| 国产欧美一二三区| 欧美高清在线精品一区| 亚洲国产精品二十页| 国产网红主播福利一区二区| 久久天堂av综合合色蜜桃网| 久久综合资源网| 久久综合九色欧美综合狠狠| 精品理论电影在线观看| 久久人人超碰精品| 久久久久9999亚洲精品| 国产亚洲综合av| 国产性色一区二区| 国产精品久久久久一区| 亚洲丝袜另类动漫二区| 亚洲精品久久久蜜桃| 亚洲一区二区在线免费观看视频| 亚洲午夜精品17c| 免费一级片91| 国产裸体歌舞团一区二区| 国产成人综合视频| 99久久免费视频.com| 91久久精品日日躁夜夜躁欧美| 在线免费观看一区| 欧美二区三区的天堂| 精品91自产拍在线观看一区| 国产日本欧美一区二区| 亚洲人成伊人成综合网小说| 午夜视频一区二区| 精品一区二区三区免费毛片爱 | 成人高清视频在线| 色欧美日韩亚洲| 3d动漫精品啪啪1区2区免费| 精品国产91久久久久久久妲己| 久久久777精品电影网影网| 国产精品色婷婷久久58| 亚洲综合清纯丝袜自拍| 裸体一区二区三区| 成人久久视频在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲欧洲精品一区二区精品久久久| 国产精品成人免费在线| 首页国产丝袜综合| 国产综合一区二区| 色国产综合视频| 精品欧美一区二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲综合男人的天堂| 国产综合一区二区| 在线免费观看不卡av| 精品美女在线观看| 亚洲制服丝袜在线| 国产精品一区二区在线播放 | 麻豆91免费观看| 久久亚洲精华国产精华液| 一区二区三区四区五区视频在线观看 | 久久电影网电视剧免费观看| av电影在线不卡| 日韩视频免费观看高清完整版| 国产精品黄色在线观看| 男人的j进女人的j一区| eeuss鲁片一区二区三区在线看| 91麻豆精品国产91久久久久久| 欧美国产综合色视频| 日韩福利电影在线| 色综合久久99| 欧美韩国日本不卡| 麻豆国产精品官网| 欧美揉bbbbb揉bbbbb| 国产精品污网站| 国产一区二区导航在线播放| 欧美精品日韩精品| 亚洲精品国产成人久久av盗摄| 国产精品一区二区视频| 欧美一区二区日韩一区二区| 一区二区日韩av| 99精品1区2区| 中文字幕免费观看一区| 久久国产精品99精品国产| 欧美日韩一区二区三区四区| 国产精品久久精品日日| 国产91精品在线观看| 欧美xxxx老人做受| 日韩国产欧美三级| 欧美日韩精品久久久| 亚洲精品水蜜桃| 色老汉一区二区三区| 亚洲视频免费在线观看| www.欧美亚洲| 国产精品久久福利| av电影在线不卡| 国产精品国产自产拍高清av王其| 国产99久久久国产精品| 久久久国产综合精品女国产盗摄| 国产一区二区三区四区五区美女| 亚洲精品视频在线观看网站| 成人黄色一级视频| 中文字幕不卡在线观看| 成人天堂资源www在线| 亚洲国产精品99久久久久久久久| 国产成人8x视频一区二区| 国产精品午夜在线| 99久久亚洲一区二区三区青草| 中文字幕中文字幕一区| 不卡欧美aaaaa| 亚洲欧美日本韩国| 欧美亚洲自拍偷拍| 午夜精品影院在线观看| 制服丝袜中文字幕一区| 美腿丝袜亚洲三区| 久久综合色8888| 成人性生交大片免费看在线播放| 国产日产欧美一区二区视频| 成人毛片老司机大片| 亚洲美女免费视频| 欧美男生操女生| 美女一区二区三区| 中文av一区二区| 在线看不卡av| 麻豆国产欧美一区二区三区| 国产三级精品三级| 色婷婷精品大视频在线蜜桃视频| 亚洲一区二区三区自拍| 日韩精品一区二| 波多野结衣在线一区| 夜夜爽夜夜爽精品视频| 欧美一级高清大全免费观看| 国产成人亚洲综合色影视| 亚洲欧美日韩一区二区三区在线观看| 欧美色视频在线| 国产美女在线观看一区| 一区二区三区不卡视频在线观看|