影响HTTP1.1的几个TCP特征

1,握手延迟. 每次建立一个HTTP请求 都需要重新建立一个TCP的连接通道,建立TCP链接通道是需要代价的 .三次握手. 并且服务端和客户端之间维护多个TCP连接需要一定的资源消耗. 2,分组确认(窗口滑动概念.) TCP数据包在网络上传输是不可靠的,这样的情况下TCP有自己的传输保证机制.滑动窗口确认. 在服务端和客户端都会维护一个滑动窗口,当数据包发送后对方确认的时候会回传一个小的确认包.当收到确认包之后才会继续发送新的数据.并且滑动窗口向前滑动. 用于确认的包很小.所以由正常的数据包捎带完成确认.但是HTTP的特征使得确认包找不到一个能够搭载的数据帧,出现等待情况.数据包得不到确认.导致数据不能够及时完成传输.窗口不会出现滑动. 3,TCP慢启动问题 为防止网络拥塞.TCP链接在建立之后想要传输数据.需要实现 发送一个包,确认了一个包才能发两个包,确认了两个包,才能发四个包以此类推. 是为了防止出现网络拥塞,控制流量来设计的. 4,Nagle算法.  TCP_NODELAY 全尺寸包先发.非全尺寸包最后发. 针对HTTP的应用场景这个策略并不适用. 是为了预防.**发送端傻窗口综合征** 来设计的.…

HTTP2.0 nginx部署

第一步,准备材料: nginx1.9.5+版本,我使用的版本是1.10.2http2.0在主流浏览器上面都必须是 http2 over TLS(传输层安全协议). 而http2的协商机制是需要在TLS协商完成,建立起来安全连接后完成协商的,所以需要通过TLS的扩展(ALPN)完成协商.而只有在openssl1.0.2+后才会支持ALPN.SO... 具体的HTTP2的协商问题可以查看QUQU的这篇文章.[1] 需要一个openssl/或者LibreSSL(如果你的机器上面的额openssl是1.0.2+版本的话应该没问题.否则需要单独一个openssl然后通过编译过程中指定来用这个新的. openssl1.0.2j Libressl2.5.0TLS也同样意味着你需要证书来实现你的HTTPS化. 需要给你的域名申请证书.可以在这里申请. 申请验证通过后需要再合并certificate.crt和ca_bundle.crt. cat a b >c.…

从http1.0到http1.1

HTTP1.0,1.0应该是一个软件的初始版本.第一个正式版本. 出现的背景: 1989 年 3 月,互联网还只属于少数人。在这一互联网的黎明期,HTTP 诞生了。 CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出了一种能让远隔两地的研究者们共享知识的设想。 最初设想的基本理念是:借助多文档之间相互关联形成的超文本(HyperText),连成可相互参阅的 WWW(World Wide Web,万维网)。包括的关键技术是 HTML, HTTP 和 URL. 92 年 9 月,日本第一个网站的主页上线了。  [^n] http://www.ibarakiken.gr.jp/www/ HTTP诞生于1990年,…

Nginx 里面可以用的变量

nginx内置变量 内置变量存放在  ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的。总而言之,这些变量代表着客户端请求头的内容,例如$http_user_agent, $http_cookie, 等等。下面是nginx支持的所有内置变量: $arg_name 请求中的的参数名,即“?”后面的arg_name=arg_value形式的arg_name $args 请求中的参数值 $binary_remote_addr 客户端地址的二进制形式, 固定长度为4个字节 $body_bytes_sent 传输给客户端的字节数,响应头不计算在内;这个变量和Apache的mod_log_config模块中的“%B”参数保持兼容 $bytes_sent 传输给客户端的字节数 (1.3.…