TCP SYN扫描学习笔记

1.TCP SYN包扫描主机状态的原理:tcp协议规定,当目标主机收到一个tcp syn 包时,若目标主机处于开放状态,会返回给源主机一个tcp ack 包(目的端口开放),或者向源主机发送一个tcp  rst包(目的端口未开放),源主机若收到tcp ack包或者tcp rst包则说明目标主机是开放的,未收到这两个包则判定目标主机为关闭的。

2.若没有收到tcp ack包或者 tcp rst包,为什么判定目标主机为关闭的呢?

答:扫描目标主机状态主要是想知道能否向目标主机发送数据,若无法收到响应包,无论是什么原因导致的(可能是目标主机不可达,被防火墙过滤掉,目标主机确实没开机等),都说明无法向目标主机发送数据,就我们所关心的而言,可以判定目标主机处于关闭状态

3.可以自己构造tcp syn包,ip首部,但不要自己构造整个mac帧,因为目的ip地址对应的mac地址未知,想要获取目的mac地址会很麻烦

4.数据发送到网络之前,当其长度大于一个字节时要进行大小端转化

5.计算结构体长度时要注意,结构体长度一般不等于其内部所有成员长度之和,这是因为系统对结构体分配内存的具有规则

6. 因为本程序中构造的tcp syn包,仅用于探测目标主机状态,所以源端口和目的端口号都是任意的

7.为什么缓冲区指针通常用 char *P,因为若缓冲区数据有几段构成,每段为不同的类型时比较方便。

8.tcp和udp计算校验和时要注意加上伪首部,将伪首部和实际首部做为一个整体计算校验和,不可以分开计算再相加,校验和不用进行大小端转化

9.

原文地址:https://www.cnblogs.com/adelep/p/6073397.html