首页 > 其他分享 >计算机网络详解——HTTP/1.1 优缺点

计算机网络详解——HTTP/1.1 优缺点

时间:2023-04-25 10:33:12浏览次数:47  
标签:状态 HTTP 1.1 应答 优缺点 TCP 请求

一、优点

1.1 可扩展

正是因为HTTP规范中限制很少,告诉你可以做什么,但是不会告诉你各种条条框框不能做什么,所以,很容易扩展,这也是为什么从HTTP/0.9诞生,一直扩展升级,添加更多的特性的原因。 image.png

1.2 传输可靠性

由于底层是基于TCP协议的,所以继承了TCP传输数据的可靠性,主要体现在[1]:

  • 数据的顺序传输;
  • 丢包重传,保证可靠;
  • 连接维护;
  • 流量控制,保证稳定;
  • 拥塞控制,及时调整,最大程度保证传输正常进行。

1.3 基于请求应答模式

只有一方先主动发起连接和请求之后,接收方才可以进行响应。HTTP正是基于这种一问一答的请求应答模式。如果客户端不请求,服务端就不会搭理客户端。

虽然后面HTTP/2出现了服务端推送[2],但是也是针对特定资源的推送,并不是服务端想推送什么就推送什么。

1.4 无状态

有状态意味着一定会通过某种状态标识为去追踪状态,就像TCP的状态机,TCP请求头有特定的状态标识位来维护连接的状态。

HTTP并没有提供记录状态的地方,也就是说在交互性场景中,HTTP没有记忆能力。这就会导致这样的问题:

  • 同一个用户多次访问一个网站,都需要重复读做身份验证。

即使开启了keep-alive机制,也只是TCP层面的维持连接,对于HTTP层来说,看起来还是无状态的。

我们不能每次都要让用户输入账号密码进行身份验证吧,为此才会出现Cookie和Session,为HTTP弥补了状态存储的问题。

二、缺点

2.1 明文传输,不安全

我们通过抓包工具抓HTTP/1.1的包,通过肉眼都可以看到请求头和请求体里面的内容,那么用户登录请求的时候,传输的账号密码以下子就可以捕获到了。

我们知道,数据在网络中请求的链路是很漫长的,只要任何一个环节抓到了你的包,你的数据就泄露了。这也是为什么要推出HTTPS的原因。

2.2 性能较差(请求-应答)

由于使用请求应答机制,每次都需要传一大段请求头,效率比较差。

另外,HTTP/1.1基于请求-应答模式,在应用层存在队头阻塞问题,并且TCP层同样会存在TCP的队头阻塞问题,导致性能比较差,需要通过各种奇门妙招去优化网络请求。

效率问题正是促使HTTP/2、HTTP/3诞生的原因之一。

参考: https://www.itzhai.com/articles/getting-to-know-http-1-1.html

https://www.cnblogs.com/traditional/p/15373971.html

标签:状态,HTTP,1.1,应答,优缺点,TCP,请求
From: https://blog.51cto.com/u_14014612/6223553

相关文章

  • SpringBoot 编译运行时出现 错误: 无 效的目标发行版:1.11 的解决方法
    网上的方法大多是jdk版本不一致问题这里需要修改下所用maven的settings.xml以下贴的图是修改后,原本我这里jdk的版本号全部是1.11 修改以后就可以顺利运行了,乌鱼子......
  • ai问答:使用 Vue3 组合式API 和 TS 配置 axios 拦截器 http错误状态
    通过axios.create()可以创建一个axios实例axiosInstance,参数如下:baseURL:请求前缀timeout:超时时间headers:请求头默认配置:import{defineComponent}from'vue'importaxiosfrom'axios'exportdefaultdefineComponent({setup(){//实例-默认配置......
  • HTTP---响应数据格式
       ......
  • 第138篇:了解HTTP协议(TCP/IP协议,DNS域名解析,浏览器缓存)
    好家伙,发现自己的网络知识十分匮乏,赶紧补一下 这里先举个我生活中的例子欸,作业不会写了,上网搜一下用edge浏览器上bing必应搜一下(百度广告太多了,真不想用百度举例子) 假设这是我们第一次访问bing的首页当我向浏览器中输入https://cn.bing.com/并按下回车浏览器做了什么?(我......
  • cuda编程 转载https://zhuanlan.zhihu.com/p/592721411
     4.相关概念和术语在CUDA编程模型中,两个主要的硬件设备分别为CPU和GPU,它们都有自己专用的内存区域。I主机、设备和异构并行编程CPU连同它的计算机RAM被称为主机(Host)。CPU由于其结构特点非常适合运行串行程序。但CPU的问题是,如果其运行至一部分需要大规模并行运算的代码时,......
  • 大端存储和小端存储异同及优缺点
    大端存储与小端存储(1)定义大端存储与小端存储模式主要指的是数据在计算机中存储的两种字节优先顺序。小端存储指从内存的低地址开始,先存储数据的低序字节再存高序字节;相反,大端存储指从内存的低地址开始,先存储数据的高序字节再存储数据的低序字节。注意事项:每一个字节中......
  • SRS流媒体服务器之HTTP-FLV框架分析
    SRS流媒体服务器之HTTP-FLV框架分析链接:https://www.isolves.com/it/cxkf/kj/2021-03-25/37488.html介绍的代码和现版本代码有出处,但对流程序的理解有相当的价值。简要笔记如下。整体的框架:RTMP推流端-----》SRS流媒体服务器(建立SOURCE->生成Consumer->指定封装格式endoder=F......
  • 解决Since Maven 3.8.1 http repositories are blocked的问题
    在使用Idea社区版时,已经默认带了Maven插件。所以无需额外安装Maven即能使用。进入Idea的Maven插件目录:C:\ProgramFiles\JetBrains\IntelliJIDEACommunityEdition2023.1\plugins\maven\lib\maven3\conf编辑setting.xml文件,并注释以下内容: <!--<mirror><id......
  • 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    .net6之后,不会随项目生成packages文件夹,将项目拷贝到无联网的电脑上用VS打开时,会出现nuget还原失败的情况,只需要把原电脑中的用户文件夹下的.nuget文件夹拷贝过去,放到对应路径下即可......
  • jmeter中的java请求 用httpclient写的http请求 及参数化
    首先,jmeter中的sample的原理: jmeter 中的java 请求,sample 原理,java testjmeter自带的包,把包放在类路径下面,通过反射机制,通过反射机制扫出来。 先导入五个jar包  packagecom.young.testing91;importjava.io.IOException;importorg.apache.http.client.C......