当前位置: 首页 > article >正文

HTTP协议相关知识点

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.kler.cn/news/367621.html

相关文章:

  • 管家婆财贸ERP BB040.销售单插行快捷键+BB041.超期应收款审核条件控制
  • 传奇开服教程之新GOM引擎登录器配置教程
  • 软考系统分析师知识点二四:错题集11-20
  • 2024系统架构师---真题考试知识点
  • 系统聚类比较——最短距离法、最长距离法、重心法和类平均法
  • 青少年编程与数学 02-002 Sql Server 数据库应用 15课题、备份与还原
  • 网络编程_day3
  • Flutter 鸿蒙next中的路由使用详解【基础使用】
  • 团结引擎内置 AI 助手团结 Muse Chat 测试版上线!新功能怎么用?能做什么?
  • 技术周总结 10.21~10.27周日
  • LeetCode刷题日记之动态规划(一)
  • 2025前端面试-内存泄露-001
  • k8s 1.21.1部署过程中calico服务启动失败问题
  • LeetCode_1688. 比赛中的配对次数_java
  • LabVIEW提高开发效率技巧----事件日志记录
  • LExecutor: Learning-Guided Execution——论文笔记
  • 爬虫中代理ip 的选择和使用实战
  • Solon浅体验
  • 在虚拟机中编译imx6ull开发板的字符驱动文件报错关于freetype的问题
  • JSON格式及jackson.jar包的安装与配置
  • 科技赋能:在AIGC的道路上找到自己的领域
  • C# LINQ语法学习
  • XxlJob迁移SnailJob工具来了
  • 【mysql 进阶】1-1 mysql 程序介绍
  • 力扣周赛Q1.出现在屏幕上字符串序列
  • webpack5搭建react脚手架详细步骤