HTTP协议详解

简介: HTTP是HyperText Transfer Protocol(超文本传输协议)的缩写,是互联网上面应用最为广泛的的一种网络协议。HTTP是一个基于TCP/IP协议的客户端和服务器端请求和应答的标准。客户端一般是本地浏览器。

目录

    • 概述
    • 特点
    • HTTP URL 详解
    • HTTP Request 请求
    • HTTP Response 响应
    • HTTP 状态码
    • HTTP 工作流程

    概述

    HTTP是HyperText Transfer Protocol(超文本传输协议)的缩写,是互联网上面应用最为广泛的的一种网络协议。HTTP是一个基于TCP/IP协议的客户端和服务器端请求和应答的标准。客户端一般是本地浏览器。

    HTTP是一个工作在应用层的面向对象协议,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送请求。服务器根据接收到客户端请求后,根据URL传递的信息,对应向客户端发送响应的信息。

    特点

      • 简单快速,浏览器向服务器发送请求的时候,一般情况下,只需要传递请求方法和路径,例如常用的POST、GET请求。因为这种简单的特点,使得HTTP服务器的压力也会比较小。保证了双方通信的及时快速。
      • 灵活,HTTP几乎支持传递所有类型的数据对象。如文字、图像、音频、视频等。传输的具体对象标识在Header的参数Content-Type中。
      • 无连接,这一点相信有过HTTP通信开发的人员都能够感受到,HTTP限制每次链接只处理一个请求。服务器处理完该请求并接受到客户端的应答后,才能接受第二次请求。
      • 无状态,表示处理本次的请求对之前的请求没有记忆能了,保证每个请求事务的完整性。后续处理如果要和之前关联,必须携带上之前的参数供服务器判断,这点可能导致每次传送的链接数据量增大,如果每次都是单独的业务操作,服务器的应答就会很快。
      • 支持浏览器/服务端(B/S)、客户端/浏览器(C/S)。

      HTTP URL 详解

      URL(Uniform Resource Locator)统一资源定位符,是一个HTTP通信中一个比较直接被用户接触到的东西,也是一个很重要的组成部分。其依托于URI(UniformResource Identifiers)统一资源标识符,来传输和建立连接。URL是一种特殊的URI,它更为细化的定位到了某个资源。下面通过一个完整的URL来分析这个里面包含的信息。

      https://www.hehehe.com:8080/he/index.php?user=123424#openDialog=1

        • 协议:上面URL使用到的协议是“https:”,代表该网站是使用的HTTP协议。在Internet中,还有其他协议,如HTTP协议,文件传输用到的FTP协议。这些协议后面使用“//”作为分隔符。
        • 域名:上面URL的域名就是“www.hehehe.com”。一个URL可以使用域名,也可以直接使用域名所解析到的IP访问。
        • 端口:跟在域名后面的就是端口,上面的8080就是端口,域名和端口之间通过“:”来分开,端口不是必须的,缺省状况默认的端口是80,在服务器上,每一个对外提供服务的应用程序都有端口。常用的MySQL是3306,Apache是80。FTP为22等。
        • 虚拟目录:域名部分后面第一个“/”到最后一个“/”为止,是虚拟目录的部分,虚拟目录也不是URL的必须的部分。如“www.baidu.com”也可以直接访问百度,上面的URL中"/he/"就是一个虚拟目录。
        • 文件部分:URL中从最后一个“/”到“?”中间的部分就是文件,如果没有“?”,就是到“#”。如上面的“index.php”就是一个文件。
        • 参数部分:从“?”到“#”的部分,上面的“user=123424”就是参数。
        • 锚部分:从“#”到最后都是锚部分,上面的“openDialog=1”就是锚部分。

        HTTP Request请求

        在概述中我们说到了,一次完整的HTTP请求,需要有客户端发起请求以及服务端相应请求的操作。Request就是客户端发起的请求。

        HTTP请求的类型有以下一些,主要用到的就是GET和POST两种。GET用户快速传递简单的,较小的参数。POST用于传输较大的复杂的数据类型。

        image.gif编辑

        一个HTTP Request主要包含以下几个部分。

          • 请求行(Request Line),请求行以一个方法头部开头,然后紧跟一个空行,后面跟着URI和协议的版本。
          • 请求头部(Request Header),头部里面包含一些基本属性,如指向的具体主机信息、请求的发起参数类型、访问请求的客户端信息、一些授权信息等。
          • 空行,介于请求头部与请求主体之间,必须要有。
          • 请求主体(Request Body),在GET请求中,请求的参数是和头部一起的,在POST请求中,请求主体是单独存在的。

          HTTP Response响应

          在服务器接受到HTTP的请求后,一般要给出一个响应消息。响应消息也是由四部分组成,大体和请求消息类似。

          image.gif编辑

            • 状态行,由HTTP版本号,状态码,状态消息三部分组成
            • 消息报头,用来标识一些附加信息,如上图中的第二行和第三行。标识了一些时间,页面字符编码信息。
            • 空行,上面的第四行,也是必须的。
            • 响应正文,空行后面的HTML信息就是正文。

            HTTP 状态码

            状态码就是访问服务器,服务器给出的返回提醒,大体上讲状态码,可以看到这些信息。

              • 1XX:表示请求接受,正在处理。
              • 2XX:表示处理成功,请求被接受、理解、接受。
              • 3XX:表示重定向,完成请求需要更进一步的操作。
              • 4XX:客户端请求不正确,请求被中断或者服务器找不到资源。
              • 5XX:服务器内部错误,无法完成请求。

              HTTP 工作流程

              下面介绍一个一次完整的HTTP请求会经历那些过程:

                • 客户端连接到HTTP服务器。
                • 客户端发送HTTP Request请求。
                • 服务器接受请求并返回HTTP响应。
                • 两端释放TCP连接。
                • 浏览器获取到Response的内容渲染到页面供用户浏览。

                 


                相关文章
                |
                数据采集 数据可视化 API
                QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
                本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
                599 4
                QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
                |
                8月前
                |
                缓存 负载均衡 网络协议
                HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
                面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
                |
                11月前
                |
                缓存 监控 搜索推荐
                301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
                301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
                1278 68
                |
                10月前
                HTTP协议中请求方式GET 与 POST 什么区别 ?
                GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
                882 2
                |
                10月前
                |
                应用服务中间件
                HTTP协议中常见的状态码
                HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
                715 0
                |
                10月前
                |
                网络协议 安全 网络安全
                什么是HTTP协议
                HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
                514 0
                |
                10月前
                |
                数据采集 Web App开发 JSON
                Python爬虫基本原理与HTTP协议详解:从入门到实践
                本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
                796 0
                |
                11月前
                |
                存储 网络协议 安全
                HTTP 协议及会话跟踪机制详解
                本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
                795 1
                |
                缓存
                HTTP协议深度剖析:常见请求头信息讲解
                这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
                404 17

                热门文章

                最新文章