计算机网络:http协议
- 一、本文内容与前置知识点
-
- [1. 本文内容](#1. 本文内容)
- [2. 前置知识点](#2. 前置知识点)
- 二、HTTP协议工作简介
-
- [1. 特点](#1. 特点)
- [2. 传输时间分析](#2. 传输时间分析)
- [3. http报文结构](#3. http报文结构)
- 三、HTTP版本迭代
-
- [1. HTTP1.0和HTTP1.1主要区别](#1. HTTP1.0和HTTP1.1主要区别)
- [2. HTTP1.1和HTTP2主要区别](#2. HTTP1.1和HTTP2主要区别)
- [3. HTTPS与HTTP的主要区别](#3. HTTPS与HTTP的主要区别)
- 四、参考文献
一、本文内容与前置知识点
1. 本文内容
HTTP自己用到的状态码,方法,HTTP各版本区别。
2. 前置知识点
- c++关于指针和内存分配知识点
二、HTTP协议工作简介
1)面向事物的应用层协议。
2)请求-应答模型,这部分可以理解为同步通信。
工作图解如下
参考《计算机网络》6.4.3 超文本传输协议HTTP p267
1. 特点
1)基于TCP连接 :保证了数据可靠传输,所以HTTP不再需要考虑数据丢失和重传。
2)本身是无连接协议 :从http协议层面来说,不存在http连接建立。
3)无状态的:服务器并记录客户访问的过程,每一个都是新的独立的http请求,简化了服务器设计,提高效率。
2. 传输时间分析
1)客户端和服务器tcp连接三次握手,第三次握手的时候会传输http请求报文。(1.5RTT时间)
2)服务器收到http请求报文之后进行数据准备,分片发送文件,需要花费时间T。
3)分片发送文件的最后一片到达的时间为1.5RTT+T+0.5RTT = 2RTT+T。
综上,一次http请求从开始到返回应答的时间是2RTT+T
在此之后会有四次挥手的连接释放过程,但是在此之前已经拿到应答了。
3. http报文结构
如下图所示:
参考《计算机网络》6.4.3超文本传输协议HTTP p271
1)开始行
用于区分请求报文和响应报文,会有所不同,请求报文主要是方法和URL,响应报文主要是状态码。
个人用到的常见方法
方法 | 意义 |
---|---|
OPTION | 请求一些选项信息 |
GET | 读取URL标志的星系 |
POST | 给服务器添加信息 |
DELETE | 删除URL所标志的资源 |
状态码
1xx表示通知消息,2xx表示成功,3xx表示重定向,4xx表示客户端出错,5xx表示服务器差错。
个人用到常见状态码
状态码 | 含义 |
---|---|
200 | OK,请求成功 |
400 | Bad Request,错误请求 |
404 | Not Found,服务器无法找到请求资源 |
503 | Service Unavailable,服务器暂时无法处理请求,因为忙碌或超载 |
2)首部行
3)实体主体
消息传输的载体,一般服务器返回的数据就在这个实体主题显示,在机器人API的数据请求指令中,实体主体内会包含json字符串格式的数据。
三、HTTP版本迭代
1. HTTP1.0和HTTP1.1主要区别
1)引入了长连接 ,一次http请求应答之后,tcp连接会继续持续一段时间,此时可以继续发送其他http请求,提高效率。
"Connections:close"代表此次http请求后会将长连接断开。
"Connections:keep-alive"代表此次http请求后还会有额外的请求,不打算断开tcp连接。
2)http1.1流水线模式(请求管线化),每个http请求不需要等待上一个请求应答就可以立刻发送,tcp连接建立后,访问所有对象都只需要一个RTT时间。但是响应必须按照请求发出顺序返回,存在头部阻塞。
2. HTTP1.1和HTTP2主要区别
1)数据分帧:帧是 HTTP/2 协议中的最小单位。所有的 HTTP/2 通信都通过帧进行。每个帧都包含一个固定长度的头部(标识所属于的stream流)和一个可变长度的负载
2)引入了多路复用:有了固定长度头部之后,就可以表面这个帧属于那一个http请求流,此时头部阻塞问题解决,实现了真正的并发,所有流使用同一个tcp连接进行,
3. HTTPS与HTTP的主要区别
1)HTTPS使通过SSL\TLS进行了加密
2)端口号不同,HTTP是80默认,HTTPS443
3)HTTPS需要CA证书
4)HTTP 的连接简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身 份认证的网络协议,比 HTTP 协议安全。
四、参考文献
《计算机网络》6.4.3 超文本传输协议HTTP p267**
《计算机网络》6.4.3超文本传输协议HTTP p271**