计算机网络实践报告

华东师范大学软件工程学院实验报告一
一、实验目的

  1. 学会通过Wireshark获取以协议层的数据包
  2. 掌握协议层数据包结构
  3. 分析协议开销

二、实验内容与实验步骤
1.打开命令行,输入:wget http://www.baidu.com. 观察到 OK为止。
2.启动Wireshark,在菜单栏的捕获->选项中进行设置,选择已连接的以太网,设置捕获过滤器为tcp port 80,将混杂模式设为关闭,勾选 enable network name resolution.然后开始捕获.
3.点开命令行,重新输入:wget http://www.baidu.com
4.打开Wireshark, 停止捕获。

三、实验环境

  1. Wireshark 3.0.6
  2. Windows 10操作系统
  3. wget工具

四、实验过程与分析
0.前导知识
首先是课堂实验时助教所展示的实验结果(如下):
在这里插入图片描述
对于这13个包,助教解释到:
(1-3)先TCP建立连接对的三次握手
(4)然后用户发送get请求
(5-8)然后数据传输
(9)第九帧结束OK
(10-13)最后TCP断开连接的四次挥手

下图是TCP的三次握手和四次挥手的大致示意图:
在这里插入图片描述
我们了解到,客户机在向服务器传输数据之前,先会发送序列号为x的SYN包到服务器,并等待服务器确认;这个称为第一次握手。然后服务器收到SYN包,向客户机发送一个序列号为x+1的ACK包确认收到,同时还发送一个序列号为y的SYN包,即SYN+ACK包,建立双向的通信;这个称为第二次握手。最后,客户机收到服务器的SYN+ACK包,也要向服务器发送序列号为y+1的ACK包确认,这就是完成三次握手。第三次握手成功后,客户机和服务器就能进行数据传送了。
在这里插入图片描述
四次挥手的过程与之类似。首先是客户机FIN请求断开,服务器发送ACK表示同意。然后服务器发送断开请求,在这之前,服务器仍然可以向客户机单向的传送数据,最后客户机发送同意,断开所有连接,这就是四次挥手。
1、启动 Wireshark,在菜单栏的捕获选项中设置捕获过滤器为 tcp port 80,点击 start 开始捕获.
2、点开命令行,输入:wget http://www.baidu.com。
在这里插入图片描述
#为什么输入的是www.baidu.com,但是ping实际找的是www.a.shifen.com:因为www.a.shifen.com是baidu的另一个名字,而百度有多个服务器,所以ip地址会不一样。
#电脑中没有wget组件的问题解决:在管理员权限下运行的cmd命令:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command “iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))” && SET “PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin”
然后choco install wget即可。
(如果不成功,可能是网络环境过于复杂的原因,建议更换网络,重新尝试)
然后我们可以得到如下的结果:

在这里插入图片描述
在这里插入图片描述

3、打开 Wireshark, 停止捕获
在这里插入图片描述
#遗憾的是最后三个包可能是TCP错误或者校验和错误,但是我们成功的捕获了其他的网络包。
4、根据实验结构,分析协议包的内容。
在这里插入图片描述
对于四个协议各自的字节数依次为:Ethernet II,14bytes;IPv4,20bytes;Trans Ctrl Protocol,20bytes;HyperText Trans Protocol,138bytes。对于Ethernet II协议,自身14bytes是头部,后面是负载;对于IPv4,20bytes是头部,后面是负载,所以包的结构大致如下。
在这里插入图片描述
这个包的结构也正好和助教给的TCP/IP网络模型暗合。
在这里插入图片描述
问题:
1.根据实验结构,分析协议开销。
估计上面定义的下载协议开销。回答问题,上面的开销是否是必要的?
关于协议的开销分析。要综合考虑两个方面的因素。一方面,协议本身的报头等内容属于协议的开销,这一点很容易考虑到。另一方面,要考虑到基于协议的一些机制。为了一个GET请求,前后还需要一些其他的SYN、ACK等请求,包括HTTP前面的两个TCP请求,即一个服务端发来的SYN、ACK和用户端发出的ACK,以及后面的一个TCP请求,即用户端发来的ACK。这些都要算在开销当中。
在这里插入图片描述
这样的话结合数据,一个GET本身大小为 138bytes,由于协议产生的总开销=64+54+14+20+20+54=226,单位bytes;这样比值就是0.61。当然,表面上看为了传138 bytes还要额外花226bytes,但是考虑到,传输信号的稳定性和准确性,这样的开销还是值得的,可以有效的减少错误包的出现。
因而,协议的开销是必要的,因为在网络的各层中存在着许多不同的协议,每个协议的定义与数据的划分都不相同,接收方和发送方的对等实体之间的协议必须保持一致,否则一方将无法识别另一方发出的信息,从而造成不可避免的灾难,增加的协议开销可以保证传输包的安全性和可检测性及可恢复性。
2、以太网头部中哪一部分是解复用键并且告知它的下一个高层指的是IP,在这一包内哪一个值可以表示IP?
对于最后一个问题分析多路分解键,要感谢wireshark的强大功能,能够直接在下拉框里面就能精准找到IP、TCP协议对应的二进制表示位。
在这里插入图片描述
所以IPv4对应的分解键是0800
在这里插入图片描述
TCP对应的分解键是6
在这里插入图片描述
也即,IP协议中 Protocol 中指示它的下一个高层指的是TCP(6)

五、实验结果总结
1、 实验之初,首先了解了TCP协议中三次招手和四次挥手的机制;并且成功安装了wget组件以及wireshark软件以及学会了wget命令。
2、实验首先完成了对于一个GET请求包的拆解分析。发现一个GET包的结构大致如下:
在这里插入图片描述
3. 实验是通过对于wireshark软件的灵活应用完成的。在其中体会到其强大功能,把理论中出现的概念一一与实现对应。
4. 最后,通过查阅资料,理解了之前没有理解的开销、分解键等概念,完成了此次实验。

六、附录
IP头部分析:
在这里插入图片描述
TCP头部分析:
在这里插入图片描述

本次实验报告内容参考Exp1.ppt以及:

  1. https://blog.csdn.net/qq_38950316/article/details/81087809
  2. https://jingyan.baidu.com/article/fedf073789c46a35ac897787.html
  3. https://blog.csdn.net/PancrasBohemian/article/details/78445635
  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值