HTTP协议相关知识点

news2024/11/23 20:12:55

1,概念理解

HTTP(超文本传输协议),是一种建立在TCP上的无状态连接,
工作流程:客户端发送一个HTTP请求,说明想要访问的资源和请求的方式,服务端收到请求后进行处理,根据请求的方式访问服务器资源,最后通过http响应把结果返回给客户端。结束后会在服务端添加一条日志条目。

2,http头部信息

1,请求头

  • Accept:告诉web服务器 浏览器能够处理的内容类型
  • Accept-Charset:浏览器能够显示的字符集
  • Accept-Encoding:浏览器申明自己接收的编码方法
  • Accept-Language:浏览器申明自己接收的语言,浏览器当前设置的语言
  • Connection:浏览器和服务器之间的链接类型
  • Cookie ,在请求头中,注意:只有cookie的domain和path与发送的URL匹配才能发送
  • Host:发出请求的页面所在的域
  • referer:发出请求的页面的url
  • user-Agent:浏览器的用户代理字符串
    用setRequestHeader()可以设置请求头信息
    2,响应头
  • Set-Cookie 服务端返回,包含在响应头中,用来在客户端创建一个cookie
    name=‘’;expires=‘’;path=’
  • Date:消息发送的时间
  • server:服务器名
  • Connection:Client和server之间的连接类型
  • content-type:表示后面的文档属于什么MIME类型
  • Cache-Control:控制Http缓存

正则判断域名

三次握手

  • 第一次:客户端发送一个SYN和ack包,服务端知道客户端的发送能力ok和自己的接收能力ok
  • 第二次:客户端收到回应返回一个ACK包,知道自己和服务端的发送接收能力ok,但是服务端不知道自己发送能力ok不ok,
  • 第三次:服务端知道自己的发送接收能力ok
    四次挥手
  • 第一次:客户端发送一个FIN包,用来关闭客户端到服务端的数据发送,告诉服务端不再发送消息(此时还可以接收数据)
  • 第二次:服务端收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1
  • 第三次:服务端再发送一个FIN,用来关闭服务端到客户端的数据传送,也告诉客户端,我不再发送数据了。
  • 第四次:客户端收到FIN后,发送一个ACK给服务端

3,为什么要三次握手

前两次是为了基本的连接,第三次是为了防止失效的请求报文突然发送到服务端引起错误,
   比如因为某些原因,请求报文在网络中停滞延迟了,如果没有第三次握手,服务端收到这个延迟的报文后会发送数据到客户端,但是客户端此时已经没有数据要传输了,而服务端还在傻傻得等着,造成极大的资源浪费,如有有第三次的话,客户端通知一下服务端就可以避免这种情况了。

4,http1.0的缺点

  • 1,连接无法复用,导致每次都经历三次握手和慢启动
  • 2,对头阻塞,导致宽带无法被充分利用,以及后续请求被阻塞。
    4.1针对http1.0的缺点优化方案
    • 1,解决连接无法复用
      • (1)基于TCP的长连接 Connection:keep-alive
        信息的上报和推送变得更及时,在请求量爆发的时间点还能减轻服务器压力
      • (2)http long-polling
        客户端发送一个polling请求到服务器,服务器并不会马上返回业务数据,而是等待新的业务数据产生的时候再返回。
        缺点:用户增长的时候会增加服务器压力,稳定性不好,措施(重发和ack机制),polling的response可能会被中间代理cache住,处理好过期机制,每次请求都会带上重复的header信息,数据通道是单向的,主动权在服务端,客户端的请求无法及时传送。
        - (3)http streaming
        - (4) websocket
        和tcp socket一样是基于TCP协议,提供双向数据通道,优势在于利用了message的概念,比基于字节流的tcp socket使用简单,提供了长连接,缺点:不是所有浏览器都支持。
    • 解决 head of blocking
    • 使用pipelining机制
      在这里插入图片描述
      缺点:
  • 只适用于http1.1
  • 只有幂等请求(get ,head)能使用,非幂等不能
  • 阻塞并未解决,FIFO
  • 大部分代理不支持pipelining

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android View的事件分发机制

前言 本文由于介绍本人关于View的事件分发机制的学习,如有不恰当的描述欢迎指出。 View基础 什么是View ​ View是Android中所有控件的基类,不管是Button、TextView、LinearLayout,它们的共同基类都是View。也就是说,View是界…

【C++进阶篇】——STL的简介

【C进阶篇】——STL的简介 1.什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 2.STL的版本 原始版本 Alexander Stepanov、Meng Lee 在…

Github优质项目推荐(第八期)

文章目录 Github优质项目推荐 - 第八期一、【manim】,66.5k stars - 创建数学动画的 Python 框架二、【siyuan】,19.5k stars - 个人知识管理软件三、 【GetQzonehistory】,1.3k stars - 获取QQ空间发布的历史说说四、【SecLists】&#xff0…

<Project-11 Calculator> 计算器 0.3 年龄计算器 age Calculator HTML JS

灵感 给工人发工资是按小时计算的,每次都要上网,我比较喜欢用 Hours Calculator ,也喜欢它的其它的功能, 做个类似的。 我以为是 Python,结果在学 javascript 看 HTML,页面的基础还停留在 Frontpage 2000…

leetCode算法题爬楼梯递归写法

题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 1 阶2. 2 阶 …

互联网的无形眼睛:浏览器指纹与隐私保护攻略

你是否曾有过这样的经历:在某个电商网站上搜索了某件商品,随后无论你打开哪个网页,都能看到与之相关的广告?或者当你再次访问某个网站时,它居然记得你之前的浏览记录?这一切,背后都有一只“看不…

GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复

这两天测试GeeM2引擎的服务端,最常见的问题就是点击开始游戏出现白屏,最早还以为是服务端问题,结果是因为升级了引擎,而没有升级NewUI这份文件导致的。解决方法如下: 下载GEE引擎包最新版,(可以…

vue+spreadjs开发

创建vue3项目 pnpm create vite --registryhttp://registry.npm.taobao.org安装spreadjs包 pnpm install "grapecity-software/spread-sheets17.1.7" "grapecity-software/spread-sheets-resources-zh17.1.7" "grapecity-software/spread-sheets-vu…

Linux操作进程

前言 这次的主要内容就是进程的实操,主要是进程创建,进程终止,进程等待和进程程序替换,最后我们在手写一个简单的shell 1.进程创建 进程创建就是fork,所以我们就讲一些知识性的就可以了 首先在创建子进程的时候&…

【ArcGIS Pro实操第5期】全局及局部空间插值:GPI、LPI、IDW等

ArcGIS Pro实操第5期:全局及局部空间插值 ArcGIS Pro-用于空间插值的丰富工具箱实操:空间插值方法1:Trend Surface Model for Interpolation-以降水数据为例方法2:Kernel Density Estimation Method-以单位面积鹿的目击数为例方法…

爆破(使用Burp Suite)

以此靶场为例 1.启动此靶场,双击靶机进入 2.进入后页面如下 3.打开Burp Suite中的代理中的拦截 4.再随便往输入框里面输入什么 5.提交后为这个页面,或其他 6.将系统代理改为proxy,按图片顺序点 本来选中的是系统代理,改为proxy …

ruoyi域名跳转缓存冲突问题(解决办法修改:session名修改session的JSESSIONID名称)

【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】【创作不易,点个赞就是对我最大的支持】 前言 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 目录 前…

2024“源鲁杯“高校网络安全技能大赛-Misc-WP

Round 1 hide_png 题目给了一张图片,flag就在图片上,不过不太明显,写个python脚本处理一下 from PIL import Image ​ # 打开图像并转换为RGB模式 img Image.open("./attachments.png").convert("RGB") ​ # 获取图像…

新手直播方案

简介 新手直播方案 ,低成本方案 手机/电脑 直接直播手机软件电脑直播手机采集卡麦电脑直播多摄像机 机位多路采集卡 多路麦加电脑(高成本方案) 直播推流方案 需要摄像头 方案一 :手机 电脑同步下载 网络摄像头 软件&#xff08…

MySQL-DQL练习题

文章目录 简介初始化表练习题 简介 本节简介: 主要是一些给出一些习题, 关于DQL查询相关的, DQL查询语句是最重要的SQL语句, 功能性最复杂, 功能也最强, 所以本节建议适合以及有了DQL查询基础的食用, 另外注意我们使用的是Navicat, SQL编辑的格式规范也是Navicat指定的默认格式…

基于信号分解和多种深度学习结合的上证指数预测模型

大家好,我是带我去滑雪! 为了给投资者提供更准确的投资建议、帮助政府和监管部门更好地制定相关政策,维护市场稳定,本文对股民情绪和上证指数之间的关系进行更深入的研究,并结合信号分解、优化算法和深度学习对上证指数…

codimd更改登录超时时限

codimd更改登录超时时限不生效,总是大概15分钟退出 现象:更改CMD_SESSION_LIFE,无论怎么改大都不生效,总是大概15分钟。 解决: 发现需要同步修改CMD_SESSION_SECRET,修改完毕之后终于更新了。 CMD_SESSIO…

Spring Cloud --- Sentinel 熔断规则

熔断规则 慢调用比例 发送10个请求,每个请求理想响应时长为200毫秒。统计1秒钟,如果10个请求响应时间超过200毫秒的比例大于等于10%,则触发熔断,熔断5秒。 异常比例 1秒内,发送请求出现异常率为20%,则触…

2024年10月27日 十二生肖 今日运势

小运播报:2024年10月27日,星期日,农历九月廿五 (甲辰年甲戌月甲子日),法定节假日。 红榜生肖:牛、猴、龙 需要注意:羊、兔、马 喜神方位:东北方 财神方位&#xff1a…

报名了,奖金6万!2024年四川省大学生数据科学与统计建模竞赛(算法赛)-基于新网银行数据集

为进一步培养学生创新精神和实践能力,鼓励学生运用统计学模型、机器学习模型等数据科学专业知识,协助解决经济社会领域中的实际问题,由四川省教育厅主办,西南财经大学与四川新网银行承办,四川省普通本科高等学校统计学…