HTTP/HTTPS

2018-07-29  本文已影响23人  小凡凡520
说明

HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用、所以支持HTTP就一定支持TCP传输。常见的请求方式有get和post,web服务。

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”

优点
1.基于应用级的接口使用方便
2.要求的开发水平不高,容错性强
适用场景

公司OA服务,互联网服务

缺点
1.传输速度慢,数据包大。
2.如实现实时交互,服务器性能压力大
3.数据传输安全性差
HTTP协议
1、(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
2、所有的WWW文件都必须遵守这个标准。
3、设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
4、是用于从WWW服务器传输超文本到本地浏览器的传输协议。
5、默认使用80端口,HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。
和TCP关系
1、HTTP协议和TCP协议是不冲突的,HTTP定义在七层协议中的应用层,TCP解决的是传输层的逻辑。
2、HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
3、HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性。如TCP建立连接时三次握手有1.5个RTT(round-trip time)的延迟,为了避免每次请求的都经历握手带来的延迟,应用层会选择不同策略的http长链接方案。又如TCP在建立连接的初期有慢启动(slow start)的特性,所以连接的重用总是比新建连接性能要好。
特点

HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

发展历史
请求方式
格式 说明
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
请求状态

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

格式 说明
1xx 指示信息--表示请求已接收,继续处理
2xx 成功--表示请求已被成功接收、理解、接受
200 成功----服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页
201 已创建---请求成功并且服务器创建了新的资源
202 已接受----服务器已接受请求,但尚未处理
3xx 重定向--要完成请求必须进行更进一步的操作
300 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择
301 永久移动---请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置
302 临时移动---服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
303 查看其他位置---请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码
304 未修改----自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容
4xx 客户端错误--请求有语法错误或请求无法实现
401 错误请求---服务器不理解请求的语法
401 未授权---请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应
403 禁止 ---服务器拒绝请求
404 未找到----服务器找不到请求的资源
5xx 服务器端错误--服务器未能实现合法的请求
500 服务器内部错误 --服务器遇到错误,无法完成请求
501 尚未实施---服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码
502 错误网关---服务器作为网关或代理,从上游服务器收到无效响应
503 服务不可用---服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态
移动app如何实现长链接
HTTP2.0
服务端推送(Server Push)

服务端推送是一种在客户端请求之前发送数据的机制。在 HTTP/2 中,服务器可以对客户端的一个请求发送多个响应。Server Push 让 HTTP1.x 时代使用内嵌资源的优化手段变得没有意义;如果一个请求是由你的主页发起的,服务器很可能会响应主页内容、logo 以及样式表,因为它知道客户端会用到这些东西。这相当于在一个 HTML 文档内集合了所有的资源,不过与之相比,服务器推送还有一个很大的优势:可以缓存!也让在遵循同源的情况下,不同页面之间可以共享缓存资源成为可能。

HTTPS

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词。

WWW
超文本
类型 说明
http 超文本传输协议资源
https 安全套接字层传送的超文本传输协议
ftp 文件传输协议
mailto 电子邮件地址
file 当地电脑或网上分享的文件
news Usenet新闻组
gopher Gopher协议
telnet Telnet协议
URL

URL把信息编码成一个字符串、称为统一资源定位(Uniform Resource Locator,URL)。 URL被冒号和斜杠分隔成三个部分:协议、计算机名、文档名。

工作模式
1552225-6d3f1edd84f90803.png
HTTP协议特点
HTTP的请求和应答
1552225-36eb84711f865618.png
1552225-487b369c74feb267.png

其中第一行是请求行。<method>是请求方法、URI是请求资源的统一资源标识、<HTTP-version>是协议版本号。余下的分别是报文头(请求头)、报文体(请求体)。

1552225-eab698969fb2c955.png
常见三种方式的请求
HTTP/HTTPS的区别
多路复用

在HTTP1.1中虽然允许并行发送请求、但服务器的响应不允许多个错发送(多路复用),只能等待一个响应完全返回后,下一个响应才能发送,无论下一个响应是否早于前一个响应完成处理,这也叫做队首阻塞。

多路复用的原理

基于二进制分帧层,HTTP 2.0可以在共享TCP连接的基础上,同时发送请求和响应。HTTP消息被分解为独立的帧,而不破坏消息本身的语义,交错发送出去,最后在另一端根据流ID和首部将它们重新组合起来。

上一篇下一篇

猜你喜欢

热点阅读