2023年11月27日发(作者:)

v .. . ..

第三次课堂实践报告

高国栋 20

同实验者 韦纯 韦方宇 王尊严

一、实践容1

1. 两台PC通过交换机或网线互相ping通。

2. 抓取1ARP请求报文和1ARP响应报文。

3. 抓取1ICMP ECHO报文和1ICMP ECHO REPLY报文。

Ping通目标主机 192.168.0.150(对方也ping192.168.0.100

ping命令时抓取的arpicmp数据包

. . . . .

v .. . ..

分别选择其中的任意一个ARP请求报文、ARP响应报文、ICMP ECHO报文、ICMP

ECHO REPLY报文,并打开其数据包。

4. 要求:

(1) 列出上述报文对应MAC帧原始数据,附上对应截图。

对应的帧原始数据为框中的容:

ARP请求报文:

ARP响应报文:

IMP ECHO 报文

ICMP ECHO REPLY报文:

(2) 找出上述报文对应MAC帧的源MAC地址、目的MAC地址、类型、数据长度,附

上与原始数据的对应图。

. . . . .

v .. . ..

ARP请求报文

ARP响应报文

IMP ECHO 报文

. . . . .

v .. . ..

ICMP ECHO REPLY报文

(3) 找出ICMP ECHOECHO REPLAY报文的首部长度、总长度、生存时间、协议、

首部校验和、源IP地址、目的IP地址,计算单次成功ping的时间,附上与原始数据

的对应图。

ICMP ECHO报文数据包如下:

可看到时间标记为102806.312741400

ECHO REPLAY报文:

. . . . .

v .. . ..

时间标记为102806.314322400

单次成功ping的时间=102806.314322400-102806.312741400=0.002570000s

所以单次成功ping的时间0.00257

(4) 找出ARP请求报文希望获得的MAC地址及其对应的IP地址,附上对应截图。

从图中可以知道ARP请求报文希望获得的MAC地址为50:7B:9D:07:D0:B2。它对应

IP地址为:192.168.0.100

因为此时是IP地址为192.168.0.150ping 192.168.0.100,所以是192.168.0.150

192.168.0.100发送ARP请求报文,所以捕获到的目的IP地址为192.168.0.100

(5) 举例说明MAC帧、IP包、ICMP报文的关系。

用我们抓取的ICMP Echo报文举例说明:

. . . . .

v .. . ..

MAC

IP

60字节

报文

78字节

ICMP

报文

20字节

从第0字节到第77字节是一个完整的MAC帧,总长度78字节。去掉MAC帧的

首部(第013个字节)和尾部(FCS4字节),保留的从第14字节到第73字节是

一个完整的IP包。再去掉IP包首部(第1433字节)保留的为ICMP报文,MAC

帧包含IP包,IP包包含ICMP报文。

二、实践容2

机的默认网关配置为192.168.0.x, x250-254之间。

配置默认网关为192.168.0.251,如图所示:

. . . . .

v .. . ..

2. 两台PC通过交换机或网线互相ping通。注:ping命令不带-t参数。

3.先执行arp d命令,开始抓包,然后执行ping 192.168.0.255命令。请根据抓包结果分

析此ping命令执行过程中数据报文的传输情况,并附上相应截图。

在进行这一步实验时,我们组发现如果是两台电脑用网线相连,无论是哪台电脑执行

ping 192.168.0.255命令,都会请求超时。而当我们用交换机将全部4台电脑(IP地址分别

192.168.0.100192.168.0.150192.168.0.77192.168.0.88)连在一起时,再执行ping

192.168.0.255命令,IP地址为192.168.0.150192.168.0.77192.168.0.88的三台主机均

会有如下显示,而192.168.0.100的主机执行ping 192.168.0.255命令后依然为请求超时。

192.168.0.150执行ping 192.168.0.255命令后结果

之后我们抓取ARPICMP报文进行分析,IP地址为192168.0.150的主机抓取的报

文如下(只截取了一部分)

. . . . .

v .. . ..

将抓包结果与之前ping结果对照,可以发现每执行一次ping命令,会收到4次来自

192.168.0.100的回复,从抓包结果中可以将每次回复的过程找出来如下所示:

从中可以看出MAC地址为80:62:66:E4:E5:12的主机先向以太网广播发送了一条APR

请求报文,之后IP地址192.168.0.150向以太网广播的IP地址192.168.0.255发送了一条

ICMP Echo报文,IP地址为192.168.0.100的主机向192.168.0.150回复了一条ICMP Echo

Reply报文;之后MAC地址为50:7B:9D:07:D0:B2主机连续向02:32:63:44:E5:12发送了

5ARP相应报文。

按常规来说如果主机都通过交换机连接,那么如果一个主机执行ping 192.168.0.255

命令,那么他应该收到来自所有其它主机的回复,而在我们组的实验中只能收到同一主机

192.18.0.100)的回复,收不到其他两台主机的回复。

这个问题可能是由于我们另外三台主机的默认网关配置的一样,而与另一台不一样,

执行ping 192.168.0.255命令时会无视同为192.168.0.251相同默认网关的另外两台主机,

只能收到默认网关为192.168.0.250的主机的回复。还有一种可能性是交换机接口的配置不

同,导致ping 192.168.0.255命令时的结果不同。

因为时间原因,我们组也没有对这个问题进行进一步探讨。

4.先执行arp d命令,开始抓包,然后执行ping 202.115.32.36命令。请根据抓包结果分

析此ping命令执行过程中数据报文的传输情况,并附上相应截图。

我们四台主机连在交换机上执行ping202.115.32.36命令均请求超时。

所以可知此连接不通。

. . . . .

v .. . ..

5. 主机ABC共同连在交换机上,主机C配置为主机A的网关。主机A ping BB

ARP Response 报文,ping通后主机A执行arp a。然后,主机B利用抓包工具软件修

改抓取的ARP Response报文,仅修改ARP Response报文中BMAC地址(注:不是MAC

帧首部的BMAC地址),修改后发送(发送10次以上),在主机A上再执行arp a。对

比两次的arp a的结果,分析原因,附上相应截图。B继续持续发送修改后的ARP Response

报文,在主机Aping B,记录ping的情况,附上截图,并分析原因。

因为我们组没有交换机,所以整个实验是两台电脑用网线连接做的。

第一次Aping B的结果:

A执行arp a的结果:

从图中可看到BIP地址为192.168.0.150MAC地址为50-7B-9D-07-D0-B2

此时B抓取ARP Response 报文:

. . . . .

v .. . ..

修改抓取的ARP Response报文,仅修改ARP Response报文中BMAC地址。

所以选择第14个数据包进行修改,将其设置为要发送的数据包,在工具栏中点击“编辑要

发送的数据包”,把BMAC地址改为52-22-22-22-22-22如下图:

连续不断点击发送按钮,在主机A上再执行arp a,结果如下:

从途中可以看出IP地址192.168.0.150对应的MAC地址变为了52-22-22-22-22-22

. . . . .

v .. . ..

即为修改后的值,再在主机Aping B,结果如下:

会看到主机A已经ping不通B192.168.0.150)了,这是因为B将修改后的ARP响应

报文发送给A后,主机A中默认的BMAC地址发生了改变,执行ping192.168.0.150时,

默认的192.168.0.150对应的MAC地址修改为52-22-22-22-22-22,而本身192.168.0.150

对应的MAC地址为修改之前(50-7B-9D-07-D0-B2)的值,所以当然不会ping通。

三、实践容3

访问因特网上的web站点,抓取TCP连接的三次握手和四次挥手过程,附上相应截图,

并分析三次握手和四次握手的详细过程,包括源、目的IP,源、目的端口号,序号和确认

序号的变化情况,标志位SYNFINACK的值等。

关闭无用软件后,用电脑访问.baidu.,同时用omnipeek软件抓取TCP数据包。

从中可以找到TCP连接的三次握手和四次挥手过程。

找到三次握手的数据包如下:

四次握手的数据包如下:

. . . . .

v .. . ..

现进行具体分析。

1.第一次握手

数据包容如下:

. . . . .

v .. . ..

. . . . .

v .. . ..

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,

等待服务器确认。客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,序号

X=1812017573

从数据包中可以看到:

IP地址:222.18.0.78

目的IP地址:117.78.58.31

源端口号:51835

目的端口号:8089

序号:1812017573

确认序号:0

标志位: SYN=1 ASK=0 FIN=0

2.第二次握手

数据包容如下:

. . . . .

v .. . ..

服务器收到客户端发过来报文,由SYN=1知道客户端要求建立联机。向客户端发送一

SYNACK都置为1TCP报文,设置初始序号Y=0,将确认序号设置为客户的序列

号加1,即X+1

从数据包中可以看到:

IP地址:117.78.58.31

目的IP地址:222.18.0.78

源端口号:8089

目的端口号:51835

序号:3698809199

确认序号:1812017574 为第一次握手的序号+1

标志位: SYN=1 ASK=1 FIN=0

3.第三次握手

数据包容如下:

. . . . .

v .. . ..

客户端收到服务器发来的包后检查确认序号是否正确,即第一次发送的序号加1

X+1=1。以及标志位ACK是否为1。若正确,服务器再次发送确认包,ACK标志位为1

SYN标志位为0。确认序号=Y+1=0+1=1,发送序号为X+1=1。客户端收到后确认序号值

. . . . .

v .. . ..

ACK=1则连接建立成功,可以传送数据了。

从数据包中可以看到:

IP地址:222.18.0.78

目的IP地址:117.78.58.31

源端口号:51835

目的端口号:8089

序号:1812017574 为第一次握手的序号+1

确认序号:3698809200 为第二次握手的序号+1

标志位: SYN=0 ASK=1 FIN=0

所谓的三次握手即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接

收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,

并建立虚连接。

为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需

要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收

到数据后要做出确认时也要用到TCP

4.第一次挥手

数据包容如下:

. . . . .

v .. . ..

客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN

ACK置为1,序号为X,确认序号为Z

从数据包中可以看到:

IP地址:117.78.58.31

目的IP地址:222.18.0.78

源端口号:8089

目的端口号:51835

序号:3698809311

确认序号:1812018535

标志位: SYN=0 ASK=1 FIN=1

5.第二次挥手

. . . . .

v .. . ..

服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号加1,序号

为收到的确认序号=Z

. . . . .

v .. . ..

从数据包中可以看到:

IP地址:222.18.0.78

目的IP地址:117.78.58.31

源端口号:51835

目的端口号:8089

序号:1812018535 为第一次挥手的确认序号

确认序号:3698809312 为第一次挥手的序号+1

标志位: SYN=0 ASK=1 FIN=0

6.第三次挥手

数据包容如下:

. . . . .

v .. . ..

服务器关闭与客户端的连接,发送一个FIN。标志位FINACK置为1,序号为Y,确

认序号为X=2

从数据包中可以看到:

IP地址:222.18.0.78

目的IP地址:117.78.58.31

源端口号:51835

目的端口号:8089

序号:1812018535 为第一次挥手的确认序号

确认序号:3698809312 为第一次挥手的序号+1

标志位: SYN=0 ASK=1 FIN=1

7.第四次挥手

数据包容如下:

. . . . .

v .. . ..

客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的

序号加1,序号为收到的确认序号X=2

从数据包中可以看到:

. . . . .

v .. . ..

IP地址:117.78.58.31

目的IP地址:222.18.0.78

源端口号:8089

目的端口号:51835

序号:3698809312 为第一次挥手序号+1

确认序号:1812018536 为第一次挥手确认序号+1

标志位: SYN=0 ASK=1 FIN=0

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成

它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这

一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的

一方将执行主动关闭,而另一方执行被动关闭。

1 TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。

2 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,

一个FIN将占用一个序号。

3 服务器关闭客户端的连接,发送一个FIN给客户端。

4 客户端发回ACK报文确认,并将确认序号设置为收到序号加1

在实验中,我发现在四次挥手时客户端与服务端反了,这与我们在课堂上学到的结论不

符,经过几次重复试验后,我们发现无论如何找到的三次握手与四次挥手的客户端与服务端

都是反的,但其他的标志位的变化及序号与确认序号的变化都是正确的,所以我们猜测是在

访问.baidu.后目标网页对客户端与服务端进行了调换,或者是目标网址先执行了四次挥手操

作。

四、课后实践

实践1

抓取大学教务系统账号密码,打开教务处网页输入学号20与密码271518omnipeek

软件抓取TCP数据包,结果如下:

在图中找到相应的数据包。

. . . . .

v .. . ..

成功获取输入的账号和密码(明文)

实践2

登录163,账号为163.

同时用抓取TCP数据包,抓到的数据包如下:

. . . . .

v .. . ..

图中红框所示的两个数据包均能得到163账户。

1582号数据包:

1583号数据包:

分析:

教务系统使用的http协议,而网易使用的https协议。httpshttpTCP之间

加了安全层(TSLSSL,对访问的数据流进行了安全保护,所以通过普通的抓包软件我们

不能获取用户的登录密码。

. . . . .