赞
踩
记一次 HTTP 的知识扫盲
什么是 HTTP ?
HTTP ( hypertext transfe protocol ) 超文本传输协议,是一个简单的 请求-响应 协议。
通过浏览器和服务的数据交互,进行超文本(文本、图片、视频等)传输数据的一种双向规定协。
HTTP 通常运行在 TCP 之上,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
说到这里,就要提一句计算机网络的七层架构
了解上述模型之后,知道 HTTP 的应用环境,在 TCP/IP 协议之上。
IP 在虚拟网络中,代替主机的真实物理 MAC 地址,作为地址;
TCP( Transmission Control Protocol ) 传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 会帮助我们建立链接,数据传输通道,会对数据进行分组和排序,可以保证数据不会丢失;
UDP ( User Datagram Protocol )用户数据报协议。与 TCP 协议一样,处于传输层,用于处理数据包。不过与 UDP 不提供数据包分组和排序,传输速度快,无法确定数据是否安全到达,数据有丢失的风险。
知道上述的概念后,数据的传输可以认为,每个主机(根据 IP 区分)发送数据,通过 TCP 建立的数据通道,使用 HTTP 协议传输到另一台主机上。它们依赖关系下图所示
至此,就可以开心的碎碎念记录 HTTP 了。
HTTP 特点:超文本,灵活可扩展,可靠,请求-应答,无状态,明文。
格式:请求行,请求头,空行,请求体
蓝色区域为请求行,后面为请求体,\r\n 空行(CRLF)表示请求体这一行的结束。
Hi,HTTP,我想搞点大数据还不能丢失,你能行吗。
上述 HTTP 的一个特点是可灵活扩展,那么我们在传输大大大数据的时候,就可以使用数据分组的形式传输数据,浏览器会把分组的内容组装起来,用来保证数据可靠性。思路大致如下:
⚠️注意: 在分组传输大数据的时候,需要设置 TRansfer-Encoding: chunked
(不可与 content-length 同时使用)
Hi,HTTP,有个新活,看电影
如果想在浏览器上看电影,按秒请求数据显然不合理,那么就需要设置请求的范围(偏移量),需要设置 Content-Type:bytes x-y/length
请求的响应数据也会有对应的状态标示,响应是否成功,206 - 数据存在;416 - 范围不存在。举个栗子
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。