美文网首页网络协议学习
十.网络协议学习笔记 HTTP

十.网络协议学习笔记 HTTP

作者: crazyfox | 来源:发表于2021-07-25 19:23 被阅读0次

HTTP

HTTP Hyper Text Transfer Protocol 超文本传输协议

HTML Hyper Text Markup Language 超文本标记语言

HTTP

0.9 只支持get请求获取文本

1.0版本支持head,post请求,支持请求头,响应头,支持更多数据类型

请求一次建立一次TCP连接

1.1版本

支持PUT,DELETE请求,多个请求可以共用一个连接

2.0版本

报文格式

image.jpeg

ABNF 核心规则

报文格式-整体


HTTP-message = start-line*(header-field CRLF)

CRLF

[message-body]

报文格式-request-line,status-line


request-line = method SP request-target SP HTTP-version CRLF

HTTP-version = HTTP-name "/" DIGIT "." DIGIT

HTTP-name = %x48.54.54.50 ; HTTP

GET /hello/ HTTP/1.1

status-line = HTTP-version SP status-code SP reason-phrase CRLF

status-code = 3DIGIT

reason-phrase = *( HTAB / SP / VCHAR / obs-text )

HTTP/1.1 200

HTTP/1.1 200 OK

URL的编码

URL中出现了一些特殊字符,需要进行编码

在浏览器中输入URL,采用UTF-8编码

Xshell+telnet

安装一个Xshell,使用telnet

image.jpeg image.jpeg

请求方法

◼ GET:常用于读取的操作,请求参数直接拼接在URL的后面(浏览器对URL是有长度限制的)

◼ POST:常用于添加、修改、删除的操作,请求参数可以放到请求体中(没有大小限制)

◼ HEAD:请求得到与GET请求相同的响应,但没有响应体

使用场景举例:在下载一个大文件前,先获取其大小,再决定是否要下载。以此可以节约带宽资源

◼ OPTIONS:用于获取目的资源所支持的通信选项,比如服务器支持的请求方法

OPTIONS * HTTP/1.1

◼ PUT:用于对已存在的资源进行整体覆盖

◼ PATCH:用于对资源进行部分修改(资源不存在,会创建新的资源)

◼ DELETE:用于删除指定的资源

◼ TRACE:请求服务器回显其收到的请求信息,主要用于HTTP请求的测试或诊断

◼ CONNECT:可以开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道(tunnel) 可以用来访问采用了 SSL (HTTPS) 协议的站点

头部字段

◼请求头字段(Request Header Fields) ✓ 有关要获取的资源或客户端本身信息的消息头

◼响应头字段(Response Header Fields) ✓ 有关响应的补充信息,比如服务器本身(名称和版本等)的消息头

◼实体头字段(Entity Header Fields) ✓ 有关实体主体的更多信息,比如主体长度(Content-Length)或其MIME类型

◼通用头字段(General Header Fields) ✓ 同时适用于请求和响应消息,但与消息主体无关的消息头

请求头字段

User-Agent 浏览器身份标示

Host 服务器域名,端口

Date 发送时间

Referer 前一个页面

Content-Type 请求体类型

Content-Length 请求体长度

Accept 能接受的响应内容类型

Accept-Charset 能接受的字符集

Accept-Encoding 能接受的编码方式列表

Accept-Language 能接受的响应内容语言

Range 请求某个实体的一部分

Origin 发起一个针对跨域资源共享的请求

Cookie 服务器发送的

Connection 浏览器想要使用的连接类型

Cache-Control 所有缓存机制都必须遵守的指令

响应头字段

Date

Last-Modified 请求对象最后修改日期

Server 服务器名字

Exoires 指定时间,超过认为响应过期

Content-Type 响应体类型

Content-Length 响应体长度

Content-Encoding 编码类型

Content-Disposition

Accept-Ranges

Content-Range

Access-Control-Allow-Origin

Location

Set-Cookie

Connection

Cache-Control

缓存( )

通常会缓存的情况是:GET请求 + 静态资源(比如HTML、CSS、JS、图片等)
Ctrl + F5:可以强制刷新缓存

缓存 响应头
Pragma:作用类似于Cache-Control,HTTP/1.0的产物
Expires:缓存的过期时间(GMT格式时间),HTTP/1.0的产物
Cache-Control:设置缓存策略
no-storage:不缓存数据到本地
public:允许用户、代理服务器缓存数据到本地
private:只允许用户缓存数据到本地
max-age:缓存的有效时间(多长时间不过期),单位秒
no-cache:每次需要发请求给服务器询问缓存是否有变化,再来决定如何使用缓存
优先级:Pragma > Cache-Control > Expires

缓存 响应头
Last-Modified:资源的最后一次修改时间
ETag:资源的唯一标识(根据文件内容计算出来的摘要值)
优先级:ETag > Last-Modified

缓存 请求头

If-None-Match
如果上一次的响应头中有ETag,就会将ETag的值作为请求头的值
如果服务器发现资源的最新摘要值跟If-None-Match不匹配,就会返回新的资源(200 OK)
否则,就不会返回资源的具体数据(304 Not Modified) ◼ If-Modified-Since
如果上一次的响应头中没有ETag,有Last-Modified,就会将Last-Modified的值作为请求头的值
如果服务器发现资源的最后一次修改时间晚于If-Modified-Since,就会返回新的资源(200 OK)
否则,就不会返回资源的具体数据(304 Not Modified)

缓存
Last-Modified的缺陷
只能精确到秒级别,如果资源在1秒内被修改了,客户端将无法获取最新的资源数据
如果某些资源被修改了(最后一次修改时间发生了变化),但是内容并没有任何变化
会导致相同数据重复传输,没有使用到缓存
ETag可以办到
只要资源的内容没有变化,就不会重复传输资源数据
只要资源的内容发生了变化,就会返回最新的资源数据给客户端


20180207100306608.png

相关文章

  • 十.网络协议学习笔记 HTTP

    HTTP HTTP Hyper Text Transfer Protocol 超文本传输协议 HTML Hyper...

  • HTTP网络协议(学习笔记一)

    最近在学习/复习软件工程师必备的技能------ HTTP网络协议,一共是22课,计划写4份学习笔记。(内容会自我...

  • HTTP网络协议(学习笔记六)

    HTTP网络协议(六) 19~20课 19.HTTPS 安全这种东西是相对的,尽可能提高安全性 HTTP(Hype...

  • HTTP网络协议(学习笔记三)

    HTTP网络协议(三) 8~12课 TCP的几个要点 可靠传输 流量控制 拥塞控制 连接管理-建立连接-释放连接 ...

  • HTTP网络协议(学习笔记五)

    HTTP网络协议(五) 15~18课 15.状态码_form提交 状态码(Status Code) -状态码指示H...

  • HTTP协议笔记

    HTTP协议笔记 标签(空格分隔): HTTP,TCP/IP [TOC] 1.网络协议基础知识 TCP/IP协议族...

  • HTTP学习笔记

    HTTP学习笔记 1. web与网络基础 1.1使用HTTP协议访问Web 客户端(client, 浏览器brow...

  • 【网络协议笔记】HTTP 协议整理

    文前说明作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种...

  • Http网络协议包

    1.网络协议包: 2.常见网络协议: 3.Http网络协议包: 4.Http请求协议包与Http响应协议包介绍: ...

  • HTTP协议学习笔记

    一、HTTP简介 HTTP超文本传输协议是用于从万维网服务器传输超文本到本地浏览器的传送协议,HTTP基于TCP/...

网友评论

    本文标题:十.网络协议学习笔记 HTTP

    本文链接:https://www.haomeiwen.com/subject/sqeimltx.html