利用Wireshark针对计算机网络协议结构、功能和机制进行分析

《计算机网络概论》

课程设计报告

(2022学年第三学期)

课程名称    计算机网络概论   

学    院   ******学院   

专业班级        ******        

学生姓名   ***********    

授课教师        ***        

2022年 6月1日

目录

《计算机网络概论》

课程设计项目

网络抓包工具Sniffer、Winshark

协议数据单元分析

以太帧结构

IPv4数据结构

IPv6数据结构

协议功能分析

TCP的三次握手过程分析

ARP机制分析


课程设计项目

  • 网络抓包工具Sniffer、Wireshark

  1. 安装相关软件并抓取网络报文

如图,成功安装wireshark并抓取WLAN接口的报文

本文仅为记录学习过程,可能存在些许错误,若有错误可指出。

  1. 保存网络报文镜像

利用wireshark的保存功能保存获取的网络报文镜像

  1. 导入网络报文镜像

打开之前保存的网络报文镜像文件即可

  • 协议数据单元分析

首先,在cmd命令行输入ipconfig /all获取本机的基本信息,如MAC地址、ipv4地址以及 ipv6地址

由上图可知本机

MAC地址: 6C-**-**-**-**-**

IPv4地址: 10.***.***.***

IPv6地址: 2001:***:****:****::*:****

子网掩码: 255.255.128.0

默认网关: fe80::***:****:****:***%**

  1. 以太帧结构

选取一条捕获的信息进行分析

可知该帧有537字节,

选中目的地址,可知前6个byte为该以太帧的目的地址,与本机地址一致,为6C-**-**-**-**-**

选中源地址,可知第7到12个byte为该以太帧的源地址

选中类型,可知第13到14个byte为该以太帧的类型,0x0800表示高层(网络层)使用IPv4协议

后面字节的内容就是IP数据报

而查询资料得知wireshack并不捕获CRC检验失败的帧,并且捕获成功的帧不会显示帧检验序列FCS

由此我们可以得到该以太帧的结构如下:

6 byte

6 byte

2 byte

数据

4 byte

目的地址

源地址

类型

数据

FCS

  1. IPv4数据结构

通过对IP数据报的分析可看到

(1)版本位占4 bit,“0100”指使用IPv4协议

(2)首部长度占4 bit,“0x5”表示5个32 bit,即20 byte

(3)区分服务占8 bit,即“0x00”一般不使用

(4)总长度占16 bit,指的是首部和数据之和的长度,“0x02 0b”表示数据报长度为523 byte

(5)标识占16 bit,标识号为“0x77 ff”,能使分片后的各数据报片被正确地重装成为原来的数据报

(6)标志占3 bit,这里为“010”,表示不能分片

(7)片偏移占13 bit,指较长的分组分片后,某片在原分组中的相对位置。这里只有一个完整的数据报片,所以片偏移量为0

(8)生存时间占8 bit,表明数据报在网络中的寿命,“0x34”指TTL值为52,

(9)协议占8 bit,“0x11”指数据使用UDP协议,以便使目的主机的IP层知道应将数据部分上交给那个处理进程

(10)首部检验和占16 bit,即“0x46 b6”这里wireshark不自动做TCP和UDP校验和的校验

(11)源地址占32 bit,“0x********”可表示为********

(12)目的地址占32 bit,“0x********”可表示为********,即本机的IPv4地址

(13)接下来是可变部分,一般占1到40 byte,但本例中并无没有这个部分

  1. IPv6数据结构

先找到使用IPv6的域名,这里用华为的官方域名,然后ping www.huawei.com

并通过wireshark过滤器筛选本机的IPv6地址

得到以下对应的8个报文段

选择其中一个报文段

逐一分析可知:

(1)版本占4 bit,“0110”指明了使用IPv6协议

(2)流量类型占8 bit,这里为“0x00”,与IPv4的区分服务功能类似

(3)流标号占20 bit,这里为“0x00000”,“流”指的是互联网络上从特定远点到特定终点的一系列数据报

(4)有效载荷长度占16 bit,“0x00 28”指明IPv6数据报除基本首部以外的字节数为40 byte

(5)下一个首部占8 bit,“0x3a”指明有效载荷中下一个首部的类型为ICMPv6

(6)跳数限制占8 bit,“0x80”指跳数限制字段值为128,每个路由器转发数据报时会将跳数限制字段的值减1,当值为0时就要丢弃该数据报,用来防止数据报在网络中无限期存在

(7)源地址占128位,即发送站的IPv6地址,“*************”即本机的地址

(8)目的地址占128位,即接收站的IPv6地址,“240e:e9:9fff:8000::58”即www.huawei.com的地址

(9)此报文中并无扩展首部

  • 协议功能分析

  1. 通过PING命令过程来分析ICMP协议的回送请求和回答分析

首先,先ping www.baidu.com,其IP地址为180.101.49.11

利用wireshark捕获这几个报文段

可看出,主机********发出四条ICMP请求报文并接收到180.101.49.11的四条回答报文

其中ICMP的结构如下:

(1)类型占8 bit,表明ICMP报文类型

(2)代码占8 bit

(3)检验和占8 bit

(4)接着的四个字节是报文的标号和标识符

第一步,主机发送4条ICMP回送请求报文给180.101.49.11,

类型“8”表示该报文为回送请求报文,后面为代码、检验和以及标识号

第二步,服务器收到主机发出的4条ICMP回送请求报文,返回4条对应的ICMP回送回答报文

其中类型“0”表明该报文为ICMP回送回答报文

第三步,主机收到回送回答报文,并通过报文的时间戳计算往返时间

  1. TCP的三次握手过程分析

打开Upload page for TCP Wireshark Lab

选择文件上传并捕获报文

利用过滤器我们可以得到服务器的IP地址为128.119.245.12,查找主机与该服务器的通信,得到TCP连接建立的三次握手过程

  1. 主机的TCP向服务器128.119.245.12的TCP发送连接请求报文段,其首部的同步位SYN应置1,同时选择一个序号Seq=0
  2. 服务器处在 LISTEN 监听状态,服务器的TCP收到连接请求报文段后,发回连接请求确认报文,把SYN位和ACK位都置1,确认号ack=x+1=1,同时为自己选择一个序号Seq=0
  3. 主机的TCP收到服务器接受连接请求的确认后,向服务器发送确认报文,该报文中SYN位置0,序号Seq=x+1=1,ACK位也置1,确认号ack=y+1=1。此时主机的TCP通知上层应用进程连接已经建立,服务器的TCP收到主机的确认后,会通知其上层应用进程连接已经建立
  1. ARP机制分析

手机连接校园网,并开启热点,平板和主机A一起连到手机的热点上,找到平板的ip地址并尝试ping,捕获过程中的arp报文段

(1)ARP请求分组

通过对下面以太帧首部的分析可以看到第一个报文段为arp请求报文段,源地址为本机地址********,目的地址为ff:ff:ff:ff:ff:ff(广播地址)

而对ARP首部分析可看出主机A的IP地址以及MAC地址,也可看到目标主机的IP地址,然而目标主机的MAC地址未知,被设为00:00:00:00:00:00

(2)ARP响应分组

目标主机(平板)收到ARP请求,拿到主机A的IP地址以及MAC地址,在其ARP高速缓存中写入主机A的IP地址到物理地址的映射,并向主机A发送ARP响应分组,里面的内容包括目标主机(平板)的IP地址192.168.40.149和对应的MAC地址********

(3)对响应分组的接收

主机A收到目标主机的ARP响应分组之后,就在其ARP高速缓存中写入目标主机的IP地址到物理地址的映射

  • 协议机制分析

访问网站东南大学图书馆,并捕获这个过程中产生的报文

(一)DNS

可以看到,第70和72两个报文分别为IPv4地址的DNS查询请求和DNS回答报文,第71和73两个报文分别为IPv6地址的DNS查询请求和DNS回答报文DNS查询请求过程中,主机向阿里云提供的免费DNS服务器223.5.5.5发送UDP报文请求libai.seu.edu.cn的IP地址

收到DNS查询请求后,域名服务器得到libai.seu.edu.cn的IP地址,将libai.seu.edu.cn的域名和所对应的IPv6地址2001:da8:1045:a010:121:194:14:139以UDP数据报发送给主机

(二)HTTP

利用过滤器将IP地址包括2001:da8:1045:a010:121:194:14:139的筛选出来,可以看出HTTP主要有以下几个过程:

  1. 游览器与服务器通过三次握手建立TCP连接(服务器端IP地址是2001:da8:1045:a010:121:194:14:139,端口是80)
  2. 游览器发出HTTP请求报文:GET向服务器请求内容 

  1. 服务器www.huaban.com给出HTTP响应报文,下面是捕获的部分数据报中的html内容
  2. 在HTTP传输完毕后,进行四次握手释放TCP连接,过程如下:

第一次握手,服务器发出连接释放报文段,使FIN=1,ACK=1,序号Seq=18628,确认号Ack=4464,此时服务器进入FIN_WAIT_1的状态

第二次握手,主机收到服务器发出的连接释放报文段并对此进行确认,令ACK=1,序号Seq=4464,确认号Ack=18628+1=18629,主机进入CLOSE_WAIT状态

第三次握手,之后主机会再发送一个连接释放报文段,使FIN=1,ACK=1,序号Seq=4464,确认号Ack=18629,主机进入LAST_ACK状态

第四次握手,服务器收到FIN和ACK包后,接着发送一个ACK报文,进入TIME_WAIT状态,等待两倍报文段寿命后进入CLOSED状态,主机在收到最后的ACK报文后也将进入CLOSED状态,至此TCP连接释放四次握手结束

另外通过对请求报文和响应报文分析可以得到它们的结构如下:

  1. 请求行/状态行,用于区分请求报文和响应报文,若在请求报文的第一行叫请求行,在响应报文的第一行叫状态行,这一行有三个字段,方法、请求资源的url和HTTP的版本,字段之间都以空格隔开,在每一行的最后都有“回车”和“换行”

  1. 首部行,用来说明游览器、服务器或报文主体的一些信息,可以有多行,也可不适用,每一行都有首部字段名和它的值,且每一行结束也都有“回车”和“换行”,且整个首部行结束还会有“回车”和“换行”与后面的实体主体分开

  1. 实体主体,请求报文段中一般不用,在响应报文中通常是返回给客户的文档,也有可能没有这个字段

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江夏哲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值