Windows下完成SCTP简单抓包

1 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了在Windows环境下使用sctplib和Wireshark进行SCTP简单抓包的步骤,包括关闭防火墙、启动服务、建立连接和分析报文流程。重点解析了SCTP的四次握手过程,如INIT、INIT-ACK、COOKIE-ECHO、COOKIE-ACK和SACK数据报文,以及心跳块和心跳ACK块的功能。实验展示了SCTP的多宿主特性及连接维护机制。
摘要由CSDN通过智能技术生成

Windows下完成SCTP简单抓包


一、实验主机信息

在

二、所使用的程序

sctplib-1.0.4.exe、glib-1.2.zip 、wireshark
http://www.sctp.be/sctplib/
具体软件安装请见:SCTP在windows下简单实现发包

三、程序安装

1.将sctplib-1.0.4.exe和glib-1.2.zip下载到本地计算机上。

2.安装 sctplib-1.0.4.exe到本机器上,安装完后将glib-1.2.zip解压到它的安装目录下,例如:E:/Program Files/sctplib下面。

3.这个SCTP的实现是在两个机器之间进行的,所以要另外一台机器也要和你自己安装相同的工具(以上两个)。

四、实验过程

  1. 由于Windows自带防火墙的存在,当带有防火墙的主机收到了SCTP的INIT信息后,防火墙会直接将该包丢弃,所以在实验开始前关闭两个主机的防火墙
  2. S端先以管理员模式打开echo_server,C端在命令提示符窗口中打开echo_tool(先开S端,再开C端)
  3. 在C端命令中输入 echo_tool -d 192.168.1.108(S端IP),即可与S端建立连接,并可以在抓包软件中看到SCTP四握手,等待大约30秒即可收到SCTP的heartbeat报文与heartbeat_ACK报文

在这里插入图片描述

  1. C端命令中输入echo_tool -d 192.168.1.108(S端IP)-n 1,即可在上述过程之外再抓到C端与S端互发的DATA数据块,其中双方的确认方式均为选择确认(确认模式固定,发包内容大小固定,可能无法改变?)

  2. 由于程序设置的问题,无法主动正常断开链接,只能通过ctrl+c异常断开,故在3.4步骤后续中抓到的包为ICMP协议不可达(C段程序断开,协议信息无法送达)
    在这里插入图片描述

  3. 其他参数可由C端指令符中echo_tool/?获得其参数对应的作用

五、报文分析

1.SCTP报文格式

在这里插入图片描述
在这里插入图片描述

2.SCTP四次握手

在这里插入图片描述
在这里插入图片描述

SCTP INIT报文

SCTP INIT-ACK 数据报

注:INIT中的验证标志位,因为还未接收到对方ACK中的初始标志,默认为0

在这里插入图片描述

字段长度意义
初始标志4用于确定一对连接的值。这个值必须被放置到INIT的接收方发送的与该连接相关的每个SCTP分组中的验证标签字段中。初始标签允许除0以外的的任何值。如果在收到的INIT数据块中的启动标签为0,则接收方发送ABORT数据块中止该连接。
窗口大小4表示指定的缓冲区的容量,用字节数表示,为INIT发送方为连接预留的窗口大小。
输出流2表示发送方希望数据输出流的数量
输入流2表示发送方允许接收数据流的数量
初始TSN4定义发送方的初始TSN,类似于TCP中的序号
可变长参数可变参见以下

可变长参数:IPv4地址参数(5)
在这里插入图片描述

IPv4地址(32bit无符号整数):包含发送方端点的IPv4地址,采用二进制编码。
IPv6地址参数(6)
在这里插入图片描述

IPv6地址(128bit的无符号整数):包含发送方端点的IPv6地址,采用二进制编码。
注:多个地址参数体现SCTP的多宿主特点

防止Cookie过期参数(9)
INIT的发送方应使用这个参数来建议INIT的接收方提供较长存活跨度的状态Cookie。
在这里插入图片描述

建议的COOKIE存活跨度增量(32bit的无符号整数),该参数用来向接收方指示发送方希望接收方为其缺省的COOKIE的存活跨度增加的毫秒数。
由于失效的cookie操作差错原因,前一次尝试与对等端建立连接失败后,又重新尝试连接建立时,这个任选参数应能由发送方添加到INIT数据块中。

主机名地址(11)
INIT发送方使用这个参数把其主机名(在其IP地址的位置中)传递到对等层。这个对等层负责解析这个主机名,用这个参数可以使连接工作通过NAT box进行工作
在这里插入图片描述

主机名:可变长度,该字段包含了按照RFC1123规定的“主机名句法”定义的主机名,主机名地址的解析不在本标准中规定,该参数中至少有一个非空的中止符包含在主机名字符串中,并且应包含长度。

支持的地址类型(12)
NIT的发送方使用该参数列出其所支持的全部地址类型。
在这里插入图片描述

地址类型(16bit无符号整数):该参数使用对应的地址类型的类型值(例如:IPv4=5,IPv6=6,主机名=11)

实例分析:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
注:Parameter padding字段用于参数填充,使其对齐或成为8的整数倍(二进制),能够进行差错检验和计算

SCTP INIT_ACK 数据报

在这里插入图片描述
在这里插入图片描述
报文实例:
在这里插入图片描述
在这里插入图片描述

SCTP COOKIE_ECHO数据报

在这里插入图片描述
在这里插入图片描述
报文实例:

在这里插入图片描述

SCTP COOKIE_ACK 数据报

在这里插入图片描述
在这里插入图片描述
报文实例:
在这里插入图片描述
在这里插入图片描述

SCTP SACK数据报

在这里插入图片描述

字段长度意义
类型1
标志2设为全0并由接收方忽略
长度4
累积TSN确认4该参数包含了在收到TSN序列的间隔前的最后一个TSN值
窗口大小2规定了SACK的发送方的接收缓冲容量的字节数。
间隔ACK块数2用来指示SACK数据块中包含的间隔证实块的数目
重复TSN数2该字段包含了该端点收到的重复的TSN的数目
间隔ACK块结束偏移量2该字段用来指示这个间隔整数块的起始TSN偏移,为了计算实际的TSN号码必须要用累积TSN证实加上偏移号码。
重复TSN4用来指示一个在上一个SACK发送后收到的TSN重复的个数。每次一个接收者收到一个重复的TSN(在发送SACK前),则把这个TSN加到重复的TSN列表中。

SCTP DATA块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
报文实例:
在这里插入图片描述
在这里插入图片描述
注:该SACK+DATA中的DATA未发生分片,且按序。

注:以下两个报文为另一次连接建立所抓到的,所以固定首部中的验证标志位与上面不同。

SCTP HEARTBEAT块

在这里插入图片描述
在这里插入图片描述
(意义:用于检测连接对象是否已经断开)
报文实例:
在这里插入图片描述
在这里插入图片描述

SCTP HEARTBEAT_ACK块

在这里插入图片描述
在这里插入图片描述

报文实例:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值