通信技术|从起源到发展 详说HTTP从1到3的演变( 二 )
第三部分:空行,请求头部后面的空行是必须的
即使第四部分的请求数据为空,也必须有空行 。
第四部分:请求数据也叫主体,可以添加任意的其他数据 。
这个例子的请求数据为空 。
响应消息
一般情况下,服务器接收并处理客户端发过来的请求后,会返回一个 HTTP 的响应消息 。
HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文 。
例子
1 < HTTP/1.1 200 OK2 < Accept-Ranges: bytes3 < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform4 < Connection: keep-alive5 < Content-Length: 23816 < Content-Type: text/html7 < Date: Thu, 11 Jun 2020 16:04:33 GMT8 < Etag: "588604c8-94d"9 < Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT10 < Pragma: no-cache11 < Server: bfe/1.0.8.1812 < Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/13 <14 < !DOCTYPE html>15 < !--STATUS OK--><html> <head><meta HTTP-equiv=content-type content=text/html;charset=utf-8><meta HTTP-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer>... </html>16
第一部分:状态行,由 HTTP 协议版本号、状态码、状态消息三部分组成 。
第一行为状态行,(HTTP/1.1)表明 HTTP 版本为 1.1 版本,状态码为 200,状态消息为(ok)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行为消息报头 。
Date:生成响应的日期和时间;Content-Type:指定了 MIME 类型的 HTML(text/html),编码类型是 UTF-8
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息 。
空行后面的 HTML 部分为响应正文 。
状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
- 1xx:指示信息–表示请求已接收,继续处理
- 2xx:成功–表示请求已被成功接收、理解、接受
- 3xx:重定向–要完成请求必须进行更进一步的操作
- 4xx:客户端错误–请求有语法错误或请求无法实现
- 5xx:服务器端错误–服务器未能实现合法的请求
HTTP 的诞生是为了解决信息传递和共享的问题,并没有考虑到互联网高速发展后面临的安全问题 。
一般来说 HTTP 从 TCP 三次握手后,便开始了数据传输 。由于 HTTP 本身以明文形式来传输数据,并不具备任何数据加密、身份校验的机制 。同时下层协议并不对数据安全性、保密性提供保证 。所以在网络传输的过程中,任意节点的第三方都可以随意劫持流量、篡改数据或窃取信息 。
HTTP 无法确保数据的保密性、完整性和真实性,已经不能适应现代互联网应用的安全需求 。
随着 Web 的日益壮大,HTTP 的使用呈巨额增长趋势,对信息安全的需求也愈来愈迫切,SSL(Secure SocketsLayer,安全套接层)应运而生 。
当对于安全需求,首先想到的就是对信息进行加密 。SSL,安全套接层,顾名思义是在 TCP 上提供的安全套接字层 。其位于应用层和传输层之间,应用层数据不再直接传递给传输层而是传递给 SSL 层,SSL 层对从应用层收到的数据进行加密,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证 。HTTPS 便是指 Hyper Text Transfer Protocol over SecureSocket Layer 。
谈到具体实施上,业内通常采用的一般有对称加密和非对称加密 。采用何种方式进行加密?如何判断服务器未被篡改?如何传递加密密钥?带着这样的问题,我们来看看 HTTPS 的工作流程 。
1、客户端发起 HTTPS 请求
这个没什么好说的,就是用户在浏览器里输入一个 HTTPS 网址,然后连接到 server 的 443 端口 。
2、服务端的配置
采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(Let‘s Encrypt 就是个不错的选择,免费的 SSL 证书) 。
这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西 。
3、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等 。
4、客户端解析证书
这部分工作是有客户端的 TLS 来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题 。
如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容 。
推荐阅读
- |潍坊新昌发展区:城市管理有妙招 用好诚信积分制
- 教育信息化|西藏:推动教育信息化发展建设“数字校园”
- 怀进鹏|怀进鹏:汇聚中小企业力量推动数字经济合作发展
- TikTok|海外发展受阻国内拓展新领域字节跳动的全球平衡术
- OLEDOLED面板出货量|2020年全球OLED市场发展现状和供需分析预测 全球OLED面板预期出货4.65亿片
- 可再生能源可再生能源发电|2020年全球可再生能源发展趋势投资前景 全球可再生能源发电规模放缓至6%
- 通信技术|印度首富宣布成功研发5G技术:献给莫迪“自力更生的印度”计划
- 农业|我国首次对乡村产业发展做出全面规划乡村产业,等你来
- 通信技术|国家统计局:上半年全国光缆产量1.32亿芯千米
- 聚乙烯塑料购物袋|2020年聚乙烯市场发展现状和前景 中国明年禁用不可降解塑料购物袋