基于winpcap获取设备列表

1.实验目的:

理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程。

2. 原理

CP(Transmission ControlProtocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 另一个重要的传输协议。在因特网协议族(Internetprotocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

TCP头格式

---Source Port是源端口,16位。

---Destination Port是目的端口,16位。

---Sequence Number是发送数据包中的第一个字节的序列号,32位。

---Acknowledgment Number是确认序列号,32位。

---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。

---标志位: 6位,URG表示UrgentPointer字段有意义:

ACK表示AcknowledgmentNumber字段有意义

PSH表示Push功能,RST表示复位TCP连接

SYN表示SYN报文(在建立TCP连接的时候使用)

FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。

---Checksum是校验和,16位。

---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。

连接建立

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答。

SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP三次握手的过程如下:

客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

连接终止

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。

(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。

(2) 接收到这个FIN的对端执行 “被动关闭”(passiveclose),这个FIN由TCP确认。

注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。

(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。

(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。

既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

窗口确认

TCP的一项功能就是确保每个数据段都能到达目的地。位于目的主机的TCP服务对接受到的数据进行确认,并向源应用程序发送确认信息。

配置TCP

修改建立TCP连接的超时时间

建立TCP连接需要经过三次握手:主动端先发送SYN报文,被动放回应SYN+ACK报文,然后主动端再回应ACK。

l在主动端发送SYN后,如果被动端一直不回应SYN+ACK报文,主动端会不断的重传SYN报文直到超过一定的重传次数或超时时间。

l在主动端发送SYN后,被动端回应SYN+ACK报文,但主动端不再回复ACK,被动端也会一直重传直到超过一定的重传次数或超时时间。(SYN报文攻击会出现这种情况)

可以通过以下命令配置SYN报文的超时时间(发送SYN报文到三次握手成功的最大时间),也就是建立TCP连接的超时时间。

3.实验步骤:

(1)启动tcp协议分析软件,并开始抓包。

(2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。

(3)等出现浏览的网页后停止数据包的捕获。

(4)出现协议分析界面,将filter 一栏填入tcp,则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。

时间: 2024-10-26 01:10:21

基于winpcap获取设备列表的相关文章

WinPcap获取设备列表

新建一个工程粘贴如下代码 并加入pcap头文件 然后将设置做如下更改 更改后如下所示 实验结果如下图所示 可以用Ctrl+F5调出 程序主要分为三段 获取本地机器设备列表 打印列表 释放设备列表

获取设备列表(Microsoft Visual Studio 2010)

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 我们使用Microsoft Visual Studio 2010编译工具编译程序,中WinPcap文档中模块下找

WinPcap的开发与应用:获取设备列表

获取设备列表 1.通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 下列代码能获取适配器列表,并在屏幕上显示出来,如果没有找到适配器,将打印错误信息. 有关这段代

WinPcap中获取设备列表的实验报告

实验目的 了解winpcap并对其中的获取设备列表的代码进行编译,了解Microsoft Visual studio2010,并用它编译 实验步骤 1.新建一个项目,模板选择Visual C++,右边选择win32控制台,名字自设. 2.把已获得的代码复制进去,进行编译,发现错误,进行调式,把一下项目设置好 项目-->**属性(alt+F7)配置属性-->清单工具-->输入和输出-->嵌入清单-->否 项目-->**属性(alt+F7)配置属性-->C/C++--

WinPcap 之 获取设备列表

(1)将文件解压到C盘 2.打开WinPcap中文技术文档 --> 获取设备列表(复制代码) 3.开始 --> 所有程序 --> Microsoft Visual Studio 2010文件夹 --> Microsoft Visual Studio 2010 4.文件 --> 新建 --> 项目 (输入 名称 和 位置) --> 确定 --> 粘贴代码 5.注意事项 项目-->**属性(alt+F7) 配置属性-->清单工具-->输入和输出

获取设备列表的API

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 在vs2008中调试代码的步骤: 运行环境准备:WpdPack_4_1_2安装包 1:将WpdPack_4_1_

winPcap_3_获取设备列表

获取设备列表 int pcap_findalldevs_ex ( char * source, struct pcap_rmtauth * auth, pcap_if_t ** alldevs, char * errbuf ) ·功能:获得已连接的网络适配器列表: ·该函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息: ·pcap_if结构链表中:数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述: `errbuf:一

获取设备列表(Microsoft Visual Studio 2010)含界面设计

同上次获取设备列表(Microsoft Visual Studio 2010)类似,新建项目->MFC...->选基于对话框->完成           类视图点开项目双击CaaaDlg 点击 CaaaDlg::OnInitDialog将上次的代码复制至TODO处,然后像上次配置路径: 对编译器做如下设置: 项目-->**属性(alt+F7)配置属性-->C/C++-->常规-->附加包含目录-->(是把头文件所在的文件路径添加到附加目录中) 项目-->

Microsoft Virsual 获取设备列表

实验过程: 1.打开Microsoft Visual Studio 2010,点击"文件"--"新建"--"项目",选择"MFC应用程序"并设置项目名. 2.在界面上设置提示信息--打开"工具箱"选择"combo box",调整大小. 3.删除C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe,然后运