网络篇(一) HTTP&HTTP2.0&HTTPS

目录

HTTP

HTTP 简介

HTTP消息结构

请求报文

响应报文

头部信息

头部字段整理

请求方法

状态码

form表单中enctype数据类型的使用(待完善)

HTTP 2.0

二进制传输

多路复用

Header 压缩

服务端 Push

多版本HTTP比较

HTTPS

密码学基础

对称加密

非对称加密

HTTPS通信过程

参考资料:《计算机网络 自顶向下方法第6版》

HTTP

HTTP 简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。


HTTP 工作原理

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口

HTTP特点:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。

以下图表展示了HTTP协议通信流程:

HTTP消息结构

请求报文

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、首部行(header line)(请求头部啥的也行)、空行实体主体(entity body)四个部分组成,下图给出了请求报文的一般格式。(配图来源《计算机网络自顶向下方法 第6版》)

 

 

 

  • 请求行
    • 请求类型
    • 要访问的资源
    • HTTP协议版本号
  • 请求头(首部行)
    • 用来说明服务器要使用的附加信息(一些键值对)
    • 例如:User-Agent、 Accept、Content-Type、Connection
  • 空行
    • 分割请求头与请求体
  • 请求体(实体主体)
    • 可以添加任意的其他数据

响应报文

HTTP响应也由四个部分组成,分别是:状态行(status line)首部行(header line 也有叫消息报头)空行实体主体(entity body 也有叫响应正文)

可以对比Wireshark捕获的来看一下

  • 状态行
    • HTTP协议版本号
    • 状态码
    • 状态消息
  • 消息报头
    • 说明客户端要使用的一些附加信息
    • 如:Content-Type、charset、响应的时间
  • 响应正文
    • 返回给客户端的文本信息

头部信息(首部行的分类)

HTTP的头域包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。

通用头域:请求和响应消息都支持的头域,可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能,如Date头部。

请求头部头域是请求报文特有的,它们为服务器提供了一些额外信息,比如客户端希望接收什么类型的数据,如Accept头部。

响应头域用于服务器为客户端提供信息,比如,客服端在与哪种类型的服务器进行交互,如Server头部。

实体头部:请求消息和响应消息都可包含实体信息,比如,可以用实体头部来说明实体主体部分的数据类型,如Content-Type头部。

常见头部

  • Accept
    • 在请求中使用Accept可申明想要的数据格式
  • Accept-Encoding
    • 告诉服务端使用什么的方式来进行压缩
    • 例如:gzip、deflate、br
  • Accept-Language
    • 描述语言信息
  • User-Agent
    • 用来描述客户端浏览器相关信息
    • 可以用来区分PC端页面和移动端页面响应头
  • Content-Type
    • 对应Accept,从请求中的Accept支持的数据格式中选一种来返回
  • Content-Encoding
    • 对应 Accept-Encoding,指服务端到底使用的是那种压缩方式
  • Content-Language
    • 对应Accept-Language

头部字段整理

通用字段

作用

Cache-Control

控制缓存的行为

Connection

浏览器想要优先使用的连接类型,比如 keep-alive

https://blog.csdn.net/xiaoduanayu/article/details/78386508

Date

创建报文时间

Pragma

报文指令

Via

代理服务器相关信息

Transfer-Encoding

传输编码方式

Upgrade

要求客户端升级协议

Warning

在内容中可能存在错误

请求字段

作用

Accept

客户端希望接收的数据类型

Accept-Charset

能正确接收/希望接收的字符集

Accept-Encoding

能正确接收的编码格式列表(压缩即编码的一种)

Accept-Language

能正确接收的语言列表

Expect

期待服务端的指定行为

From

请求方邮箱地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值