HNU-计算机网络-实验1-应用协议与数据包分析实验(Wireshark)

计算机网络 课程基础实验一
应用协议与数据包分析实验(Wireshark)

计科210X 甘晴void 202108010XXX
在这里插入图片描述

一、实验目的:

通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。

二、实验内容

2.1 HTTP 协议简介

HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务。
(1)HTTP 的工作原理
HTTP 是一个面向事务的客户服务器协议。尽管HTTP 使用TCP 作为底层传输协议,但 HTTP 协议是无状态的。也就是说,每个事务都是独立地进行处理。当一个事务开始时,就在web客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接。此外,客 户可以使用多个端口和和服务器 (80 端口)之间建立多个连接。其工作过程包括以下几个阶段。
① 服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求;
② 一旦监听到连接请求,立即建立连接。
③ 浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。
④ 释放TCP 连接。
在浏览器和服务器之间的请求和响应的交互,必须遵循HTTP 规定的格式和规则。
当用户在浏览器的地址栏输入要访问的HTTP 服务器地址时,浏览器和被访问HTTP 服
务器的工作过程如下:
① 浏览器分析待访问页面的URL 并向本地DNS 服务器请求IP 地解析;
② DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器;
③ 浏览器与HTTP 服务器建立TCP 连接,若连接成功,则进入下一步;
④ 浏览器向HTTP 服务器发出请求报文 (含GET 信息),请求访问服务器的指定页面;
⑤ 服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览
器会打开多个端口,与服务器建立多个连接;
⑥ 释放TCP 连接;
⑦ 浏览器收到页面并显示给用户。

(2)HTTP 报文格式
HTTP 有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。图 5.46
显示了两种报文的结构。

在这里插入图片描述

在图1.1 中,每个字段之间有空格分隔,每行的行尾有回车换行符。各字段的意义如下:

① 请求行由三个字段组成:

  • 方法字段,最常用的方法为 “GET”,表示请求读取一个万维网的页面。常用的方法还有 “HEAD(指读取页面的首部)”和“POST(请求接受所附加的信息)

  • URL 字段为主机上的文件名,这时因为在建立TCP 连接时已经有了主机名

  • 版本字段说明所使用的HTTP 协议的版本,一般为 “HTTP/1.1”

    ② 状态行也有三个字段:

  • 第一个字段等同请求行的第三字段

  • 第二个字段一般为 “200”,表示一切正常,状态码共有41 种,常用的有:301 (网站已转移),400(服务器无法理解请求报文),404(服务器没有锁请求的对象)等

  • 第三个字段时解释状态码的短语

    ③ 根据具体情况,首部行的行数是可变的。请求首部有Accept 字段,其值表示浏览器 可以接受何种类型的媒体;Accept-language,其值表示浏览器使用的语言;User-agent 表明可用的浏览器类型。响应首部中有Date、Server、Content-Type、Content-Length 等字段。在请求首部和响应首部中都有 Connection 字段,其值为Keep-Alive 或 Close,表示服务器在传送完所请求的对象后是保持连接或关闭连接。

    ④ 若请求报文中使用 “GET”方法,首部行后面没有实体主体,当使用 “POST”方法时,附加的信息被填写在实体主体部分。在响应报文中,实体主体部分为服务器发送给客户的对象。

    图1.2 和图1.3显示了捕获的HTTP 请求和响应报文,结合上面的介绍,请自己分析和体会。
    在这里插入图片描述
    在这里插入图片描述

2.2实验环境与说明

(1)实验目的
在PC 机上访问Web 页面,截获报文,分析HTTP 协议的报文格式和HTTP协议的工作过程。
(2)实验设备和连接
本地实验室环境,无须设备连接;
注意:请通过访问可以连接的WWW 站点或使用IIS 建立本地WWW 服务器来进行实验。
(3)实验分组
每四名同学为一组,每人一台计算机独立完成实验。

2.3实验步骤

​ 步骤1:在PC 机上运行Wireshark,开始截获报文;

在这里插入图片描述

​ 步骤2:从浏览器上访问Web 界面(http://csee.hnu.edu.cn)。打开网页,待浏览器的状态栏出现 “完毕”信息后关闭网页。

​ 步骤3:停止截获报文,将截获的报文命名为http-学号保存。

​ 分析截获的报文,回答以下几个问题:
1)综合分析截获的报文,查看有几种HTTP 报文?

有TCP,DNS,ARP,HTTP,SSL,ICMPV6,TLSv1.3等报文

2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细分析它们的格式,填写表1.1 和表1.2。

▲请求报文截图:
在这里插入图片描述

表1.1 HTTP 请求报文格式:

方法:GET

版本:HTTP/1.1

URL: /favicon.ico

首部字段名字段值字段所表达的信息
Hostcsee.hnu.edu.cn接收请求的主机名
Connectionkeep-alive连接
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36表明可用的浏览器类型,这里使用的是GoogleChrome浏览器。
Acceptimage/avif,image/webp,image/apng,image/svg+xml,image/,/*;q=0.8描述接收响应数据的数据类型,q表示相对质量因子,指示接收数据类型的优先级
Refererhttp://csee.hnu.edu.cn/提供访问来源信息,即从那里来到的这个页面
Accept-Encodinggzip, deflate表示客户端可处理的压缩编码
Accept-Languagezh-CN,zh;q=0.9接收的语言类型

▲回复报文截图:

在这里插入图片描述

表1.2 HTTP 应答报文格式 :

版本:HTTP/1.1

状态码:200

短语:OK

首部字段名字段值字段所表达的信息
DateThu, 12 Oct 2023 05:23:46 GMT响应时间
Server*********服务器应用程序
X-Frame-OptionsSAMEORIGIN表示该页面可以在相同域名页面的frame中展示(即可以在同域名页面的frame中嵌套)
Cache-Controlno-store指定不缓存响应,表明资源不进行缓存
Pragmano-cache在 HTTP/1.1 协议中,它的含义和 Cache-Control:no-cache 相同
ExpiresThu, 01 Jan 1970 00:00:00 GMT过期时间
Content-Typeimage/gif;charset=UTF-8实体的内容类型
Content-Length0实体的字节大小
Set-CookieJSESSIONID=B3F69D4683D77B4FA0BBD8B423973CED; Path=/; HttpOnlycookie值
Keep-Alivetimeout=5, max=99持续连接的参数
ConnectionKeep-Alive建立持续链接
Content-Languagezh-CN实体的语言

3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用 了哪几个端口号?

★菜单栏“编辑”,“首选项”,“外观”,“列”中添加两项,就可以查看端口和端口号了。这一步灵感来源于https://blog.csdn.net/h1580824951/article/details/120333571

在这里插入图片描述

按照以上方式可得到所有HTTP报文对应的端口号

在这里插入图片描述

答案如下:

客户机与服务器建立了7个连接,
服务器使用的都是端口号80,
用户机使用了端口号51900,52004,52008,52017,52019,52018,52032
其中三次使用52008是TCP的三次握手

4 )综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表1.3 中。

实际上,由于我的页面打开初始是www.baidu.com,所以上面的初始一部分实际上在跟www.baidu.com进行通讯。我略去这一过程,只关注与http://csee.hnu.edu.cn进行通讯的过程。

注意到这里报文类型实际上也是一个需要关注的点,故加入这一列。另由于端口过多,只关注部分端口(尤其是端口52019,另外的52108、52107与这个类似)的连接与断开。

HTTP客户机端口号HTTP服务机端口号所包括的报文号报文类型步骤说明
585085310337DNS请求报文
535850810352DNSDNS响应报文,返回域名对应的IP地址
520088010477TCPSYN报文,请求建立与服务器的连接
805200810479TCPSYN ACK报文,允许客户与服务器建立连接
520088010480TCP对SYN ACK的确认,连接已建立
520088010481HTTP对网页的请求报文
805200810488HTTP响应报文
520198013629HTTP请求报文
805201913707HTTP响应报文
520198013708TCPACK报文
805201913709TCPFIN ACK报文(服务端发的第一个释放连接的请求)
520198013710TCPACK报文(客户端给服务端回应确认消息)
520198013711TCPFIN ACK报文(客户端发给服务端释放连接的请求)
805201913727TCPRST报文(本来应该是ACK表示服务端发确认消息,这里是连接突然终止了)

上面只重点列出了一个TCP连接的建立和释放的过程,其他两个连接是类似的,以上报文体现了HTTP的工作过程。

特别需要指出的是:典型的关闭请求,有时由客户端发起中断连接。但在这里的关闭请求由服务端发起,即http://csee.hnu.edu.cn主动发起并请求中断TCP连接。

★中间解题过程与截图如下:

DNS部分略

TCP三次握手建立连接

在这里插入图片描述

52017,52018,52019端口的结束报文

在这里插入图片描述

52019端口:RST报文

在这里插入图片描述

52019端口:正常传输

在这里插入图片描述

52019端口:四次挥手中的前三次

在这里插入图片描述

知识补充:三次握手与四次挥手

三次握手

在这里插入图片描述

四次挥手

在这里插入图片描述

最后的四次挥手原理讲解可以参考如下的讲解

https://blog.csdn.net/weixin_41033105/article/details/123861500

https://blog.csdn.net/m0_52650621/article/details/127797022

三次握手

第一次握手:这是客户端发起给服务器的报文,用于请求建立连接。

第二次握手:这是服务器回复给客户端的报文,用于确认并同意连接请求。

第三次握手:是客户端发给服务器的,是对上一个同意连接请求的确认。

四次挥手

第一次挥手:当数据传输首先结束的端(比如客户端),会率先发起结束断开连接的请求。

第二次挥手:对上一个断开连接请求的报文进行确认。并同时,停止接受数据。

第三次挥手:服务器端也结束数据发送了,所以也会发起一个断开连接的请求。

第四次挥手:是客户端对服务器断开连接请求的进行确认。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/177673.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日自动化提交git

目前这个功能,有个前提: 这个git代码仓库,是一个人负责,所以不存在冲突问题 我这个仓库地址下载后的本地路径是:D:\Projects\Tasks 然后我在另外一个地方新建了一个bat文件: bat文件所在目录为&#xff1a…

【PyTorch 卷积】实战自定义的图片归类

前言 卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一,它通过卷积层、池化层、全连接层等结构,可以有效地处理如时间序列和图片数据等。关于卷积的概念网络上也比较多,这里就不一一描述了。…

c++之类和对象

首先我们要理解cin,cout只能自动识别内置类型,原因就是因为cin,cout里面的函数重载。 那么如果我想输入非内置类型,就要进行运算符重载。 但是会发生如下的情况。 友元函数可以访问对象的私有。 运算符重载的总结 成员初始化既可以用函数体内初始化也可…

docker部署minio并使用springboot连接

需求:工作中,在微信小程序播放时,返回文件流并不能有效的使用,前端需要一个可以访问的地址,springboot默认是有资源拦截器的,但是不适合生产环境的使用 可以提供使用的有例如fastdfs或者minio,这…

【Linux】安装配置解决CentosMobaXterm的使用及Linux常用命令以及命令模式

目录 Centos的介绍 centos安装配置&MobaXterm 创建 安装 ​编辑 配置 ​编辑 MobaXterm使用 Linux常用命令&模式 常用命令 vi或vim编辑器 三种模式 命令模式 编辑模式 末行模式 拍照备份 Centos的介绍 CentOS(Community Enterprise Op…

软件测试面试,一定要准备的7个高频面试题(附答案,建议收藏)

问题1:请自我介绍下? 核⼼要素:个⼈技能优势⼯作背景经验亮点参考回答: 第一种:基本信息离职理由 ⾯试官您好,我叫张三,来⾃番茄市,在软件测试⾏业有 3 年的⼯作经验。做过 Web/APP…

无需编程技术,快速搭建个人网站

如果你想拥有一个属于自己的个人网站,但又没有任何编程经验,别担心,我们今天将为你介绍一个简单的方法,让你轻松搭建网站,无需任何编程知识。让我们一起来看看吧! 在乔拓云建站工具中,自带了许多…

图纸管理制度《八》设计图纸管理制度

第一章 总则 第1条 目的。为做好设计图纸的管理工作,使其收发及时、手续齐全、废图绝迹、不遗失、无差错,特制定本办法。 第2条 适用范围。本办法适用于企业所有工程项目的图纸管理工作。 第3条 相关部门及人员职责 (1) 工程技术部负责图纸管理的监督…

0基础学习PyFlink——个数滑动窗口(Sliding Count Windows)

大纲 滑动(Sliding)和滚动(Tumbling)的区别样例窗口为2,滑动距离为1窗口为3,滑动距离为1窗口为3,滑动距离为2窗口为3,滑动距离为3 完整代码参考资料 在 《0基础学习PyFlink——个数…

Explaining and harnessing adversarial examples

Explaining and harnessing adversarial examples----《解释和利用对抗样本》 背景: 早期的研究工作认为神经网络容易受到对抗样本误导是由于其非线性特征和过拟合。 创新点: 该论文作者认为神经网络易受对抗性扰动影响的主要原因是它的线性本质&#xf…

stm32 模拟I2C

目录 简介 I2C 物理层 协议层 ①②:起始信号和结束信号 ③ 应答和非应答信号 ④数据有效性 ⑤数据传输 ⑥空闲状态 简介 I2C 物理层 一个 I2C 总线两条线组成,一个双向串行数据线SDA用来表示数据,一个串行时钟线SCL用于数据收发同步…

5个最流行的文本生成纹理AI工具

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 拥抱文本生成纹理AI模型改变游戏规则的力量,人工智能驱动的创新彻底改变了游戏开发中的资产创建。 这些出色的工具可将书面描述转换…

《Generic Dynamic Graph Convolutional Network for traffic flow forecasting》阅读笔记

论文标题 《Generic Dynamic Graph Convolutional Network for traffic flow forecasting》 干什么活:交通流预测(traffic flow forecasting )方法:动态图卷积网络(Dynamic Graph Convolutional Network)…

Ubuntu 使用 nginx 搭建 https 文件服务器

Ubuntu 使用 nginx 搭建 https 文件服务器 搭建步骤安装 nginx生成证书修改 config重启 nginx 搭建步骤 安装 nginx生成证书修改 config重启 nginx 安装 nginx apt 安装: sudo apt-get install nginx生成证书 使用 openssl 生成证书: 到对应的路径…

【Mybatis-Plus】常见的@table类注解

目录 引入Mybatis-Plus依赖 TableName 当实体类的类名在转成小写后和数据库表名相同时 当实体类的类名在转成小写后和数据库表名不相同时 Tableld TableField 当数据库字段名与实体类成员不一致 成员变量名以is开头,且是布尔值 ​编辑 成员变量名与数据库关…

IDEA中application.properties文件中文乱码

现象: 原因: 项目编码格式与IDEA编码格式不一致导致的 解决办法: 在File->Settings->Editor->File Encodings选项中,将Global Encoding,Project Encoding,Default encoding for properties files这三个选项置为一致&a…

使用 Curl 和 DomCrawler 下载抖音视频链接并存储到指定文件夹

项目需求 假设我们需要从抖音平台上下载一些特定的视频,以便进行分析、编辑或其他用途。为了实现这个目标,我们需要编写一个爬虫程序来获取抖音视频的链接,并将其保存到本地文件夹中。 目标分析 在开始编写爬虫之前,我们需要了…

QQ文件怎么恢复?3个方法解决文件丢失问题!

无论是在学习还是工作中,我们都有可能需要接触到QQ这款软件。QQ传输文件十分方便,因此仍然有许多小伙伴喜欢用QQ来发送各种类型的文件。对于大家来说,最害怕的莫过于重要的文件出现丢失的情况。 当我们发现QQ文件意外删除或者过期时该怎么办…

k8s之集群调度

目录 调度 工作机制 调度过程 调度算法 优先级 指定调度节点 调度 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令…

【java学习—十】操作集合的工具类Collections(8)

文章目录 1. 操作集合的工具类: Collections2. 应用3. 查找、替换3.1. max 与 min3.2. 根据Comparator返回max(min) 3.3. frequency 与 replaceAll4. 同步控制 1. 操作集合的工具类: Collections Collections 是一个操作 Set 、List 和 Map 等集合的工具…