浅谈http的基本概述
来源:互联网 发布:曼彻斯特大学 知乎 编辑:程序博客网 时间:2024/05/01 20:24
浅谈http
1. 博客编写背景:
网络传输为了更具体的层次划分所以分为了osi七层的网络模型它是一种逻辑上的划分也是一种规范,而传输层属于七层模型中的最上层同时也是我及我周围的程序猿们接触最多一个层级,而应用层的消息传输则遵循http协议全名超文本传输协议,也是我们接触最多的一个协议,所以今天就我的理解浅谈一下http有不对地方还请指正,以下知识点更多遵循了RFC文档
2. http版本及常见最重要的一个不同点:
- http版本目前分为了http1.0 --- rfc 1945 和 http1.1 rfc 2068 如果有同学想具体研究可以查阅此文档 在介绍不同点之前先明白一个名词 RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器,并返回所经历的时间,往往在http接口性能测试中相应时间是我们其中一个重要的性能指标,也就是RTT越大性能越低 首先看一下单纯的http请求的一个响应时间假设中间没有任何路由,代理服务器的中转 - 发起、建立tcp连接:1个rtt - 发送http请求消息到http响应消息之前的几个字节到达:1个rtt - 响应报文中包含文件或对象的传输时间 total:2RTT+文件发送的时间 就是这个http请求的响应时间如图
所以最大特点就是1.0是非持久性链接,1.1是持久性链接,二者在rtt时间上有很大不同显然持久性链接在应用中用的RTT更少,性能更高
3. http特点:
http最大的特点就是无状态传输:客户端向服务端发起请求后到达服务端后服务端并不记录客户端的标识,你发请求我就处理不会识别,这也是为什么后来有了web应用中另一个重要技术点cookie,因为“小点心”完美的解决了客户端的状态维护问题,如通过cookie技术实现的商品推送,购物车等
3. http应用层使用的是TCP传输协议:
- 服务器默认在80端口等待客户端请求 - 客户端发起tcp链接到服务器(创建套接字) - 服务器接收来自客户端的tcp连接 - 客户端和服务器交换http消息 - 关闭tcp连接
4.http的协议消息
- 请求消息- - ASCII 人类直接读的消息如图
- 响应消息 如图
- http响应code
| “100” ; 继续
|”101” ; 转换协议
|”200” ; OK
|”201” ; 创建
|”202” ; 接受
|”203” ; 非权威信息
|”204” ; 无内容
|”205” ; 重置内容
|”206” ; 局部内容
|”300” ; 多样选择
|”301” ; 永久移动
|”302” ; 创建
|”303” ; 观察别的部分
|”304” ; 只读
|”305” ; 用户代理
|”307” ; 临时重发
|”400” ; 坏请求
|”401” ; 未授权的
|”402” ; 必要的支付
|”403” ; 禁用
|”404” ; 没找到
|”405” ; 不允许的方式
|”406” ; 不接受
|”407” ; 需要代理验证
|”408” ; 请求超时
|”409” ; 冲突
|”410” ; 停止
|”411” ; 需要的长度
|”412” ; 预处理失败
|”413” ; 请求实体太大
|”414” ; 请求-URI太大
|”415” ; 不支持的媒体类型
|”416” ; 请求的范围不满足
|”417” ; 期望失败
|”500” ; 服务器内部错误
|”501” ; 不能实现
|”502” ; 坏网关
|”503” ; 服务不能实现
|”504” ; 网关超时
|”505” ; HTTP版本不支持
5. http的请求常见方法 如图
6.http缓存技术
- 关于http 缓存技术 我觉得大家最好还是仔细研究下rfc 文档中的内容写的非常详细 这里就不做介绍了…… 后需我还会针对http中具体细节实现更新生活中遇到的技术点,欢迎大家一起讨论,谢谢【参考资料】 - RFC文档,以及网易云课堂中的计算机网络应用的一小部分知识点
- 浅谈http的基本概述
- HTTP协议的概述
- HTTP协议的概述
- HTTP协议的概述
- 树的基本概述
- 操作系统的基本概述
- Fragment的基本概述
- Fragment的基本概述
- HTTP的请求协议概述
- 浅谈http协议的ETag
- 浅谈http代理服务器的穿透
- 浅谈HTTP请求的过程
- 浅谈HTTP的Content-Type
- 块设备的基本概述
- 数据结构的基本类型概述
- Map集合的基本概述
- 面向对象的基本概述
- 面向对象的基本概述
- html textarea标签的innerHTML属性和value属性的区别
- 爬取并打印《ES6标准入门》PDF--Puppeteer初探
- Struts2_002_Strtus2概述
- NYOJ 42 一笔画问题 (欧拉回路+并查集)
- String类增删改查的实现
- 浅谈http的基本概述
- 003_Hello Struts(Struts2环境搭建)
- Spark实现WordCount单词计数
- 【C++】KMP浅析及其代码
- String 深拷贝
- Python之csv文件从MySQL数据库导入导出
- 精神病不是好笑的电视广告视频,那些人被卫星攻击。拒绝精神病广告
- 求二叉树的高度(深度+1)
- 多重背包问题(51Nod 1086)