《计算机网络概论》
课程设计报告
(2022学年第三学期)
课程名称 计算机网络概论
学 院 ******学院
专业班级 ******
学生姓名 ***********
授课教师 ***
2022年 6月1日
目录
课程设计项目
-
网络抓包工具Sniffer、Wireshark
- 安装相关软件并抓取网络报文
如图,成功安装wireshark并抓取WLAN接口的报文
本文仅为记录学习过程,可能存在些许错误,若有错误可指出。
- 保存网络报文镜像
利用wireshark的保存功能保存获取的网络报文镜像
- 导入网络报文镜像
打开之前保存的网络报文镜像文件即可
-
协议数据单元分析
首先,在cmd命令行输入ipconfig /all获取本机的基本信息,如MAC地址、ipv4地址以及 ipv6地址
由上图可知本机
MAC地址: 6C-**-**-**-**-**
IPv4地址: 10.***.***.***
IPv6地址: 2001:***:****:****::*:****
子网掩码: 255.255.128.0
默认网关: fe80::***:****:****:***%**
-
以太帧结构
选取一条捕获的信息进行分析
可知该帧有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 |
-
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,但本例中并无没有这个部分
-
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)此报文中并无扩展首部
-
协议功能分析
- 通过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回送回答报文
第三步,主机收到回送回答报文,并通过报文的时间戳计算往返时间
-
TCP的三次握手过程分析
打开Upload page for TCP Wireshark Lab,
选择文件上传并捕获报文
利用过滤器我们可以得到服务器的IP地址为128.119.245.12,查找主机与该服务器的通信,得到TCP连接建立的三次握手过程
- 主机的TCP向服务器128.119.245.12的TCP发送连接请求报文段,其首部的同步位SYN应置1,同时选择一个序号Seq=0
- 服务器处在 LISTEN 监听状态,服务器的TCP收到连接请求报文段后,发回连接请求确认报文,把SYN位和ACK位都置1,确认号ack=x+1=1,同时为自己选择一个序号Seq=0
- 主机的TCP收到服务器接受连接请求的确认后,向服务器发送确认报文,该报文中SYN位置0,序号Seq=x+1=1,ACK位也置1,确认号ack=y+1=1。此时主机的TCP通知上层应用进程连接已经建立,服务器的TCP收到主机的确认后,会通知其上层应用进程连接已经建立
-
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主要有以下几个过程:
- 游览器与服务器通过三次握手建立TCP连接(服务器端IP地址是2001:da8:1045:a010:121:194:14:139,端口是80)
- 游览器发出HTTP请求报文:GET向服务器请求内容
- 服务器www.huaban.com给出HTTP响应报文,下面是捕获的部分数据报中的html内容
- 在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连接释放四次握手结束
另外通过对请求报文和响应报文分析可以得到它们的结构如下:
- 请求行/状态行,用于区分请求报文和响应报文,若在请求报文的第一行叫请求行,在响应报文的第一行叫状态行,这一行有三个字段,方法、请求资源的url和HTTP的版本,字段之间都以空格隔开,在每一行的最后都有“回车”和“换行”
- 首部行,用来说明游览器、服务器或报文主体的一些信息,可以有多行,也可不适用,每一行都有首部字段名和它的值,且每一行结束也都有“回车”和“换行”,且整个首部行结束还会有“回车”和“换行”与后面的实体主体分开
- 实体主体,请求报文段中一般不用,在响应报文中通常是返回给客户的文档,也有可能没有这个字段