• Wireshark数据抓包分析之HTTP协议


    预备知识

    1.什么是HTTP

    HTTP(HyperText Transfer Protocol,超文本传输协议)是Web系统最核心的内容,它是Web服务器和客户端直接进行数据传输的规则。Web服务器就是平时所说的网站,是信息内容的发布者。最常见的客户端就是浏览器,是信息内容的接受者。
    HTTP(HyperText Transfer Protocol,超文本传输协议)协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,有请求和响应构成,是一个标准的客户端服务器模型。
    HTTP具有以下几个特点:
    1.支持客户/服务器模式,支持基本认证和安全认证。
    2.简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    4.HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。
    5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

    2.HTTP请求方法

    HTTP/1.1协议中共定义了8种动作(方法)来表明Request-URI指定的资源的不同操作方式。
    (1)OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送“*”的请求来测试服务器的功能性。
    (2)HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
    (3)GET:向特定的资源发出请求。注意:get方法不应当被用于产生“副作用”的操作中。例如在Web APP中,其中一个原因是GET可能会被网站蜘蛛等随意访问。
    (4)POST:向指定资源提交数据进行处理请求(比如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
    (5)PUT:向指定资源位置上传其最新内容。
    (6)DELETE:请求服务器删除Request-URI所标识的资源。
    (7)TRACE:回显服务器收到的请求,主要用于测试或者诊断。
    (8)CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    在大部分情况下,只会用到GET和HEAD方法,并且这些方法是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405,当服务器不认识或不支持对应的请求方法的时候,应当返回状态行501。

    3.HTTP工作流程

    HTTP是一个无状态的协议。无状态是指客户端(Web浏览器)和服务器之间不需要建立持久的链接。这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应“*”(response),连接就被关闭了,在服务器端不保留连接的有关信息。HTTP遵循请求(Request)/应答(Response)模型。客户端(Web浏览器)向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。在该过程中要经过4个阶段,包括建立连接、发送请求信息、发送响应信息和关闭连接,如下图所示:
    在这里插入图片描述
    下面详细介绍上图中描述的HTTP工作流程,如下:
    1.客户端通过TCP三次握手与服务器建立连接。
    2.TCP建立连接成功后,向服务器发送HTTP请求。
    3.服务器接收客户端的HTTP请求后,将返回应答,并向客户端发送数据。
    4.客户端通过TCP四次断开,与服务器断开TCP连接。

    4.持久性连接与非持久性连接

    浏览器与web服务器建立TCP连接后,双方就可以通过发送请求信息和应答信息进行数据传输。在HTTP协议中,规定TCP链接既可以是持久的,也可以是非持久的。具体采用哪种链接方式,可以由通用头域中的Connection指定。在HTTP/1.0版本中,默认使用的是非持久性连接,在HTTP/1.1版本中,默认使用的是持久性连接。

    4.1 非持久连接

    非持久性连接就是每个TCP连接只用于传输一个请求消息和一个响应消息。用户每请求一次Web页面,就产生一个TCP连接。为了更详细的了解非持久连接&#x

  • 相关阅读:
    C4D 2024插件Arnold mac(C4D S2024阿诺德渲染器) 中文版介绍
    SpringCloud之Sentinel
    用ARM进行汇编语言编程(3)逻辑移位和轮换,条件与分支
    【vue】实现打印功能
    SSM整合(二)
    【译】.NET 8 拦截器(interceptor)
    python 多个proto文件import引用时出现ModuleNotFoundError错误
    ggplot 分面的细节调整汇总
    android关于性能优化
    JDK17 New Feature
  • 原文地址:https://blog.csdn.net/ChuMeng1999/article/details/126853977