计算机网络之Http01:HTTP的定义|报文格式|响应码

  1. 从应用层看微博应用
    在cs架构中,虽然有什么springboot等,从应用层来看,本质上都是http的请求-响应,请求-响应…

  2. 什么是http
    超文本传输协议
    协议: 两个以上的参与者之间行为的约定和规范(http中是两点之间,cs 或ss)
    传输: 双向协议,以请求-应答形式呈现,允许中间接力,例如代理
    超文本: 除文本外,图片 音频 视频 超链接的混合体
    计算机世界中两点之间双向传输超文本的行为约定和规范
    http是无状态的,即不会记忆之前的请求和响应,例如登录之后,再次请求如果没有cookie是不会记住上次的登录请求的。

  3. http常见的状态码
    状态码是服务端向客户端回应的
    1: 提示信息,接收的请求正在处理
    101: 转换协议,配合upgrate字段使用
    2:成功
    200: 成功
    204:成功,但是没有报文主体 例如 put delete
    206:响应的body不是资源的全部,而是请求报文 content-range指定的内容,与range选项配合 8

    3: 重定向 与location字段使用
    301:永久重定向
    302:临时重定向
    303:重定向,使用GET请求
    304:服务端资源未改变,可直接使用客户端未过期的缓存 (比对摘要相同,缓存可继续使用)
    4:客户端错误 (请求报文)
    400:客户端请求报文有误(笼统)
    401:需要认证 告诉客户端,该页面需要认证,请携带认证信息 authoration 与www-authenticate配合
    403:请求资源的访问被服务端拒绝(例如权限)
    404:无法找到请求的资源
    412:先验条件失败 与if-xxx配合使用
    417: 期望失败 配合except字段使用

    5:服务端错误
    500: 服务器执行请求时错误
    501:客户端请求的功能暂不支持 “即将开业,敬请期待”
    502:服务器作为网管或者代理,服务器正常,访问后端服务器发生错误
    503: 当前服务器忙,稍后重试 一般与retry-after配合使用
    504:网关超时,例如代理服务器在if-only-cache下找不到本地缓存

  4. 客户端请求方法
    (1)Get: 获取资源
    主要目的是获取服务器的资源(响应内容)
    (2)Post:传输实体主体
    (3)Put:传输文件 –>204
    (4)Head: 只获取报文的首部 一般用于确认URI的有效性等
    (5)DELETE:–>删除文件 204
    (6)OPTIONS: 询问针对请求URI支持的方法
    (7)TRACE: 追踪报文
    4.HTTP常连接
    不是tcp长连接,早期http,每发送一次http请求,就会连接,断开tcp请求一次。(这次http请求可以有多个数据包
    优点:
    (1)减少重复建立断开tcp连接的网络开销
    (2)减轻服务端负载
    我的理解是(1)重复建立连接 (2)松开连接会有time_wait时间消耗内存和端口资源
    (3)节省的时间处理请求,使网页变快

  5. 管线化
    不需要等待上一个http响应就可以发送下一个http请求
    在这里插入图片描述

  6. 使用cookie进行状态管理
    第一次请求: 没有cookie
    第一次响应: set-cookie字段
    第二次请求:Cookie字段

  7. http报文的格式

  8. 如何提升传输速率
    (1)对报文进行编码
    报文主体----编码---->实体主体---->传输
    (1)压缩 gzip compress(UNIX 标准压缩)
    (2)分块传输编码
    按照功能等分类,让浏览器逐步渲染,而不是等到响应完全接收解码后再渲染

  9. 发送多种类型的数据
    Mutipart: 多部分对象集合
    contentType:
    mutipart/form-data 表单
    mutipart/byteRange 只要部分内容 -->206
    在这里插入图片描述

在这里插入图片描述
如果可以传部分,返回206,如果不能,返回200,传输所有

  1. 代理服务器
    代理服务器分为缓存代理和服务代理
    在这里插入图片描述
    在这里插入图片描述
    浏览器网络部分只是http报文

  2. 通用首部字段
    见下文

  3. cache-control 对缓存操作进行控制
    在这里插入图片描述
    在这里插入图片描述
    第一次请求时,查看有没有缓存,没有,向服务器发送请求,服务器相应数据,并带有一个服务器估计的过期时间和唯一标识(资源摘要) Etag:XXXX
    第二次请求,查看有没有缓存,有,查看是否过期,如果没有过期,直接使用该缓存,如果已过期,发送请求报文 并带有if-None-Match:原先的Etag值,服务端接收后,会使用最新Etag与if-none-match值进行比较,如果不同,返回最新资源,如果相同,返回304

cache-control: 缓存指令
缓存指令分为缓存请求指令和缓存响应指令
(1) none-cache:1,2
请求:告诉缓存服务器,我不要缓存过的,给我向服务器请求一份最新的
响应:服务器告诉缓存服务器,这个资源不能缓存
(2)no-store:1,2暗指请求或响应中包含机密信息
不能缓存
(3)s-maxage =xxx 2
缓存的期限,适用于代理服务器
(4)maxage=xxx 1,2
客户端发送的请求带有该字段时,代理会将该值与缓存资源已缓存的时间与该值比较,如果缓存时间<该值,缓存有效,直接返回缓存

当该字段在相应中时,代表该缓存的最长有效时间
与expire字段有一个竞争关系
(5)min-fresh =xxx 1
再过xxx时间,缓存过期吗,如果不过期,返回缓存,如果过期,向服务端请求
(6)max-stale=xxx 1
即使过期了XXX,我还是可以照常接收
(7)only-if-cache 1
我只要你本地缓存的响应,如果没有,返回504
(8) must-revalidate 2
代理会向源服务器再次验证返回的响应是否仍然有效
(9) proxy-revalidare 2
???再次确认有消息
(10)no-transform 2
无论是请求还是响应,代理不能更改实体主体的媒体类型,例如 压缩
12. connection 控制不再转发给首部的字段 和 管理持久的连接
(1)connection:代理不再转发的首部字段
(2)connection:close 或 keepalive
13. Date 创建http报文的日期和时间
14. Pragra :no-cache 规定,为兼容http1.1而设定
15. Trailer 报文主体后有很重要的内容
在这里插入图片描述
16. Transfer-Encoding 规定传输报文主体时采用的编码方式
17. Upgrarte
当客户端法送时,询问是否可以用更高版本的协议进行通信。服务端回复,表示可以使用更高版本的协议。
回复报文状态码 101 转换协议
18. via 追踪客户端与服务器之间的请求和响应报文传输路径
在这里插入图片描述
19. 请求首部字段
(1)accept
告诉服务器,我能接收什么类型的响应进而其优先级
在这里插入图片描述
在这里插入图片描述
(2)Accept-charset
我支持的字符集(例如utf-8,定义字符与二进制之间的映射)以及优先顺序,收到响应后,客户端使用特定字符集解码方式进行解码
(3)Accept-Encoding
告诉服务器我支持的报文主体编码方式,例如gzip
(4)Accept-Language
客户端支持的语言
(5)Authorization
携带认证信息,如果不懈怠,服务器返回401

在这里插入图片描述
(6)Expect
客户端期望的行为,当服务端不能理解其期望时,会返回 417 期望失败
(7)Form
我的电子邮箱是xxx,有事联系我
(8)Host
服务器的主机名(域名)和端口,存在的意义是当一台服务器(一个ip)虚拟出多台(多个域名),host字段就有意义了
(9)IF-xxxx
只有服务器满足if后面的条件后才会执行请求,否则返回412 匹配失败
在这里插入图片描述
(10)max-forward
http报文最大的转发次数,如果此值为0,直接返回响应
作用:当代理服务器出现某种错误,不能继续转发,是不会响应任何错误信息的,使用该选项,判断在哪出了故障
(11)proxy-authorization
代理服务器需要验证时,使用该字段
(12)range
我只要请求资源的range范围内的响应,如果成功响应 206,否则200
(13)refer
告诉服务器这个http请求是在哪个ur中(a标签在哪个页面中),直接从浏览器输入不会有该字段,处于安全考虑页可以不加该字段
(14)TE
传输编码方式 ????
(15)user-agent
客户端信息和代理信息
19. 相应的首部字段
(1)accept-range:byte或none
告诉客户端服务器是否能处理范围请求
(2)age
服务器:多久前建立了这个响应
缓存服务器:多久前缓存了这个响应
在这里插入图片描述
(3)ETag
实体标签(摘要) 服务器向客户端(或缓存服务器)返回该响应的唯一标识
(4)Location
重定向,与3xx响应配合使用
(5)proxy-authenticate
代理服务器需要认证时,代理服务器所需的认证信息会由该字段返回给客户端
(6)Retry-after:xxx
xxx后再来访问,一般与503配合使用
(7)vary
???缓存控制
(8)www-authenticate
告诉客户端服务器认证的相关信息,与 401配合使用
(9)content-encoding
实体主体的编码(压缩)方式
(10)content-language
实体主体的语言
(11)content-length
不编码时实体主体的长度,单位字节
(12)content-location
报文主体这个资源的uri地址,可能与请求uri不同
(13)content-md5
实体主体的MD5值,客户端收到报文后,会同样对实体主体进行md5计算,验证实体主体传输过程是否完整,不能保证是否被篡改,因为可以篡改实体主体同时篡改content-MD5值
(14)content-range
请求资源的该范围被响应
(15) content-type: 实体类型;字符集
在这里插入图片描述
回应Accept-charset与accept请求头字段
(16)expires
该资源的过期时间
HTTP 1.1 优先处理max-age
(17)last-modified
该资源最后一次被修改的时间

  1. cookie相关字段

请求: cookie=xxx;xxx;xxx
响应时
setcookie:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈师亦友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值