网络协议与攻击模拟
网络协议与攻击模拟
一、ARP协议(地址解析协议)
工作原理
- 将一个已知的IP地址解析为Mac地址,从而进行数据交互
- 是一个三层的协议,但是工作在二层
工作流程
1、两个阶段
- ARP请求(request 1)
- ARP响应(reply 2)
2、ARP协议报文格式
- 硬件类型:指明了发送方想知道的硬件类型,以太网的值为1;
- 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
- 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
- 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
- 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
- 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
- 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
- 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
- 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
- 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
- 目标IP地址(0-3字节):目的主机的IP地址
3、ARP缓存
- 主要的目的是为了避免重复去发送ARP请求
- windows操作系统的ARP命令
arp -a #查看ARP的缓存
arp -d #清楚ARP缓存
ARP攻击与欺骗
1、ARP攻击
- 伪造ARP应答报文,向被攻击的主机响应虚假的MAC地址
- 当被攻击的主机进行网络通讯时,会将数据交给虚假的MAC地址进行转发,由于虚假的MAC地址不存在,所以会造成被攻击主机无法访问网络
2、ARP欺骗
- 欺骗网关
。伪造ARP应答报文,向攻击主机和网络响应真实的MAC地址
。当被攻击主机进行网络通讯时,会将数据交给真实MAC地址进行转发,从而来截获被攻击主机的数据,这时攻击主机是可以进行网络通讯 - 欺骗主机
。伪造ARP应答报文,向攻击主机和网络响应真实的MAC地址
。当被攻击主机进行网络通讯时,会将数据交给真实MAC地址进行转发,从而来截获被攻击主机的数据,这时攻击主机是可以进行网络通讯
二、ICMP协议(Internet控制报文协议)
1、概念
- 用于在IP主机、路由器之间传递控制消息(网络通不通,主机是否可达,路由是否可用等)
- ICMP是属于网络层的协议,封装在传输层与网络层之间
2、 报文格式

类型(type)
代码(code)
1、类型
。(8 0) 请求
。(0 0) 回显应答(正常应答)
。(3 1) 目标不可达(主机)
。(11 0) 超时,传输期间生存时间为0
。(3 3) 目标不可达(端口)
。(5 0) 重定向(网络)
。(5 1) 重定向(主机)
2、常见的报文
- 响应请求
使用ping,请求(type为0),响应(type为8) - 目标不可达
type为3 - 源抑制
源抑制充当一个控制流量的角色,它通知主机减少数据包流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率 type为4 - 超时报文
类型为11 code为0 传输超时,code为1 重组分段超时 - 时间戳
type为13,时间戳请求
type为14,时间戳应答
3、ICMP重定向
在某些特定的情况,路由器检查到主机使用非优化路由时候,会向主机发送ICMP重定向报文,使主机路由改变
三、TCP协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
1、TCP报文格式

2、TCP报文字段详解
第一行:源端口和目的端口
- TCP源端口(Source Port):源计算机上的应用程序的端口号,占16位(bit)
- TCP目的端口(Destination Port):目标计算机的应用程序端口号,占16位(bit)
第二行:序列号
- TCP序列号(Sequence Number):占32位(bit),表示本报文段所发送数据的第一个字节的编号。在TCP连接中,所传送的字节流的每一个字节都会按顺序编号。
- 比如分组的第一个数据包由文件的14个字节数据组成,那么该数据包所添加的序号就是1。
- 同理,第二个数据包由文件的59个字节数据组成,那么该数据包所添加的序号就是5。
第三行:确认号
- TCP确认号:占32位(bit),表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。
- 比如接收端收到由文件14个字节数据+TCP首部组成的数据包后,删除首部提取14个字节数据,返回的确认号为5,即告诉发送端下一次应该发送文件的第5个字节及其之后字节组成的数据包过来。
第四行:(顺序如图从左到右)
- 数据偏移(即首部长度,Header Length):
- 占4位(bit),它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,也就是TCP首部的长度。
- “数据偏移”的单位是 32 位字(以 4 字节为计算单位),最大1111表示15x4=60个字节,即表示TCP首部最大长度为60个字节,因此TCP首部的“可选字段”部分最多40个字节。
- 保留字段(Reserved):
- 占 4 位。为 TCP 将来的发展预留空间,目前必须全部为 0。
- 标志位字段:
- CWR(Congestion Window Reduce):拥塞窗口减少标志,用来表明它接收到了设置 ECE 标志的 TCP 包。并且,发送方收到消息之后,通过减小发送窗口的大小来降低发送速率。
- ECE==ECN(ECN Echo):用来在 TCP 三次握手时表明一个 TCP 端是具备 ECN (显式拥塞通告)功能的。在数据传输过程中,它也用来表明接收到的 TCP 包的 IP 头部的 ECN 被设置为 11,即网络线路拥堵。
- URG(Urgent):表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效。
- ACK:表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1。
- PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。
- RST:表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。
- SYN:在建立连接时使用,用来同步序号。
- 当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段。
- 当 SYN=1,ACK=1 时,表示对方同意建立连接。
- SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为 1。
- FIN:标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。
- 窗口大小字段(Window Size):
- 占16位,TCP流量控制,表示目前还有多少空间,能接收多少数据量。
第五行:
- TCP 校验位(TCP Checksum):
- 占 16 位。它用于确认传输的数据是否有损坏。发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值。两个值必须相同,才能证明数据是有效的。如果两个值不同,则丢掉这个数据包。
- 紧急指针(Urgent Pointer):
- 占 16 位。仅当前面的 URG 控制位为 1 时才有意义,它指出本数据段中为紧急数据的字节数,当所有紧急数据处理完后,TCP 就会告诉应用程序恢复到正常操作。即使当前窗口大小为 0,也是可以发送紧急数据的,因为紧急数据无须缓存。
第六行:可选项字段
可以自定义头部字段,长度不定,但长度必须是 32bits 的整数倍,最多40个字节。
第七行:TCP数据
数据部分(可以不发送任何数据)。
3、TCP的三次握手和四次挥手

4、TCP常见端口号
- 21 ftp–文件传输协议(FTP)端口
- 22 ssh–安全 Shell(SSH)服务
- 23 telnet–Telnet 服务
- 25 smtp–简单邮件传输协议(SMTP)
- 37 time–时间协议
- 80 http–超文本传输协议
- 109 pop2–邮局协议版本2
- 110 pop3–邮局协议版本3
- 161 snmp–简单网络管理协议
- 179 bgp–边界网络协议
- 213 ipx–互联网络分组交换协议
- 443 https–安全超文本传输协议
- 1521 oracle数据库
- 3306 mysql数据库
- 5000 sql server数据库
四、UDP协议(用户数据包协议)
1、特点
- 不需要建立链接,直接发送数据,不会去重新排序,不需要确认
2、报文字段
- 源端口
- 目标端口
- UDP长度
- UDP校验
3、常见的UDP端口号
- 53 DNS
- 69 TFTP
- 111 RPC
- 123 NTP
- 161 SNMP

浙公网安备 33010602011771号