day32 —— 抓包分析

1. wireshark使用

1. 安装

1) wireshark的官方下载网站:www.wireshark.org/

2) Linux sudo apt install wireshark

3) 启动sudo wireshark

设置中文 Edit->Preferences->Appaerance->Language->Chinese

2. wireshark 抓包

  • 开始抓包

开始界面

  1. wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
  2. 双击需要的网卡,开始抓包
  • Wireshark 窗口介绍

3. wireshark与对应的OSI七层模型

服务器和客户端的代码不能都运行在ubuntu,因为wireshark抓的是流经真实网卡的数据包。

若将服务器客户端都运行在ubuntu,数据直接经过虚拟网卡通信,而不会经过真实网卡。

2. 包头分析

2.1 以太网头

以太网中封装了源mac地址以及目的mac地址,还有ip类型,以太网又称之为mac头

0X0800 只接收发往本机的mac的ip类型的数据帧 

0X0806 只接收发往本机的ARP类型的数据帧

0x8035 只接受发往本机的RARP类型的数据帧

0X0003  接收发往本机的MAC所有类型:ip,arp,rarp数据帧,接收从本机发出去的数据帧,

混杂模式打开的情况下,会接收到非发往本地的MAC数据帧

2.2 IP头

IP头中需要掌握用于拆包的部分:id flags fregment_offset

两个IP地址:源IP与目的IP地址。

TTL:time to live, 指定数据帧可以最多经过几个路由器。当数据帧被目标方接收后,TTL清除为0.

Linux TTL:64 Winodws:TTL 128

2.3 UDP头

2.4 TCP头

Seq:序列号,占4个字节,用于给数据段进行编号的。所有非应答包的数据段,都有seq。

Ack:应答号,用于应答非应答包(握手包,挥手包,数据包)。告诉对方下一次从这个seq编号发送数据包。

SYN:握手包,连接的时候产生的包

FIN:挥手包,断开连接产生的包

PSH:数据包,传输数据时候产生的包

ACK:应答包

PSH Ack = Seq+len;

SYN FIN Ack = Seq+1;

2.5 三次握手(重点!!!)

三次握手的发起方,肯定是客户端

  1. 第一次握手:客户端发送SYN包(SYN=1, seq=0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。
  2. 第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK=1 , ack=1),同时发送一个SYN包(SYN=1, seq=0),并进入SYN_RCVD状态。
  3. 第三次握手:客户端接收到服务器的SYN包,以及ACK包,进入establish状态,同时向服务器发送ACK包(ACK=1, ack=1)。此时三次握手包发送完毕,服务器也进入establish状态

2.6 四次挥手(重点!!!)

四次挥手的发起方可能是服务器,也可能是客户端

  1. 第一次挥手,主动关闭方发送一个FIN包(FIN=1, seq = u)给被动方,进入FIN_WAIT_1状态;
  2. 第二次挥手:被动方接收到FIN包,给主动方发送一个ACK包(ACK=1, ack=u+1);并进入CLOKSE_WAIT状态。主动方接受到ACK包后,进入FIN_WAIT_2状态。如果有数据没有发送完毕,则继续发送,直到发送完毕为止;
  3. 第三次挥手:被动方发送一个FIN包(FIN=1, seq=w),进入LAST_ACK状态.
  4. 第四次挥手:主动关闭方收到FIN包,回复一个ACK包(ACK=1, ack=w+1)。被动关闭方收到主动关闭方的ACK后关闭连接。

相关面试题

  1. 三次握手四次挥手流程
    1. 请简述三次握手四次挥手的流程。
    2. 请简述TCP服务器与客户端建立连接,断开连接的过程。
    3. 请简述TCP和UDP通信过程中的区别(三次握手、四次挥手,有无应答)
    4. 请简述用UDP实现TCP式传输。(与c点一致)
  1. 在UDP传输中,如何知道对端掉线
    1. 心跳包机制。规定每隔指定时间后发送一个心跳包给服务器,服务器回复心跳包应答。
    2. 如果期间服务器多次没有收到心跳包,或者客户端多次没有收到应答,则代表对端掉线。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值