HTTP协议基础及发展历史
时间:2022-07-23
本文章向大家介绍HTTP协议基础及发展历史,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
经典五层模型介绍
第三层
- 物理层 定义物理设备如何传输数据
- 数据链路层 在通信的实体间建立数据链路连接
- 网络层 数据在节点之间传输创建逻辑链路
传输层
向用户提供可靠的端到端(End-to-End)服务
传输层向高层屏蔽了下层数据通信的细节
应用层
为应用软件提供了很多服务,构建与TCP协议之上。屏蔽了网络传输相关细节
HTTP协议的发展历史
HTTP/0.9
- 只有一个命令GET
- 没有HEADER等描述数据的信息
- 服务器发送完毕,就关闭TCP连接
HTTP/1.0
- 增加了很多命令
- 增加status code和header
- 多字符集支持、多部分发送、权限、缓存等
HTTP/1.1
- 持久连接
- pipeline
- 增加了host和其他一些命令
HTTP2
- 所有数据以二进制传输
- 同一个连接里面发送多个请求不在需要按照顺序来
- 头信息压缩以及推送提高效率的功能
三次握手
过程:张三招手–李四点头微笑–李四招手–张三点头微笑 。其中李四连续进行了2个动作,先是点头微笑(回复对方),然后再次招手(寻求确认),实际上可以将这两个动作合一,招手的同时点头和微笑(syn+ack)。于是四个动作就简化成了三个动作,张三招手–李四点头微笑并招手–张三点头微笑。这就是三次握手的本质,中间的一次动作是两个动作的合并。
图的解释:
-
client
端发送syn
字段,请求连接 -
server
端回复ack
、syn
字段字段确定与之连接 -
client
接到确认后进入established
已建立状态,并发送ack
字段确认对方的连接
URI、URL、URN
URI
Uniform Resource Identifier :统一资源标识符
用来唯一标识互联网上的信息资源,包括URL和URN
URL
Uniform Resource Locator:统一资源定位器
http://user:pass@host.com:80/path?query=string#hash
,此类格式的都叫URL,比如ftp协议
URN
永久统一资源定位符,资源移动之后还能被找到。但目前还没有非常成熟的使用方案
HTTP报文格式
HTTP方法
用来定义对于资源的操作,常用的操作有GET、POST等。
HTTP CODE
定义服务器对请求的处理结果,各个区间的CODE有各自的语义。好的HTTP服务可以通过CODE判断结果。
使用nodejs实现一个最简单的服务器
const http = require("http");
http
.createServer(function (req, res) {
console.log("request come", req.url);
res.end("123");
})
.listen(8888);
- MySQL主从不一致的修复过程(r10笔记第96天)
- ML中相似性度量和距离的计算&Python实现
- Oracle中的ROWID实现(r10笔记第95天)
- 100个Numpy练习【3】
- 100个Numpy练习【4】
- Golang语言中Path包用法
- 100个Numpy练习【5】
- Golang中container/list包中的坑
- 关于Golang语言数组索引的有趣现象
- 使用SQL来分析数据库参数(二)(r10笔记第82天)
- Golang不定参数
- [go语言]利用缓冲信道来实现网游帐号验证消息的分发和等待
- 转--Golang语言版 ssh口令破解工具
- cubieboard(树莓派)安装Ubuntu+Apache+PHP+Mysql
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 你真的了解MySQL 8.0 数据字典吗?
- 《调教命令行09》磁盘很廉价,放小电影最合适了
- 既保护隐私又快速训练,Facebook开源Opacus库,利用差分隐私训练PyTorch模型
- 为什么Java中1000==1000为false而100==100为true?
- Java自动化测试 (元素定位 23)
- Java自动化测试(webdriver常用API 24)
- Java自动化测试(特殊元素处理 25)
- 那些Vue开发遇到的坑---响应式系统
- 基于Ansible和Devops的一键测试环境部署实践
- STM32硬核DIY机械键盘|蓝牙USB双模|灯控
- R语言隐马尔可夫模型HMM识别不断变化的股票市场条件
- 看完这篇并发后,又能扯皮了?
- Twitter美国航空公司情绪数据集的监督或半监督ULMFit模型
- 一文帮你理解整个 SRE 运维体系!
- 拆解式解读如何用飞桨复现胶囊神经网络(Capsule Network)