用c实现一个扫描器,构造ip包,为什么要定义数据包序列号

时间:2008-06-12 15:10:01   来源:论坛整理  作者:  编辑:chinaitzhe
RT
like this :
#define SEQ 0X28376839

网友回复:?????
不明白……

网友回复:程序中有两个地方用到

1.发送SYN 数据tcp_header.th_seq=htonl(SEQ)
2.解IP包判定序列号是否正确ntohl(tcphdr->th_ack)!=(SEQ 1)&&(ntohl(tcphdr->th_ack)!=SEQ)return;

tcp_header为tcp结构变量
网友回复:两台计算机间的每条信息都有一个由发送方产生的序列号,序列号的使用使得双方知道他们之间是同步的
网友回复:shit..

能先把你扫描的思路告诉我吗?
是直接connect,还是半连接,还是隐藏。。
网友回复:BSD对TCP头部的定义:
struct tcphdr {
u_short th_sport; /* source port */
u_short th_dport; /* destination port */
tcp_seq th_seq; /* sequence number */
tcp_seq th_ack; /* acknowledgement number */
#if BYTE_ORDER == LITTLE_ENDIAN
u_char th_x2:4, /* (unused) */
th_off:4; /* data offset */
#endif
#if BYTE_ORDER == BIG_ENDIAN
u_char th_off:4, /* data offset */
th_x2:4; /* (unused) */
#endif
u_char th_flags;
#define TH_FIN 0x01
#define TH_SYN 0x02
#define TH_RST 0x04
#define TH_PUSH 0x08
#define TH_ACK 0x10
#define TH_URG 0x20
u_short th_win; /* window */
u_short th_sum; /* checksum */
u_short th_urp; /* urgent pointer */
};


有个th_seq;在写程序时要对其进行赋值。
网友回复:根据这个序号来对相应的包进行收发回应的。

建议看一下tcpip协议第二卷第二十四章,,呵呵,我刚开始学。。。
网友回复:序列号用于维持可靠的tcp连接
ip尽力而为不需要序号
网友回复:用来,判定数据包到达的前后顺序;因为到了上一层,要组装;
网友回复:多谢各位
该扫描器是一个SYN扫描器

正在研究...
网友回复:syn只是利用第二次握手
序列号无所谓。自己记住就好。以验证返回时的包
网友回复:同上 只是验证此TCP/IP协议.TCP/IP协议需要验证,序列号用于验证.以建立可靠的tcp连接.
关键字:实现,一个,扫描器,构造,ip,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面