MENU

Tcpdump抓包Wireshark实例分析

一、前言

TCP是面向连接的协议,通过三次握手建立连接,当通信完成时,连接要断开(拆除连接),当主动方发起SYN会话请求,等待接受对方的SYN和ACK应答,传输所使用的的流量控制协议是可以变动窗口的传输协议,三次握手的具体过程见下面的实例分析。

二、实例分析

# 抓包场景:在192.168.11.63节点使用抓包命令:

tcpdump -i ge1 “host 192.168.11.192and 192.168.11.63” -w dptest.pcap

#然后在192.168.11.192节点讲准备好的数据文件发送到63节点:

scp -r test 192.168.11.63:/mnt/

# 当数据传送结束后,按下Ctrl+c,tcpdump所抓的数据会存入dptest.pcap文件中;

# 然后使用wireshark将数据解析后,如下图所示:

图 1 wireshark数据解析

(1)ARP广播查询192.168.11.63节点MAC地址

因为192.168.11.192节点向192.168.11.63节点发送数据,192节点首先会检查自己的ARP缓存表,查看是否有主机63IP地址和MAC地址的对应关系,如果有,则会将主机63节点的MAC地址作为源MAC地址封装到数据帧中,如果没有,主机192节点则会发出一个ARP请求,请求的目标IP地址是192.168.11.63,目标MAC地址是MAC地址的广播帧(FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是192节点的IP地址和MAC地址。如图2所示,因为192主机的ARP缓存表中并没有63主机的IP地址和MAC地址,所有192主机发出ARP广播请求“who has 192.168.11.63? Tell 192.168.11.192”,当交换机接受到此广播后,发现此帧为广播帧,然后会将此帧从所有非接受的接口发送出去,当63节点接收到此广播帧时,会校对此IP是否为自己的IP地址,并且将192.168.11.192节点的IP地址和MAC地址对应关系记录在ARP缓存中,同事会发出一个ARP的应答“192.168.11.63 is at 00:10:f3:36:06:f3”,主机192节点收到此ARP应答数据帧后,在自己的ARP缓存列表中记录主机63节点的IP地址和MAC地址的对应关系。在整个过程当中交换机已经学习到了主机192节点和主机63节点的MAC地址信息。

图2 ARP查询

(2)TCP连接

由于scp远程数据拷贝使用的TCP协议连接,在获取目标主机的IP地址和MAC地址后,就要进行TCP连接,首先由192节点发起连接,向63节点发送SYN包,会随机产生一个seq值x,并进入SYN_SEND状态,如下图所示,seq=0;当63节点接收到192节点发来的SYN包请求后,必须确认192节点的SYN(ack+1),同时63节点也发送一个SYN包,并随机产生一个seq值y,如图3所示seq=0,并且包内含有ack值,ack=x+1=1,即SYN+ACK包,此时63节点也进入SYN_SEND状态;当192节点接收到63节点SYN+ACK包后,向63节点发送ACK确认包,ack=y+1,seq=x+1,此包发送完毕后,192节点进入Establish状态,当63节点接收到192节点的ACK确认后,也进入Establish状态。就完成了TCP握手连接。

图3  TCP连接

(3)数据传输阶段

如图4和图5所示,随机选取一段传输信息,显示该帧Frame 20,上线字节数528bite,捕获字节数528bite。

图4 数据传输过程

Arrival Time(到达时间):2016.10.21 13:18:03.633021000;

Epoch Time(信息出现时间):147702708.633021000秒;

Time delta from previous captured frame(与之前捕获的数据帧时间差):0.000008000秒;

Time delta from previous display frame(与之前数据帧显示时间差):0.000008000秒;

Time since reference or first frame(距离参考帧或第一帧的时间差):2.360139秒;

Frame Number(帧编号):20;

Frame Length(帧长度):66字节(528位);

Capture Length:66字节(528位);

图5 数据传输过程

Source port(源端口):ssh(22);

Destination port(目的端口):56903;

Acknowledgement number(确认号):表示数据收到确认其有效;

Flags:0x010标志位:只有ack=1,有效位;

Checksum(16位校验和):校验和覆盖了整TCP报文段,由发送端计算和存储,并由收端进行验证。

(4)TCP断开连接(四次挥手)

如图6所示,当数据信息发送结束后,主机192节点向63节点发送FIN+ACK包,seq=74546718,ack=29122,FIN+ACK包发送后,并进入FIN_WAIT_1状态;当63节点接受到192节点发送来的FIN后,给出ACK包确认回应,seq=29122,ack=74546718,63节点进入CLOSE_WAIT状态;然后63节点会向192节点发出同样的FIN+ACK包,192节点接收到包后给予确认,然后本次TCP连接结束。

图6 TCP断开连接

三、结束语

Wireshark软件对分析报文详细内容比较方便,简单的查看报文信息可以选择科莱软件。