检测来自传输层的攻击及防御
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
0. 传输层
传输层在IP层的上层,通常是IP头中protocol字段中指定的协议,通常用得最多的是TCP(6)和UDP(1)。
为方便理解,先列出TCP和UDP头结构,下面是RFC793定义的TCP头结构:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Source Port: 源端口,16位Destination Port: 目的端口,16位Sequence Number:序列号,32位,TCP用它来保证有序传输数据Acknowledgment Number:确认号,32位,指明希望对方发送数据的序列号,以前的数据已经正确接收Data Offset:数据偏移量,4位,指名数据相对于TCP头的偏移量,可理解为TCP头长度,和IP头长度一样,也是以4个字节为一个单位,最小为5,最大15,分别表示头长为20,60字节Reserved:保留位URG:紧急标志,1位,有该标志时Urgent Pointer通常不为0ACK:确认标志,1位,有该标志时Acknowledgment Number通常不为0PSH:PUSH“推”标志,1位,有该标志时data长度通常不为0RST:重置标志,1位,用于异常断开TCP连接SYN:同步标志,1位,用于TCP连接FIN:结束标志,1位,表示不再发送数据Window:窗口大小,16位,表示目前接收缓冲区大小,用于流量控制Checksum: 校验和,16位,校验范围为伪IP头+TCP头+数据Urgent Pointer:紧急指针,16位,用于指示紧急数据位置Options: IP选项,长度从0到40字节Padding: 填充字节,TCP头都要是4的倍数,不够的以0填充
Source Port: 源端口,16位Destination Port: 目的端口,16位Length:长度,16位,包括UDP头和数据总长Checksum: 校验和,16位,校验范围为伪IP头+UDP头+数据,也可以为0,表示不进行校验