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协议基本工作流程,简单来说就是"请求-应答"或者是"一发一收"的模式。实际上底层的传输工作是由TCP/IP协议负责完成的。

? ? ? ? 我们可以理解HTTP协议的核心就是它所传输的报文内容。HTTP协议在规范文档中详细的定义了报文的格式,规定了组成部分,解析规则,还有处理策略,从而保证了在TCP/IP层之上实现更加灵活丰富的功能,如连接控制,缓存管理,数据编码了,内容协商等等。

二 报文的结构概述

? ? ? ? 常见的报文有TCP/UDP的报文,就TCP报文为例,它在实际传输数据之前是需要附加一个20字节的头部数据,存储TCP协议必须的额外信息,这些信息包括发送方的端口号,接收方的端口号,包序号,标志位等等。

? ? ? ? 因为这个附加的TCP报文头,数据包才能够正确传输,当报文被传输到目的地之后会将头部去掉并将真正的数据发给接收方。

? ? ? ? ?HTTP协议同TCP/UDP协议是类似的,同样也需要在实际传输的数据前附加一些头数据,不同的是,它是一个"纯文本"的协议,头数据是通过ASCII码的文本形式,可以很容易的用肉眼阅读,而无需借助程序解析即可阅读。

三 HTTP协议请求报文与响应报文的结构

? ? ? ? HTTP协议的请求报文和响应报文的结构基本相同,都是由三部分组成:

  1. 起始行(start line):描述请求或响应的基本信息;
  2. 头部字段集合(header):使用key-value形式更加详细地说明报文;
  3. 消息正文(entity):实际传输的数据,它不一定是纯白文本,可以是图片,视频等二进制数据。

????????1和2经常别合称作“请求头”或者“响应头”即“header”,被称为“实体”的消息正文也就是我们常说的消息体“body”。

? ? ? ? HTTP协议规定报文必须要有header,同时header之后必须要有一个“空行”也就是"CRLF",十六进制的"OD0A"。而body并不是必须的。

? ? ? ? 一个完整的HTTP报文请求如下,header同body之间存在一个“空行”。

?????????一个完整的请求报文示例:

?如图:第一行“GET / HTTP/1.1”就是请求行,而后面的“Host”“Connection”等等都属于 header,报文的最后是一个空白行结束,而该报文是没有 body的。

四 HTTP协议的请求行(起始行)

? ? ? ? HTTP报文中的起始行,即请求行(request line),它简要的描述了客户端想要如何操作服务器端的资源。

? ? ? ? 请求头的组成:

  1. 请求方法:通过类似于GET/POST等动词来描述对资源的操作;
  2. 请求目标:一般是一个URI,标记了请求方法所要操作的资源;
  3. 版本号:该版本号是用来表示报文所使用的HTTP协议版本。

?如图所示:三部分通常使用空格(space)来分隔,最后要用 CRLF 换行表示结束。

? ? ? ? 请求行示例:

GET / HTTP/1.1

????????在这个请求行里,“GET”是请求方法,“/”是请求目标,“HTTP/1.1”是版本号,把这三部分连起来,意思就是“服务器你好,我想获取网站根目录下的默认文件,我用的协议版本号是 1.1,请不要用 1.0 或者 2.0 回复我。”

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:49:47  更:2021-08-31 15:49:51 
 
开发: 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年11日历 -2024/11/25 22:43:16-

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