浅谈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文档,以及网易云课堂中的计算机网络应用的一小部分知识点