Http 协议基础知识 1:http 和 tcp
http 协议是 Web 前端开发的一块基石,对于大多数页面来说,它承载了全部的网络请求,其重要性不言而喻,但在平时的工作和面试中,发现很多从业者对其几乎不了解,在此为大家归纳总结出其中较为常见,与前端开发较为密切的 http 协议相关知识。一来免去大家翻看厚厚的协议书,二来也更有针对性。
首先,http 是在 tcp/ip 之上的一层网络数据传输协议,包括请求头和请求体,都是纯文本不加密传输的。
http 请求的大体顺序如下。
- 用户发起 http 请求,client 首先要根据 url 确认 server 端的 ip 地址和端口。如果本机没有该 server 的 ip 地址缓存,就要通过 dns 解析得到 ip 地址,并缓存起来,这个 dns 解析的过程可能比较耗时,要花费一段时间。因此页面要合理规划域名个数,多域名对然能提高并发量,但在 dns 解析上也会消耗较多时间。
- 找到目标 server 的 ip 地址之后,就会建立 tcp 链接。由于 tcp 链接的可靠性,导致每次创建tcp链接都是一次额外的消耗(tcp 在建立链接,发送数据前,会交换一系列的 ip 分组,也就是所谓的握手)。因此合理规划页面中请求的个数,尽量避免过多 tcp 请求的断开与重建,这里可以利用 http 协议的 keep-alive 特性。
- tcp链接建立成功后,开始 http 利用 tcp 开始发送数据。为了避免突然的过载和拥堵,tcp 限制了每次可以发送的数据。每次数据确认后,才可以发送两倍的数据。也就是第一次发送一组数据,确认后,发送两组数据,再确认后,发送四组数据,一次类推。这个特性导致,一个新建的 tcp 连接,传输效率上要低于一个已经建立的 tcp 链接。
最终根据具体情况,client 或 server 会关闭 tcp 链接,一个或一组 http 请求结束。
根据以上介绍,就要求前端工程师能够根据经验和实际情况判断,页面如何减少请求个数的同时利用并发。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Http 协议基础知识 2:缓存
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论