HTTP协议详解

本文涉及的产品
.cn 域名,1个 12个月
简介: 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的内容渲染到页面供用户浏览。

                 


                相关文章
                |
                15天前
                |
                缓存 网络协议 前端开发
                Web 性能优化|了解 HTTP 协议后才能理解的预加载
                本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
                |
                19天前
                |
                JavaScript 安全 Java
                谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
                下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
                45 1
                |
                29天前
                |
                前端开发 JavaScript 安全
                深入解析 http 协议
                HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
                29 0
                深入解析 http 协议
                |
                1月前
                |
                数据采集 JSON API
                🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
                本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
                99 3
                |
                1月前
                |
                机器学习/深度学习 JSON API
                HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
                在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
                41 2
                |
                1月前
                |
                数据采集 存储 JSON
                从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
                在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
                61 3
                |
                1月前
                |
                数据采集 网络协议 API
                HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
                【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
                67 8
                |
                1月前
                |
                缓存 网络协议 UED
                HTTP协议介绍
                HTTP协议的
                36 5
                |
                1月前
                |
                安全 网络安全 数据安全/隐私保护
                HTTP与HTTPS协议区别及应用场景
                在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。
                |
                1月前
                |
                缓存 开发者
                HTTP协议
                HTTP协议
                44 2

                热门文章

                最新文章