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

news2024/11/28 1:50:51

计算机网络 课程基础实验一
应用协议与数据包分析实验(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.coloradmin.cn/o/1160381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《算法通关村——缓存机制了解LRU实现》

《算法通关村——缓存机制了解LRU实现》 介绍 LRU是"Least Recently Used"(最近最少使用)的缓存机制,它是一种常用的缓存算法,用于管理缓存中的数据项。LRU缓存机制的基本思想是,当缓存达到其容量限制时&a…

ChatGPT对未来发展的影响?一般什么时候用到GPT

ChatGPT以其强大的自然语言处理能力对未来的发展具有重要影响。以下是ChatGPT的潜在影响和一般使用情况: 改善自然语言理解和生成:ChatGPT和类似的模型可以改善机器对人类语言的理解和生成。这将有助于改进各种应用领域,包括智能助手、聊天机…

功放电路有这么多种,哪种音质最好呀?

功放电路种类很多,首先得知道各个功放电路的特点。 第一种,A类功放(甲类功放),在信号的整个周期内都不会出现电流截止(即停止输出)的一类放大器。 但是A类放大器工作时会产生高热,效率很低,优…

使用postman进行接口自动化测试

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

数据结构之栈的实现

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇: Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”…

干货分享,大厂内部压测方案设计!

01、为什么要做压测 1、什么是压力测试? 不断向被测对象施加压力,测试系统在压力情况下的表现。 2、压力测试的目的是什么? 测试得出系统的极限性能指标,从而给出合理的承诺值或者容量告警; 找出系统的性能瓶颈&a…

5.1 实体完整性

思维导图: 前言 第5章 数据库完整性笔记 定义: 完整性:确保数据的正确性和相容性。 正确性:数据与现实世界语义相符、反映实际状况。相容性:同一对象在数据库的不同关系表中数据逻辑上是一致的。 示例: 学…

【发表案例】2区正刊,网络安全、智能系统领域,2个月3天录用,11天见刊,16天检索!

计算机类SCIE 【期刊简介】IF:4.0-5.0,JCR2区,中科院3区 【检索情况】SCIE 在检,正刊 【征稿领域】提高安全性和隐私性的边缘/云的智能方法的研究,如数字孪生等 【截稿日期】2023.11.30 录用案例:2个月…

LCD驱动程序——Framebuffer应用编程

1.LCD 操作原理 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意思,buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 L…

怎样利用 AI 大模型,辅助研发管理与效能提升?

AI 大模型已经逐渐渗透到各行各业的应用场景中,在软件研发领域也不例外。在软件研发领域,从需求分析到软件设计,从软件开发到测试,以及最后发布上线,AI 在各个环节都发挥着重要作用。10 月 21 日,思码逸首席…

react条件渲染

目录 前言 1. 使用if语句 2. 使用三元表达式 3. 使用逻辑与操作符 列表渲染 最佳实践和注意事项 1. 使用合适的条件判断 2. 提取重复的逻辑 3. 使用适当的key属性 总结 前言 在React中,条件渲染指的是根据某个条件来决定是否渲染特定的组件或元素。这在构…

图解刘润2023年度演讲--进化的力量思维导图精华

大家好,我是老原。 周末,商业顾问刘润发表了年度演讲:《进化的力量:寒武纪大爆发》。 这两天出差期间,陆陆续续看完了这个长达4小时的演讲,梳理了2023年到底发生了些什么,现在的环境如何…… …

技术阅读周刊第三期

技术阅读周刊,每周更新。 历史更新 20231013:第一期20231022:第二期 Understanding The Linux TTY Subsystem URL: https://ishuah.com/2021/02/04/understanding-the-linux-tty-subsystem/本文讲解了 Linux TTY 的历史故事和来源。 TTY 是 t…

HNU-算法设计与分析-讨论课1

第一次小班讨论 (以组为单位,每组一题,每组人人参与、合理分工,ppt中标记分工,尽量都有代码演示) 1.算法分析题 2-10、2-15(要求:有ppt(可代码演示)) 2.算法实现题 2-4、…

蓝桥杯(C++ 扫雷)

题目&#xff1a; 思想&#xff1a; 1、遍历每个点是否有地雷&#xff0c;有地雷则直接返回为9&#xff0c;无地雷则遍历该点的周围八个点&#xff0c;计数一共有多少个地雷&#xff0c;则返回该数。 代码&#xff1a; #include<iostream> using namespace std; int g[…

【Java 进阶篇】Java中的响应输出字节数据

在Java Web应用程序开发中&#xff0c;处理响应是一个常见的任务。有时&#xff0c;您可能需要向客户端发送字节数据&#xff0c;而不仅仅是文本或HTML内容。这可以用于传输各种内容&#xff0c;如图像、文件、视频等。本文将详细介绍如何在Java中使用Response对象输出字节数据…

sql语句性能进阶必须了解的知识点——索引失效分析

在前面的文章中讲解了sql语句的优化策略 sql语句性能进阶必须了解的知识点——sql语句的优化方案-CSDN博客 sql语句的优化重点还有一处&#xff0c;那就是—— 索引&#xff01;好多sql语句慢的本质原因就是设置的索引失效或者根本没有建立索引&#xff01;今天我们就来总结一…

160. 相交链表、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天分享一些包括但不限于计算机基础、算法等相关的知识点&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&#x1f4d6;是你想要的&#x1f497; ⛽️今…

从零开始制作一个桶装水小程序

随着互联网的发展&#xff0c;越来越多的消费者通过线上购买桶装水。为了满足这一需求&#xff0c;我们需要制作一个专门的小程序商城&#xff0c;以便用户可以方便地购买桶装水。本文将通过乔拓云平台&#xff0c;从零开始制作一个桶装水小程序&#xff0c;并详细解析制作步骤…

二、类与对象(一)

1 面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。以洗衣服为例&#xff0c;通常洗衣服会经历以下过程&#xff1a; 而C是基于面向对象的&#xff0c;关注的是对象&#xff0c…