--- title: Lab1 --- # 华东师范大学软件学院实验报告 ## 一、实验目的 1. 学会使用curl与wget指令 2. 学会通过Wireshark获取数据包 3. 了解协议层数据包的结构 4. 学会计算并分析协议开销 ## 二、实验内容与实验步骤 1. 在控制台中输入`curl http://1st.moe/`,并观察到`200 OK` 2. 启动Wireshark,选择监听以太网,并将捕获过滤器设置为tcp port 80,关闭混杂模式,并启用"enable network name resolution"选项 3. 关闭所有浏览器窗口后开始捕获 4. 重新在控制台输入 `curl http://1st.moe/` 5. 停止Wireshark捕获 ## 三、实验环境 B226机房电脑 ## 四、实验过程与分析 1. 实验过程 捕获内容如图所示 ![捕获内容](./Pictures/100000010000094B000002EADEAFEA2E.png) 2. 分析协议包的内容 ![协议包内容1](./Pictures/10000001000003320000015C8A9E98EE.png) ![协议包内容2](./Pictures/100000010000032800000154F3640027.png) ![协议包内容3](./Pictures/100000010000032900000152B123680E.png) ![协议包内容4](./Pictures/100000010000033300000151977B0DF0.png) 根据如上四张图片,可以发现各个协议所占的字节数为 | 协议 | 字节数 | |-------------------------------------|-----------| | Ethernet (eth) | 14 bytes | | Internet Protocol Version 6 (ipv6) | 40 bytes | | Transmission Control Protocol (tcp) | 20 bytes | | Hypertext Transfer Protocol (http) | 128 bytes | 则包的结构大致如下 | eth | ip | tcp | http | |-----------------|------------------|----------|-----------| | 14 bytes | 40 bytes | 20 bytes | 128 bytes | | Ethernet Header | Ethernet Payload | | | | IP Header | IP Payload | | | 3. 问题 1. 分析协议开销 一个GET本身的大小为128 bytes,而其相应产生的SYN、ACK请求也应算入其开销中。根据图片 ![alt](./Pictures/10000001000004EE0000005E50C8B369.png) 可以计算得出由于协议产生的总开销为86+74+(202-128)+74=308 bytes,从而计算得出比值约为0.4156,考虑到信息传输的稳定性,协议开销是值得的。 2. 以太网头部中哪一部分是解复用键并且告知它的下一个高层指的是IP,在这一包内哪一个值可以表示IP 根据图片 ![alt](./Pictures/10000001000004000000007864293250.png) ![alt](./Pictures/1000000100000470000000F4B4E41AC7.png) 可以直观看出ipv6对应的分解键为0x86dd,tcp对应的分解键为6 4. 故障分析 在实验过程中出现了控制台有反馈但Wireshark没有捕获的情况,经排查后发现是由于控制台指令输入错误:误将http输入为https所致。 ## 五、实验结果总结 1. 实验完成了对一个HTTP包的拆解与分析,其大体结构大致如下 |th|ip|tcp|http| |-|-|--|-| | 14 bytes | 40 bytes | 20 bytes | 128 bytes | | Ethernet Header | Ethernet Payload | | | | IP Header | IP Payload | | | 2. 实验通过curl指令与Wireshark软件完成,在其中熟悉网络工具的使用,并体会到其强大之处 3. 通过查询相关资料,了解开销、分解键等概念