您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > 实验五-TCP-的连接及释放过程分析
实验五TCP的连接及释放过程分析【实验目的】1.掌握TCP连接建立的三次握手工作原理;2.理解TCP连接释放的四次握手工作原理。【实验环境】与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。【实验内容】1.使用Wireshark抓包软件分析TCP协议报文的类型;2.分析TCP连接建立的工作过程;3.分析TCP数据传输的工作过程;4.分析TCP连接释放的工作过程。【实验步骤】1.启动WireShark抓包软件;2.使用ping命令,ping你想浏览的网站,记下该网站的ip地址。3.使用浏览器访问一个因特网网站(例如,),通过Wireshark捕获通信内容;4.分析与你浏览的网站相对应的TCP连接建立的三次握手和连接释放的握手过程(在wireshark里通过ip地址过滤找到对应的TCP数据包)。具体分析步骤如下:浏览网页,抓取三次握手的包,分析TCP包头格式,指出下列4个字段的值。源IP:192.168.6.52目的IP:119.75.217.56源端口:4451目的端口:80连接建立第一次握手:若只显示第一次握手的数据包,即显示包含TCPSYN且不包含ACK标志的数据包,则显示过滤器的规则应该怎样设置?找出第一次握手的数据包并截取对该数据包的展开图来替换下图。根据截图在表1的相应位置填写各字段的值。[答]:过滤器的规则应这样设置:tcp.flags.ack==0&&tcp.flags.syn==1表1第一次连接握手第二次连接握手第三次连接握手第一次请求数据第一次回复数据第一次断开握手第二次断开握手第三次断开握手序号001113272445124451确认号011132724451328328数据偏移2828202020202020URG00000000ACK01111111PSH00010000RST00000000SYN11000000FIN00000101窗口6553565535655356553540200655354020040200图:连接建立第二次握手:若只抓取第二次握手的数据包,则显示过滤器的规则应该怎样设置?为什么?找出第二次握手的数据包并截取对该数据包的展开图来替换下图,根据截图在表1的相应位置填写各字段的值。[答]:过滤器的规则应这样设置:tcp.flags.ack==1&&tcp.flags.syn==1图:连接建立第三次握手:是否可以设定过滤规则只抓取第三次握手的数据包?若不能,如何确定是第三次握手的数据包。找出第三次握手的数据包并截取对该数据包的展开图来替换下图,根据截图在表1的相应位置填写各字段的值。[答]:不能,因为第三次握手发送的是ack包,也就是仅ACK标记设为1的TCP包,但三次握手建立后,TCP连接的每个包都会设置ACK位,所以不能。第三次握手的TCP包序列号是1。三次连接握手完成后说明TCP连接正确建立,客户端要请求服务器传送数据。客户端第一次请求数据:找出第一次请求的数据包并截取对该数据包的展开图,根据截图在表1的相应位置填写各字段的值。你是如何确定是第一次的请求的数据包?若服务器相应了客户端的请求,服务器要向客户端传送数据。[答]:如何找到第一次的请求的数据包:包的序列号为1,且下次序列号不为1(本次截到底包的下次序号为327),同时确认号为1的TCP就是第一次请求数据的包.服务器第一次回复数据:找出第一次回复的数据包并截取对该数据包的展开图,根据截图在表1的相应位置填写各字段的值。你是如何确定是第一次的回复的数据包?[答]:序列号为1,又由于第一次请求包发送了327个数据(第一次请求包的下次序列号为327),所以确认号为327的就是第一次恢复数据的包.TCP连接的断开:设置过滤器的规则为tcp.flags.fin==1&&tcp.flags.ack==1,捕捉断开连接的数据包。根据捕获的断开连接数据报填写表一,并分别截取断开连接第一次、第二次握手的展开图。我们知道TCP连接建立后,是全双工的通信方式。观察你截获的结果请写出通信双方各自是怎样断开连接的。[答]:断开连接过程:首先,先断开连接的一方(即数据先传送完毕,以下称为“A”),会向另一方(以下称为“B”)发送TCP断开连接包,连接释放报文段的首部FIN置“1”,序号为前面已传送过的数据的最后一个字节的序号加“1”(本次实验为“327”);B收到连接报文段后发出确认,确认号为A发的序号+1(本次实验为“328”),这样,A到B这个方向的连接就释放了,TCP就处于半关闭状态,但B可以发送数据,直到B发送TCP连接断开包,B向A发送连接断开包的过程与A向B发送的TCP连接断开包过程类似。【实验感想】本次实验难度较前几次大,花费了两次课的时间完成。在这次实验中遇到了不少问题,如下:(1)在进行第一个实验,用WireShark抓取TCP连接建立包时,输入过滤条件后,发现捕获了两个TCP连接建立包,之前老师有说到,有同学遇到了这个问题,是因为该同学开来两个浏览器,所以每个浏览器都会发送一个TCP连接建立包。但是我这次并没有开启两个浏览器,却也生成了两个TCP连接建立包,后来在老师的帮助下,发现两次实验的端口号不一样,老师解释说肯能该浏览器两个不同进程各发了一个TCP连接建立包。幸好提前问了这个问题,否则后面的一些数据都可能会出错(可能会发生两个端口号的数据混用的情况)。(2)在输入过滤条件的时候遇到了一些困难,不知道该输入怎样的过滤条件,后来在网络和那份TCP文档说明的帮助下,得以解决这个问题。(3)第三个问题是在分析并填写第一次请求数据的时候,不知道是该用哪个包的数据。因为ack和序列号的数据均为1,看似没有什么标志性的数据能确定某个包上是第一次请求数据包,后来经过仔细观察,发现某个包与三次握手包有一项内容不同,该包有一个nextsequencenumber,其值为327,后来我在网上查了一下,验证了这个包就是第一次请求数据包。(4)最后是在判断并分析TCP链接断开包的时候遇到了困难,用IE浏览器好几次输入过滤条件后都没有结果,大家也普遍遇到类似情况,后来我换用FireFox浏览器,成功捕获了完整的4个TCP链接断开包。不过有必要在这里说一点的是,我并没有采用题目中给的过滤条件,因为题目中给是过滤条件只能抓获第一、三次握手的TCP断开连接包,我用来”IP.addr==百度地址&&tcp.flags.ack==1”这个条件,然后在结果图的尾部观察寻找断开连接包。本次实验虽然遇到了不少困难,也做了许多无用功,但是加强了我对书本知识的理解,对TCP建立和断开连接有了更多的实践了解,更加清楚地观察了TCP建立和断开的动态过程,也增加了我对计算机网络这门课的兴趣。
本文标题:实验五-TCP-的连接及释放过程分析
链接地址:https://www.777doc.com/doc-5864331 .html