tcp的连接及释放过程分析

更新时间:2023-12-18 19:00:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验五 TCP 的连接及释放过程分析

【实验目的】

1. 掌握 TCP 连接建立的三次握手工作原理; 2. 理解 TCP 连接释放的四次握手工作原理。 【实验环境】

与因特网连接的计算机,操作系统为 Windows,安装有 Wireshark、IE 等软件。 【实验内容】

1. 使用 Wireshark 抓包软件分析 TCP 协议报文的类型; 2. 分析 TCP 连接建立的工作过程; 3. 分析 TCP 数据传输的工作过程; 4. 分析 TCP 连接释放的工作过程。 【实验步骤】

1. 启动 WireShark 抓包软件;

2. 使用 ping 命令,ping 你想浏览的网站,记下该网站的 ip 地址。 www.http://www.wodefanwen.com/ 119.75.218.77

3. 使用浏览器访问一个因特网网站 (例如,www.http://www.wodefanwen.com/) ,通过 Wireshark 捕获通信内容;

4. 分析与你浏览的网站相对应的 TCP 连接建立的三次握手和连接释放的握手过程( 在 wireshark 里通过 ip 地址过滤找到对应的 TCP 数据包)。具体分析步骤如下: l 览网页,抓取三次握手的包,分析 TCP 包头格式,指出下列 4 个字段的值。 l 源 IP:192.168.6.8 l 目的 IP: 119.75.218.77

l 源端口: 1849 l 目的端口: 80 连接建立第一次握手:

若只显示第一次握手的数据包,即显示包含 TCP SYN 且不包含 ACK 标志的数据包, 则显示过滤器的规则应该怎样设置?找出第一次握手的数据包并截取对该数据包的展 开图来替换下图。根据截图在表 1 的相应位置填写各字段的值。 表1 第一次连 接握手 0 0 28 0 0 0 0 1 0 第二次连 接握手 0 1 28 0 1 0 0 1 0 第三次连 接握手 1 1 20 0 1 0 0 0 0 第一次请 求数据 1 1 20 0 1 1 0 0 0 第一次回 复数据 1 391 20 0 1 0 0 0 0 第一次断 开握手 402 1 20 0 1 0 0 0 1 第二次断 开握手 1 403 20 0 1 0 0 0 0 第三次断 开握手 序号 确认号 数据偏移 URG ACK PSH RST SYN FIN 窗口 65535 65535 65535 40200 40200 5840 65134

为了显示第一次握手的包,过滤器的设为“tcp.flags.ack==0&&tcp.flags.syn==1”,如上图所示。 连接建立第二次握手:

若只抓取第二次握手的数据包, 则显示过滤器的规则应该怎样设置?为什么? 找出第二 次握手的数据包并截取对该数据包的展开图来替换下图, 根据截图在表 1 的相应位置填写各

字段的值。

为了显示第二次握手的包,过滤器的设为“tcp.flags.ack==1&&tcp.flags.syn==1”,如上图所示。 连接建立第三次握手:

是否可以设定过滤规则只抓取第三次握手的数据包? 若不能,如何确定是第三次

握手的数据包。找出第三次握手的数据包并截取对该数据包的展开图来替换下图,根据 截图在表 1 的相应位置填写各字段的值。 不能,因为第三次握手发送的是ack包,也就是仅ACK标记设为1的TCP包,但三次握手建立后,TCP连接的每个包都会设置ACK位,所以不能。第三次握手的TCP包序列号是1。如下图

三次连接握手完成后说明 TCP 连接正确建立,客户端要请求服务器传送数据。 客户端第一次请求数据:

找出第一次请求的数据包并截取对该数据包的展开图,根据截图在表 1 的相应位置 填写各字段的值。你是如何确定是第一次的请求的数据包? 包的序列号为1,且下次序列号不为1,同时确认号为1的TCP包就是第一次请求数据的包:

若服务器相应了客户端的请求,服务器要向客户端传送数据。 服务器第一次回复数据:

找出第一次回复的数据包并截取对该数据包的展开图,根据截图在表 1 的相应位置填 写各字段的值。你是如何确定是第一次的回复的数据包? 确认号为第一次请求数据包的下一个序列号的包,且序列号是1的TCP包,如下图:

TCP 连接的断开:

设置过滤器的规则为 tcp.flags.fin ==1&& tcp.flags.ack == 1 ,捕捉断开连接的数据

包。 根据捕获的断开连接数据报填写表一, 并分别截取断开连接第一次、 第二次握手的展开

图。 我们知道 TCP 连接建立后, 是全双工的通信方式。 观察你截获的结果请写出通信双方各

自是怎样断开连接的。(由于没有截取到数据,故采用老师的数据) 第一次断开连接握手:

第二次断开连接握手:

断开连接的过程是一个双向的过程,由客户机向服务器发送释放请求,服务器作出应答;然后服务器向客户机发送释放请求,客户机应答。 【实验结果总结与思考】

本次的实验结构基本符合预想,要找的TCP包基本上都能够找出来。不过有几点需要注意的就是:

1. 要灵活运用filter,准确输入过滤词是很重要的。比如说我的机子上建立了相当多

的tcp连接,我就要对他们进行过滤,只看选定目标的Tcp包,那么我就应该在filter中写上“ip.addr==目标地址”。在找连接的三次握手的包时,一定要注意每次握手的tcp包都有哪些特征,比如说第一次握手的包的特征是内容仅含SYN=1的包,那么在filter中就可以输入“tcp.flags.syn==1&&ip.dst==目标地址”这样就可以快速搜出相应的包了。 2. 对于利用filter不能一次找出的包,要懂得推理找出相应的tcp包。比如说进行连

接的第三次握手的包,我用filter是不能一次性找出来的,因为那个包只含内容ACK==1,符合ACK==1的条件的包多得是,因此我就有必要通过第二次握手的包进行推理判断,若第二次握手的tcp包的确认号是1,那么我就看第三次握手的包的序列号是否为1,且Flags的字段里是否只有ack=1,那么我就可以判断这个包是否是第三次握手的tcp包了。 3. 有个问题就是:我不知道为什么我做tcp释放的抓包时没有抓到,服务器给我发

的释放请求,因此利用了别的数据源。

本文来源:https://www.bwwdw.com/article/06t5.html

Top