资讯专栏INFORMATION COLUMN

【笔记整理】http协议浅析(一)

Galence / 2861人阅读

摘要:作者杨志晓一相关协议类概念和协议属于传输层协议。该协议是一种更加快速的内容传输协议。在传输层,目前主要使用,但由于本身的问题一个充满补丁的丑陋的协议,成为了限制应用性能的一个瓶颈。同理,服务端也是将数据拆分为不同帧返回。

作者:杨志晓

一、相关协议类概念:

a.TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。 其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。 通过面向连接、端到端和可靠的数据包发送。
b.SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。 该协议是一种更加快速的内容传输协议。
c.QUIC(Quick UDP Internet Connections)基于UDP的传输层协议,提供像TCP一样的可靠性。在提高web应用性能上,可以选择在应用层使用HTTP2.0实现多路传输,在物理层使用CDN解决网络拥塞和最后一公里问题。在传输层,目前主要使用TCP,但由于TCP本身的问题(一个充满补丁的丑陋的协议),成为了限制web应用性能的一个瓶颈。

二、wireshark抓包解析报文:

a.mac网卡(多路访问控制协议(multiple access control protocol)

1_1.png

b.Ip报文解析
1_2.png

ip报头长度计算:
1_3.png

5*4 =20

c.tcp报文解析
1_4.png

三、http1.0基本原理

a.通过一个普通html分析:
1_5.png

1_6.png

b.如上图分析:
绿色为:Waiting (TTFB):TTFB (Time To First Byte),是最初的网络请求被发起到从服务器接收到第一个字节这段时间,它包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第一个字节的时间。
蓝色为:Content Download

c.等待时间影响因素:从发送请求到收到响应之间的空隙,会受到线路、服务器距离等因素的影响。

d.浏览器同域名发出6个请求,建立几个tcp?1 or 6?

带着上面的疑问我们对demo进行抓包
抓包分析:

1_7.png

分析后发现:三张图片+html总共四个请求
index.html+section4new.png端口是55653
section01.png+section2.jpg端口是55654

为什么是这样呢:
查看tcp抓包:

1_8.png

通过抓包看到 :
第一个http请求 index.html请求端口是:55653
第二个http请求 section4new.png请求端口是:55653
第三个http请求 section01.png请求端口是:55654
第四个http请求section2.jpg请求端口是:55654

同时也看到tcp开始建立时同时发出了两条请求

1_9.png

默认谷歌浏览器发起了两条tcp请求(浏览器不同,可能是请求个数少)

同样抓包中看到了tcp的三次握手

1_10.png

http2.0 :

a.浏览器加载如下:
1_11.png

b.讨论点:http1.1请求会是按照如下图1还是图2?
1_12.png

讨论结论:
http1.1 without pipelining: 通过tcp连接上一个请求相应完后,下一个请求才能发出
http1.1 with pipelining: 通过tcp连接,上一个请求发出,下一个请求不需要等待,但是返回是同一顺序。
http2.0在TCP连接上传输的是帧,客户端会将要传输的数据拆分为不同的帧,并标记对应的数据流ID,异步发出,服务端接收到帧集合根据数据流ID拼凑起来即为客户端发送来的数据。同理,服务端也是将数据拆分为不同帧返回。

附浏览器同域名请求的最大并发限制:

1_13.png

附课堂板书:

1_14
..]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40428.html

相关文章

  • 笔记整理http协议浅析(二)

    摘要:作者杨志晓的版本建立在协议之上。网络上的大多数网站都是基于协议,而可以支持多线程的连接请求,通过这个操作可以减少载入网页的时间。它可以防止重放攻击,并确认初始数据交换的完整性。 作者:杨志晓 http的版本: a.HTTP建立在TCP协议之上。 b.HTTP/0.9 于1991年发布。 c.HTTP/1.0 于1996年发布。 d.HTTP/1.1 于1999年发布。 e.HTTP/2...

    waltr 评论0 收藏0
  • Web缓存相关知识整理

    摘要:缓存缓存,也叫网关缓存反向代理缓存。浏览器先向网关发起请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的处扩展性。 一、前言  工作上遇到一个这样的需求,一个H5页面在APP端,如果勾选已读状态,则下次打开该链接,会跳过此页面。用到了HTML5 的本地存储 API ...

    rickchen 评论0 收藏0
  • HTTP2和HTTPS来不来了解下?

    摘要:一端用私钥加密,另一端用公钥解密,也确保了来源目前现在好像使用了数字签名就万无一失了,其实还有问题。如果公钥被伪造了,后面的数字签名其实就毫无意义了。具有校验机制,一旦被篡改,通信双方会立刻发现。配备身份证书,防止身份被冒充。 一、前言 只有光头才能变强 HTTP博文回顾: PC端:HTTP就是这么简单 PC端:HTTP面试题都在这里 微信公众号端:HTTP就是这么简单 微信公众号端...

    asce1885 评论0 收藏0
  • 【Nginx源码研究】Nginx中FastCGI浅析

    摘要:可以通过等方式按照协议通信。上述都需要发送结束包。函数所需的变量在进入该函数之前认为已经初始化完成。和都有自己的,且互不干涉,后续发送的序列号以此为基准。 运营研发团队 施洪宝 一. FastCGI协议简介 1.1 简介 FastCGI(Fast Common Gateway Interface, 快速通用网关接口)是一种通信协议。可以通过Unix Domain Socket, Na...

    Taste 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<