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

作者:杨志晓

一、相关协议类概念:

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
clipboard.png

b.Ip报文解析
1_2.png
clipboard.png

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

5*4 =20

c.tcp报文解析
1_4.png
clipboard.png

三、http1.0基本原理

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

1_6.png
clipboard.png

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

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

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

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

1_7.png
clipboard.png

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

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

1_8.png
clipboard.png

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

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

1_9.png
clipboard.png

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

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

1_10.png
clipboard.png

http2.0 :

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

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

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

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

1_13.png
clipboard.png

附课堂板书:

1_14
clipboard.png..]


Nginx源码分析
研读nginx源码

一群热爱代码的人 研究Nginx PHP Redis Memcache Beanstalk 等源码 以及一群热爱前端的人

7.1k 声望
12.7k 粉丝
0 条评论
推荐阅读
【转发】来自西红柿(李乐)的《深入理解Go语言
作者:李乐 原文地址:[链接]第一章 Go语言快速入门  第一篇 基本语法  第二讲 数组与切片  第三讲 字符串  第四讲 哈希表MAP  第五讲 结构体与接口 &em...

LNMPRG源码研究1阅读 1.2k

Nginx常用配置及和基本功能讲解 | 京东云技术团队
作者:京东物流 殷世杰Nginx已经广泛应用于J-one和Jdos的环境部署上,本文对Nginx的常用的配置和基本功能进行讲解,适合Nginx入门学习。1 核心配置找到Nginx安装目录下的conf目录下nginx.conf文件,Nginx的基本功...

京东云开发者5阅读 573

封面图
有了 NGINX 和 Kong,为什么还需要 Apache APISIX?
2021 年 5 月,云原生社区技术沙龙·广州站,API7.ai(支流科技)联合创始人 & CTO,Apache APISIX PMC 王院生在活动上做了《有了 NGINX 和 Kong,为什么还需要 Apache APISIX》的分享,以下是现场分享的文字版。...

API7_技术团队1阅读 4.4k

反向代理学习笔记(一) Nginx与反向代理绪论
作为一个沪漂程序员,听到代理这个词,我下意识的想到了中介,现在在上海已经很少能找到房东看房子了,基本上都是从中介那里看房,从这个角度来说中介代理了房东的部分职责,带你看房。在汉语词典中也是这么阐释...

北冥有只鱼2阅读 995

封面图
vue项目部署到阿里云服务器(windows - Nginx代理)
项目构成:前端:vue+vant-ui,数据库:mysql,后端:node.js部署方式:nginx代理一,首先要拥有自己的服务器,阿里,腾讯都可以,我用的是阿里的购买方式省略...购买完成后,会跳到实例界面,也就是你的服务器实...

墨城2阅读 759

前端跨域问题解决办法, Nginx配置为例
💡 Tips:可以将多个系统融合成一个系统,无技术壁垒,可以像iframe一样实现功能组合● qiankun (阿里支持)● micro-app (京东支持)● wujie (腾讯支持)本人推荐● lingjie 携程支持(团队已跑路)

smallStone3阅读 1.4k评论 3

(学习到实践)七、mongodb测试,php+nginx负载均衡的部署
从测试容器中匹配搜索得到 mongod.conf.orig,设置可以启动,网上查找配置项反不能启动,原因是配置是yaml格式!好像听说过。百度查询得到:官方配置说明,网站卡得出奇。

沧浪水阅读 2.9k

一群热爱代码的人 研究Nginx PHP Redis Memcache Beanstalk 等源码 以及一群热爱前端的人

7.1k 声望
12.7k 粉丝
宣传栏