HTTP 基本概念

这篇具有很好参考价值的文章主要介绍了HTTP 基本概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. HTTP

(Hypertext Transfer Protocol)超文本传输协议,是互联网上应用最为广泛的协议之一。

小林coding的解析特别通俗易懂
https://xiaolincoding.com/network/2_http/http_interview.html#http-%E6%98%AF%E4%BB%80%E4%B9%88

  • 协议:HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范)。
  • 传输:把一堆东西从 A 点搬到 B 点,或者从 B 点 搬到 A 点

HTTP 协议是一个双向协议。 在上网冲浪时,浏览器是请求方 A,百度网站就是应答方 B。双方约定用 HTTP 协议来通信,于是浏览器把请求数据发送给百度服务器,服务器再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以看到图片、视频了。
HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

  • 超文本:「文本」在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等,在 HTTP 眼里这些都算作「文本」。「超文本」它就是超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。

HTML就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,再经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
注:两点之间不一定是客户端和服务器,也可以是服务器和服务器

2. HTTP的基本概念:

  1. 报文(Message): HTTP通信的基本单位,分为请求报文和响应报文。报文包括报文首部和报文主体。
  2. 报文首部: 包含了请求或响应的元信息,如Host、User-Agent、Content-Type等。首部可以分为通用首部、请求首部、响应首部和实体首部。

常见字段:

  • Host :客户端发送请求时,用来指定服务器的域名。
  • Content-Length:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度。(“粘包”)
  • Connection:字段最常用于客户端要求服务器使用「HTTP 长连接」机制,以便其他请求复用(HTTP 长连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。)
    (不要把 HTTP Keep-Alive 和 TCP Keepalive 搞混)
  • Content-Type:用于服务器回应时,告诉客户端,本次数据是什么格式。
  • Cookie: 由服务器发送给客户端,存储在客户端本地的一小段文本信息。用于跟踪用户的状态,常用于实现用户登录状态的保持。
  1. 请求报文(Request): 客户端向服务器发送的消息,用于请求某种操作。请求由请求行、请求头和请求体组成。请求行包括请求方法、请求的URL和HTTP协议版本。
    HTTP 基本概念,http,网络协议,网络
  2. 请求方法: 定义了对资源执行的操作,常见的有GET、POST、PUT、DELETE等。每个方法对应一种特定的操作。
  • GET 的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。
  • POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 请求携带数据的位置一般是写在报文 body 中,body 中的数据可以是任意格式的数据,只要客户端与服务端协商好即可,而且浏览器不会对 body 大小做限制。

GET 和 POST 方法都是安全和幂等的吗?
安全:指请求方法不会「破坏」服务器上的资源。
幂等:多次执行相同的操作,结果都是「相同」的。

  • *GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。*所以,可以对 GET 请求的数据做缓存,这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),而且在浏览器中 GET 请求可以保存为书签。
  • *POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。*所以,浏览器一般不会缓存 POST 请求,也不能把 POST 请求保存为书签。

5. 响应报文(Response): 服务器向客户端返回的消息,用于响应客户端的请求。响应由状态行、响应头和响应体组成。状态行包括响应的状态码和对应的状态消息
HTTP 基本概念,http,网络协议,网络

  1. 状态码: 用于表示服务器对请求的处理结果。常见的状态码包括200(OK,请求成功)、404(Not Found,资源未找到)、500(Internal Server Error,服务器内部错误)等。
    HTTP 基本概念,http,网络协议,网络
  2. HTTP 缓存有两种实现方式,分别是强制缓存和协商缓存。

3. HTTP 特性

HTTP/1.1 的优点有:「简单、灵活和易于扩展、应用广泛和跨平台」

  1. 简单
    HTTP 基本的报文格式就是 header + body,头部信息也是 key-value 简单文本的形式,易于理解,降低了学习和使用的门槛。
  2. 灵活和易于扩展
    HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充。
    同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化,比如:
    HTTPS 就是在 HTTP 与 TCP 层之间增加了 SSL/TLS 安全传输层;
    HTTP/1.1 和 HTTP/2.0 传输协议使用的是 TCP 协议,而到了 HTTP/3.0 传输协议改用了 UDP 协议。
  3. 应用广泛和跨平台
    互联网发展至今,HTTP 的应用范围非常的广泛,从台式机的浏览器到手机上的各种 APP,从看新闻、刷贴吧到购物、理财、吃鸡,HTTP 的应用遍地开花,同时天然具有跨平台的优越性。

HTTP 协议 缺点:是 「无状态、明文传输、不安全」

  1. 无状态:无状态的好处,因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。
    无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。
    例如登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。但服务器不知道这些请求是有关联的,每次都要问一遍身份信息。

对于无状态的问题,解法方案有很多种,其中比较简单的方式用 Cookie 技术。
Cookie 通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
相当于,在客户端第一次请求后,服务器会下发一个装有客户信息的「小贴纸」,后续客户端请求服务器的时候,带上「小贴纸」,服务器就能认得了HTTP 基本概念,http,网络协议,网络

总之 HTTP/1.1 的性能一般般,后续的 HTTP/2 和 HTTP/3 就是在优化 HTTP 的性能。

参考链接
https://blog.csdn.net/Hardworking666/article/details/123833192
https://xiaolincoding.com/network/2_http/http_interview.html#http-1-1-%E7%9A%84%E6%80%A7%E8%83%BD%E5%A6%82%E4%BD%95文章来源地址https://www.toymoban.com/news/detail-822850.html

到了这里,关于HTTP 基本概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP 基本概念

    (Hypertext Transfer Protocol)超文本传输协议,是互联网上应用最为广泛的协议之一。 小林coding的解析特别通俗易懂 https://xiaolincoding.com/network/2_http/http_interview.html#http-%E6%98%AF%E4%BB%80%E4%B9%88 协议:HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算

    2024年01月25日
    浏览(30)
  • HTTP协议基本格式

    HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。 注:Chrome浏览器或Chrome内核浏览器可用(如Edge, Firefox) 在目标网页打开开发者工具: 点击网络(Network): 此时就可以看到目标网页的所有请求。 查看请求和响应: 浏览器自带抓包工具功能有限,

    2024年02月08日
    浏览(34)
  • HTTP 协议的基本格式

    什么是HTTP?HTTP是应用层的一个重要协议.它定义了浏览器怎样向服务器请求文件,以及服务器怎样把文件传送给浏览器. 我们打开浏览器,手动输入一个网址:baidu.com.那么此时浏览器就会给百度的服务器发送请求.百度服务器在返回一个html的响应. 那么我们如何学习HTTP协议呢?通过它

    2024年02月06日
    浏览(33)
  • HTTP协议的基本格式

    目录 一、HTTP请求  1.1 首行 1.1.1 URL 1.1.2 方法 1.2 请求报头(header) 1.2.1 host ​编辑 1.2.2 Content-Length和Content-Type 1.2.3 User-Agent 1.2.4 Referer 1.2.5 Cookie 1.3 请求正文(body) 1.3.1  application/x-www-form-urlencoded  1.3.2 application/json 1.3.3  multipart/form-data 二、HTTP响应 2.1 首行 2.1.1 状态码 H

    2024年02月17日
    浏览(50)
  • Web基本与HTTP协议

    目录 一:域名 1.域名概述 2.域名空间结构 3. 域名注册 二: 网页访问(HTTP/HTTPS) 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 (1)网页摘要信息的作用 (2)标题标签类型 三:HTML 1.HTML 概述 2.HTML 基本标签 (1)HTML 语法规则 (2)HTML 文件结构 (3)网页

    2024年02月06日
    浏览(35)
  • Ajax-概念、Http协议、Ajax请求及其常见问题

    其他AJAX知识 AJAX同源策略及跨域问题解决方案——点击此处 AJAX请求的不同发送方式——点击此处 AJAX 全称为Asynchronous Javascript And XML,就是 异步的JS和XML 。通过AJAX 可以在浏览器中向服务器发送异步请求,最大的优势: 无刷新获取数据 。AJAX 不是新的编程语言,而是一种将现

    2024年02月13日
    浏览(39)
  • HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几个部分组成: 请求行:包括请求方法(GET、POST等)、请求的URI和HTTP协

    2024年02月12日
    浏览(44)
  • HTTP 协议的基本格式和 fiddler 的用法

    目录 一.  HTTP 协议 1. HTTP协议是什么 2. HTTP协议的基本格式  HTTP请求 首行                  GET和POST方法:                 其他方法                  经典面试题:                 URL Header(请求报头)部分 空行  ​HTTP响应          状态

    2024年02月12日
    浏览(31)
  • 网络协议HTTP/1、HTTP/2 及 HTTP/3详解

    目录 概述  一、发展史 HTTP/1.1  Keep-alive  动静分离  HTTP/2 二进制传输   多路复用 Header 压缩 服务端 Push  HTTP/3 QUIC  多路复用 0-RTT 纠错机制 三、小结 HTTP(Hyper Text Transformer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到

    2024年02月02日
    浏览(56)
  • 尚硅谷ES基础 - RESTful & JSON&基本概念&倒排索引&HTTP

    RESTful JSON REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求

    2024年02月21日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包