Http协议
文章平均质量分 51
库昊天
这个作者很懒,什么都没留下…
展开
-
URL编解码
介绍 URL只能由英文字母、阿拉伯数字和某些标点符号组成,若查询字符串中或者form表单中含有其它字符,则必须按照URL的规则进行转换,这个过程称为URL编码。代码示例JDK以及其它开源框架提供了URL编解码工具,JDK示例如下:import java.net.URLDecoder;import java.net.URLEncoder;/** * 功能:URL编解码 * * @autho原创 2017-11-01 15:53:41 · 267 阅读 · 0 评论 -
HTTP请求大小
URL大小HTTP协议规范 HTTP协议并没有限制URI的长度,如下:The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be abl...原创 2018-11-03 11:43:58 · 4513 阅读 · 0 评论 -
HTTP/2连接建立过程
连接过程 HTTP/2连接建立过程可以分为两大步:协议协商(Http1.x升级到Http2.0);连接的初始化;协议协商协议流程Netty实现Client发送升级请求pipeline中添加handler: private void configureClearText(SocketChannel ch) { HttpClientCod...原创 2018-07-13 10:23:48 · 3909 阅读 · 0 评论 -
HTTP2 Stream标识符
Stream标识符作用:唯一标识连接内的某个流,用31位无符号整型标识,范围2~2^31-1; 注意:0x0用来表示连接控制信息流,不能用来标识流;0x1用于标识升级到HTTP/2的客户端流,不能用来标识流;新建流第一次被使用时,低于此标识符的并且处于空闲”idle”状态的流都会被关闭;创建规则:已使用的流标识符不能被再次使用;新建流的标识符要大于已有流和预留的流的标...原创 2018-06-10 12:39:39 · 2573 阅读 · 0 评论 -
HTTP2流和多路复用
转载:http://www.blogjava.net/yongboy/archive/2015/03/19/423611.html流流(stream),一个完整的请求-响应数据交互过程,具有如下几个特点:双向性:同一个流内,可同时发送和接受数据;有序性:帧(frames)在流上的发送顺序很重要. 接收方将按照他们的接收顺序处理这些frame. 特别是HEADERS和DATA fra...转载 2018-06-10 10:56:05 · 6267 阅读 · 1 评论 -
HTTP2帧
简介 帧是数据交换的基本单元,必须归属于某个流才能被发送;帧格式 帧通用格式:Header(固定9字节)+ Payload(根据帧类型变化),如下所示:+-----------------------------------------------+| Length (24) |+-----------...原创 2018-06-09 18:03:51 · 1143 阅读 · 0 评论 -
HTTP2二进制协议
介绍 与Http1.x(文本协议)不同,Http2是一个二进制协议,体现在10种不同类型的二进制帧上。为什么使用二进制协议?性能。二进制协议的解析效率超高,几乎没有解析代价;带宽。二进制协议没有冗余字段,占用带宽少;压缩及Https技术弱化了文本协议的价值;二进制格式二进制协议 VS 文本协议二进制协议 二进制协议一般消息头固定和消息体变长 ,每个字段固定...原创 2018-06-08 18:58:25 · 5791 阅读 · 1 评论 -
HTTP2多路复用
HTTP2.0多路复用 VS HTTP1.1长连接复用HTTP1.1的Pipeling方式本质是将请求串行化处理,后面的请求必须等待前面请求的返回才能被执行,一旦有某请求超时等,后续请求只能被阻塞,即线头阻塞;HTTP/2多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行; 参考:https://www.cnblogs.com/etoah/...原创 2018-06-08 15:27:12 · 2109 阅读 · 0 评论 -
HTTP2介绍
简介HTTP2的核心是性能优化,主要是延时和带宽两方面。与HTTP1.X相比的优势在于:低延时。多路复用(一个域名一个连接)避免了连接频繁创建和慢启动过程;Server Push实现了资源“预读”,提前将资源推送到客户端。带宽占用少。头部压缩技术减少了头部字段对带宽的资源占用; The focus of the protocol is on performance; spec...原创 2018-06-07 14:17:03 · 629 阅读 · 0 评论 -
HTTP2头部压缩
存在问题 HTTP1.x的header很多时候都是重复多余的,导致带宽的浪费。解决方案 HTTP2.0使用HPACK算法对头部进行压缩,既避免了重复header的传输,又减小了需要传输数据的大小。适用场景 带宽资源有限或者收费的场景,如移动端设备。HPACK基本原理 客户端和服务端分别缓存一份索引表,如果头部存在于索引表,则用对应的索引值;否则进行霍夫曼编码,并...原创 2018-06-07 11:15:04 · 2387 阅读 · 0 评论 -
HTTP2的协议协商机制
背景知识URI模式 HTTP/2 使用和 HTTP/1.1 一样的 “http” 和 “https” 的 URL 模式。同时 HTTP/2 和 HTTP/1.1 也共享了相同的默认端口号:”http” 的 80 端口,”https” 的 443 端口。版本标识符字符串 “h2c” 标示运行在明文 TCP 之上的 HTTP/2 协议(http模式);字符串 “h2” 标示使用了...原创 2018-06-06 19:48:00 · 954 阅读 · 0 评论 -
断点续传原理
断点续传原理服务端将文件分割成若干个小文件;客户端并行下载,并记录下载进度;如果出现下载中断,重新提交下载请求,从下一下载位置开始继续下载; 可能出现问题及解决方案问题:断点续传过程中,文件发生变化; 方案:如果文件发生变化(MD5、时间戳等),直接报错或者全部重新下载;HTTP实现原理 使用Range(请求头)、Content-Range(响应头)表示下...原创 2018-06-06 16:39:03 · 1747 阅读 · 0 评论 -
HTTP2伪头部字段
伪头部字段 伪头部字段是http2内置的几个特殊的以”:”开始的key,用于替代HTTP/1.x中请求行/响应行中的信息,比如请求方法,响应状态码等,内置的伪头部字段列表如下: /** * {@code :method}. */ METHOD(":method"), /** * {@code :scheme}. ...原创 2018-06-11 12:32:04 · 3547 阅读 · 0 评论 -
Https总结
为什么会出现Https? Http采用明文传输,很容易被窃听、篡改,存在很大的安全隐患;Https的核心就是将传输数据加密,保证数据的安全性。Https的安全策略传输数据:对称加密和完整性校验;对称密钥:非对称加密;身份认证:数字证书;TLS握手过程客户端发送Client Hello报文,开启TLS握手过程。报文内容包括:随机数、客户端支持的加密套件等;服务端响应Server Hell原创 2018-04-18 13:43:00 · 166 阅读 · 0 评论 -
Http常用操作汇总
禁用缓存response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0);response.setHeader("Cache-Control", "no-cache,no-store");Http+零拷贝进行文件传输FileInputStream fis = new FileInputStream(new原创 2017-11-06 14:42:16 · 386 阅读 · 0 评论 -
Http持久连接、非持久连接和pipeline连接
基本概念 持久连接:使用同一个TCP连接发送和接受 多个 http请求/应答; 非持久连接:一个TCP连接只能发送和接受 一个 http请求/应答;持久连接的两种类型keep-alive机制(http1.0) keep-alive握手过程如下: HTTP/1.0+支持keep-alive连接,但默认并未激活。客户端通过发送一个包含Connection: Keep-Aliv原创 2017-11-03 14:48:28 · 2799 阅读 · 0 评论 -
简易Http客户端
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.nio.charset.Charset;import java原创 2017-11-02 14:59:56 · 655 阅读 · 0 评论 -
HttpClient之Multipart上传文件
MultipartEntityBuilder Multipart的具体含义可参考博文,或者RFC2046,HttpClient提供的MultipartEntityBuilder类是对此规范的具体实现。如下图所示,最重要的属性有三个:contentType:即HTTP请求头CONTENT_TYPE的值,默认为multipart/form-data;boundary:分隔符边界,默认会自动...原创 2018-11-03 23:33:14 · 7371 阅读 · 1 评论