Skip to content

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代码进行渲染。

扩展阅读