目录

  • HTTP协议
    • 通信
    • 不保存状态
  • URI
  • HTTP方法
  • 使用方法下达命令
  • 持久连接节省通信流量
  • 使用cookie进行状态管理

HTTP协议

通信

用于客户端和服务器之间的通信
请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一 端称为服务器端

有时候,两台计算机作为客户端和服务器端的角色有可能会互换。但就仅从一条通信路线来说,服务器端和客户端的角色是确定的,HTTP 协议能够明确区分哪端是客户端,哪端是服务器端。

肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

  • GET表示请求访问服务器的类型,称为方法
  • 字符串 /index.htm 指明了请求访问的资源对象,也叫做请求 URI
  • HTTP/1.1,即 HTTP 的版本号,用来提示客户端使用的 HTTP 协议功能
  • 200 OK 表示请求的处理结果的状态码和原因 短语
  • Date 显示了创建响应的日期时间,是首部字段内的一个属性
  • 接着以一空行分隔,之后的内容称为资源实体的主体

这段请求内容的意思是:请求访问某台 HTTP 服务器上的 /index.htm 页面资源。


请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。


响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

不保存状态

HTTP 是一种不保存状态,即无状态协议
HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理

  • 使用 HTTP 协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设 计成如此简单的

URI

使用 URI 定位互联网上的资源,在互联网上任意位置的资源都能访问到


如果不是访问特定资源而是对服务器本身发起请求,可以 用一个 * 来代替请求 URI。下面这个例子是查询 HTTP 服务器端支持 的 HTTP 方法种类。

HTTP方法

  • GET :获取资源
    GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器 端解析后返回响应内容。

如果请求的资源是文本,那就保持原样返回;如果是像 CGI(Common Gateway Interface,通用网关接 口)那样的程序,则返回经过执行后的输出结果。

  • POST:传输实体主体
    虽说 POST 的功能与 GET 很相似,但 POST 的主要目的并不是获取响应的主体内容。

  • PUT:传输文件
    就像 FTP 协议的文件上传一样,要求在请 求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。

鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以 上传文件 , 存在安全性问题,因此一般的 Web 网站不使用该方法

  • HEAD:获得报文首部
    HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等

  • DELETE:删除文件
    DELETE 方法按请求 URI 删除指定的资源(与PUT相反)

HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机 制,所以一般的 Web 网站也不使用 DELETE 方法

  • OPTIONS:询问支持的方法


  • TRACE:追踪路径
    让 Web 服务器端将之前的请求通信环回给客户端的方法

发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器端就将该数字减 1,当数值刚好减到 0 时,就停止继续传输,最后接收到请求的服务器端则返回状态码 200 OK 的响应
客户端通过 TRACE 方法可以查询发送出去的请求是怎样被加工修改 / 篡改的。这是因为,请求想要连接到源目标服务器可能会通过代理 中转,TRACE 方法就是用来确认连接过程中发生的一系列操作。
TRACE 方法本来就不怎么常用,再加上它容易引发 XST(Cross-Site Tracing,跨站追踪)攻击,通常就更不会用到了。

  • CONNECT:要求用隧道协议连接代理
    CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。
    主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全) 协议把通信内容加 密后经网络隧道传输。

使用方法下达命令

向请求 URI 指定的资源发送请求报文时,采用称为方法的命令。

持久连接节省通信流量

  • 旧版
    下面是例子

  • 新版(持久连接)
    持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端 没有明确提出断开连接,则保持 TCP 连接状态。

减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了

  • 管线化
    从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。

使用cookie进行状态管理

  • 引入cookie原因:
    假设要求登录认证的 Web 页面本身无法进行状态的管理(不记录已 登录的状态),那么每次跳转新页面不是要再次登录,就是要在每次 请求报文中附加参数来管理登录状态。

  • 无状态协议优点:
    由于不必保存状态,自然可减少服务器的 CPU 及内存资源的消耗。从另一侧面来说,也正是因为 HTTP 协议本身是非常简单的,所以才会被应用在各种场景里。

  • cookie引入:
    Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
    Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。
    当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
    服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。



HTTP学习笔记(适合初学)2相关推荐

  1. 《每天一点学习笔记》-初学python3~3

    <每天一点学习笔记>-初学python3 这几天乱遭事有点多,没来得及写,就不写第几天了,综合整理一下,简单记录这几天学的内容吧.简单来说我看了一些入门的基础知识,有的是视频,也有别人写的 ...

  2. uvm学习笔记----适合新手快速学习

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofH8i8OK-1635320932444)(C:\Users\lenovo\AppData\Roaming\Typor ...

  3. C# 学习笔记入门篇(上)

    文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...

  4. Python 学习笔记——入门

    文章目录 〇.Python 是什么 一.推荐的教程 二.这篇学习笔记适合什么人 三.环境 1. 操作系统 对于 Windows 对于 Ubuntu 对于其他操作系统 2. Python 对于 Wind ...

  5. TLP-Task01学习笔记

    目录 002 两数相加 思路 Python实现 004 寻找两个正序数组的中位数 思路 代码实现(咕) 其他技巧 005 最长回文子串 思路 Python实现(暴力解法超时) 本篇为Datawhale ...

  6. 初学深度学习笔记(一)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 新手初学深度学习笔记(一) 前言 前言 跨专业初学者,整理一些自己所学到的知识,有问题请各位大佬指出

  7. 超级详细的Python程序设计学习笔记,适合Python二级备考和自学Python的小白(me too)

    超级详细的Python学习笔记,适合Python二级备考和自学Python的小白(me too). 写作不易,喜欢的话点个赞吧

  8. 网络安全学习笔记(适合初学者)

    网络安全学习笔记 一. Ip欺骗(IP spoof)及防范原则 IP[地址]欺骗被用来从事非法活动,破坏网络安全,黑客使用IP欺骗就不会被抓到,还有一些黑客进行Dos攻击的时候,就可以隐藏真实的IP, ...

  9. 适合前端初学者的:学习笔记 + 练手开源项目(持续更新ing)

    1.说明 最近想学习一下Web前端知识,本着理论 + 实践的学习路径,找了一些学习资源和开源项目练一下手. 2.路线规划 关于前端学习路线的一些建议 3.学习资源 菜鸟教程(里面有很多基础的教程和示例 ...

  10. cad把图形切成两部分_转载一位CAD大神的学习笔记, 初学CAD的人可以看看

    学员内部找到的一份CAD学习笔记,每张图虽然没有讲详细绘图步骤,但将审图思路.绘图基本步骤和重点难点给列出来了,我觉得对初学者会有帮助,在此分享一下,前面几张图加上了我的注解. 第一部分 1-1 图 ...

最新文章

  1. Android采用Application总结一下
  2. linux 下挂载光盘
  3. python3 venv 虚拟环境使用
  4. uva 10048 Audiophobia(最小生成树)
  5. 选择题:JAVA的类和对象
  6. Linux/Documentations: Kernel Livepatching
  7. matlab struct 结构体
  8. swift可选隐式可选类型
  9. jq遍历的基础语法之一
  10. python官方手册-python中文手册
  11. 如何快速成长为图形学工程师
  12. 冰点文库 3.2.14
  13. 如何下载安装Python
  14. 前端开发面试问题及答案整理
  15. 测量计算方位角万能公式及VB、VBA源代码
  16. wlh机器人_机器人在制造环节,AGV小车在物流环节
  17. Weblogic服务器证书安装配置 | Weblogic SSL
  18. 计算机高中期末总结作文,高中期末总结:高一期末总结作文
  19. oracle 空值排序,排在最前面或者最后面
  20. html标签可以分为什么标签和什么标签,什么是HTML标签?HTML标签有什么作用?

热门文章

  1. 达梦数据库常用函数——字符串函数
  2. MATLAB~~~描绘散点图函数scatter
  3. 【react】react18的学习(三)--hooks组件
  4. 用Python语言模型和LSTM做一个Drake饶舌歌词生成器!自己蒙了!
  5. Hadoop国内镜像下载地址:极速
  6. IDEA服务器端JQuery框架加载失败--已解决
  7. 北京2017年7月开始 社保最低缴费
  8. 【Java开发】Spring Cloud 01 :微服务前提精要
  9. 【源码阅读技巧一】查看类关系图,接口实现关系图(idea版本)Diagrams关系图
  10. Metaq的一些简单机制