Appearance
http协议
元信息
- 目标:从 VNC"协议与实现分离"的经验迁移到 HTTP——理解请求-响应、无状态两大基本特点,建立"HTTP 是前后端的分界线"的意识;会用命令行 HTTP 客户端做协议体验
- 关键概念:HTTP协议、请求-响应模式、无状态、明文传输、应用层协议、客户端-服务端模型、Cookie
- 关联阶段:cp1
- 常见误区:以为服务器能"记住"上一次请求(无状态,靠 Cookie 机制补状态);以为 HTTP 与 tightvnc 等软件是一类东西(前者是协议,后者是某协议的实现);以为只有浏览器才能发 HTTP 请求(任何 HTTP 客户端都可以,浏览器只是多了渲染)
VNC协议
回顾之前的VNC软件,有形形色的客户端和服务端,比如
- 客户端:tightvnc、tigervnc、realvnc、novnc(web)、甚至windows remote desktop也支持
- 服务端:tightvnc、tigervnc、realvnc、linux内置的vnc server等
并且这些客户端和服务端之间可以互相混用,并不需要原生配对,这里的原因是:
- VNC(Virtual Network Computing)是一种远程桌面协议,它允许您通过网络远程访问和控制其他计算机的图形桌面,定义了客户机和服务器之间的数据格式和交互规范。
- tightvnc 等软件是支持VNC协议的一种实现,只要遵守协议,则不必在意另一方的具体实现
HTTP 协议
超文本传输协议(HTTP)则是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。
HTTP的基本特点
- 基于请求-响应的模式
HTTP协议规定,请求从客户端发出,服务器端返回响应。即先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。
- 无状态性
HTTP 协议不对之前发送过的请求或响应进行保存,即每次请求都是相互独立的。为了解决这个问题,于是引入 Cookie 的机制来保持状态。
- 明文传输:易于解析和处理,缺点则是数据易泄露,可采用https进行弥补
- 不会对通信方进行确认:区别于tcp协议的三次握手。简单,但不够可靠,需要由用户软件自行保证可靠性。
- 默认端口:80
体验
打开 powershell ,键入如下
shell
Invoke-WebRequest -Uri "https://httpbin.org"
Invoke-WebRequest -Uri "https://cataas.com/cat/orange,cute"
Invoke-WebRequest -Uri "https://echo.free.beeceptor.com/sample-request?author=beeceptor"上述代码,发起了一个http请求,并由http echo server 返回响应。与chrome等浏览器的区别在于,它没有对返回的html代码进行渲染。
- Invoke-WebRequest 是powershell 提供的一个命令行http客户端,类似于curl
- https://httpbin.org/ 是一个提供学习和测试http协议各种特性的公共服务站点
- https://cataas.com/cat/orange,cute 返回一只可爱橘猫
- https://beeceptor.com/resources/http-echo/ 是http echo server ,可将客户端的请求数据返回
- 常见http echo 比较 https://json-server.dev/http-echo-servers-comparision/
扩展阅读
- 介绍 https://www.cnblogs.com/dhui/p/14653792.html
- 详细手册 https://developer.mozilla.org/zh-CN/docs/Web/HTTP
- http请求的动词分类 https://mp.weixin.qq.com/s/cSCKPKhacmtNJBtRp3WWLg
- http staus code 的图形化表达
- https 介绍 http://www.imperialviolet.org/2012/07/19/hope9talk.html
- http 各版本的简单对比 https://www.netmeister.org/blog/http-123.html
- https介绍 https://portswigger.net/daily-swig/http-3-everything-you-need-to-know-about-the-next-generation-web-protocol
- 高性能轻量级跨平台 QUIC 协议库 https://www.oschina.net/p/tquic