IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【HTTP协议】简单的HTTP协议 -> 正文阅读

[网络协议]【HTTP协议】简单的HTTP协议

1. HTTP协议用于客户端和服务器端之间的通信

  • 客户端:请求访问文本或图像等资源的一端
  • 服务端:提供资源响应的一端

在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。

两台计算机作为客户端和服务端的的角色可能会互换。

HTTP协议能够明确区分哪端是客户端,哪端是服务端。

2. 通过请求和响应的交换达成通信

  • HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
GET /index.htm HTTP/1.1
Host: hackr.jp
  • G E T GET GET表示请求访问服务器的类型,称为 m e t h o d method method
  • / i n d e x . h t m /index.htm /index.htm指明了请求访问的资源对象,也叫做请求 U R I ( r e q u e s t ? U R I ) URI(request-URI) URI(request?URI)
  • H T T P / 1.1 HTTP/1.1 HTTP/1.1,即 H T T P HTTP HTTP的版本号,用来提示客户端使用的 H T T P HTTP HTTP协议功能

综合来看,访求访问某台 H T T P HTTP HTTP服务器上的 / i n d e x . h t m /index.htm /index.htm页面资源

HTTP/1.1 200 OK
Date: Fri, 31 Dec 2021 10:10:10 GMT
Content-Length: 362
Content-Type: text/html
<html>
...
  • 200 200 200 O K OK OK,状态码和 r e a s o n ? p h r a s e reason-phrase reason?phrase
  • D a t e Date Date 创建响应的日期时间,是 h e a d e r header header f i e l d field field内的一个属性

3. HTTP是不保存状态(stateless)的协议

H T T P HTTP HTTP协议自身不具备保存之前发送过的请求或响应的功能

  • 为了更快地处理大量事务
  • 确保协议的可伸缩性

4. 请求URL定位资源

H T T P HTTP HTTP协议使用 U R L URL URL定位互联网上的资源。因为 U R L URL URL的特定功能,在互联网上任意位置的资源都能访问到。

  • U R I URI URI为完整的请求 U R I URI URI
GET http://hackr.jp/index.htm HTTP/1.1
  • 在首部字段 H o s t Host Host中写明网络域名或 I P IP IP地址
GET /index.htm HTTP/1.1
Host: hackr.jp
  • 查询 H T T P HTTP HTTP服务器端支持的 H T T P HTTP HTTP方法种类
OPTIONS * HTTP/1.1

5. 告知服务器意图的HTTP方法

  • G E T GET GET 获取资源
GET /index.html HTTP/1.1
Host: www.hackr.jp

返回 i n d e x . h t m l index.html index.html的页面资源

GET /index.html HTTP/1.1
Host: www.hackr.jp
If-Modified-Since: Fri, 31 Dec 2021 12:00:00 GMT
  • P O S T POST POST 传输实体主体
POST /submit.cgi HTTP/1.1
Host: www.hackr.jp
Content-Length: 1560

返回submit.cgi接受数据的处理结果

  • P U T PUT PUT 传输文件
PUT /example.html HTTP/1.1
Host: www.hackr.jp
Content-Type: text/html
Content-Length: 1560

返回状态码204 No Content(请求执行成功,但无数据返回)

  • H E A D HEAD HEAD 获得报文首部
HEAD /index.html HTTP/1.1
Host: www.hackr.jp

返回index.html有关的响应首部

  • D E L E T E DELETE DELETE 删除文件
DELETE /example.html HTTP/1.1
Host: www.hackr.jp

返回状态码204 No Content 该html已从该服务器上删除

  • O P T I O N S OPTIONS OPTIONS 询问支持的方法
OPTIONS * HTTP/1.1
Host: www.hackr.jp
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
  • T R A C E TRACE TRACE 追踪路径

TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法

TRACE / HTTP/1.1
Host: hackr.jp
Max-Forwards: 2
HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 1024

TRACE / HTTP/1.1
Host: hackr.jp
Max-Forwards: 2
  • C O N N E C T CONNECT CONNECT 要求用隧道协议连接代理

使用SSL和TLS协议把通信内容加密后经网络隧道传输

CONNECT proxy.hackr.jp:8080 HTTP/1.1
Host: proxy.hackr.jp
HTTP/1.1 200 OK

6. 使用方法下达命令

方法的作用在于,可以指定请求的资源按期望产生某种行为。方法名用大写字母

7. 持久连接节省通信量

7.1 持久连接

特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态

7.2 管线化

持久连接使得多数请求以管线化(pipelining)方式发送成为可能。这样就能够做到同时并行发送多个请求。

8. 使用Cookie的状态管理

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文内的一个叫作Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

  • 请求报文(没有Cookie信息的状态)
GET /reader/ HTTP/1.1
Host: hackr.jp
  • 响应报文(服务器端生成Cookie信息)
HTTP/1.1 200 OK
Date: Fri, 12 Dec 2021 11:30:00 GMT
Server: Apache
<Set-Cookie: ...> 
Content-Type: text/plain; charset=UTF-8
  • 请求报文(自动发送保存着的Cookie信息)
GET /image/ HTTP/1.1
Host: hackr.jp
Cookie: sid=1342077140226724

参考资料:《图解HTTP》

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:20:18  更:2022-01-01 14:21:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/6 12:51:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码