浏览器工作原理(3)-TCP协议文件如何从服务器到浏览器

2024-09-07 21:18

本文主要是介绍浏览器工作原理(3)-TCP协议文件如何从服务器到浏览器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

浏览器工作原理-TCP协议,文件如何从服务器到浏览器

本周继续学习浏览器工作原理及实践,本次内容来看一下TCP协议确保文件完整的送到至浏览器

First Page 是指页面加载到首次开始绘制的时长,而影响这个性能指标的一个重要原因是网络加载速度,网络传输协议无论使用http还是websocket,都是基于TCP/IP的,所以有必要了解一下TCP/IP,对于web的性能调优和问题定位都有很大帮助。

在网络传输过程中,其实是将文件拆分为很多数据包来传输,而数据包在传输过程中有很大概率丢失或者出错,这就是常说的丢包问题。那么网络协议是如何保证页面文件能被完整的送达到浏览器呢

1 IP: 把数据包送达目的主机
数据包想要在网络中进行传输,必须要遵从网络协议(Internet Protocol),计算机的地址称为IP地址,访问网络其实是一个计算机向另一个计算机请求信息

主机A向主机B发送数据包,在传输之前,数据包上会附加上主机B的地址以确定要发送的目的地址,还会附加上主机A的地址,以便主机B做出回应,这些额外信息被封装进一个叫IP头的数据结构里,里面主要包括IP版本、源IP地址,目标IP地址,生存时间等,这部分工作是在网络层来完成的

2 UDP:把数据包送达应用程序
由于IP是非常底层的协议,只负责由主机A发送到主机B, 但是数据包到达B之后如何交给应用程序就无能为力了,这时候我们又需要高一层的协议来处理数据包,常见的是“用户数据包协议(UDP)

UDP中一个重要的信息是端口号,通过端口号,UDP就可以将数据包发给应用程序,IP通过IP地址把数据发送到指定电脑,而UDP是通过端口号把数据包分发给正确的应用程序,UDP头里面同样是封装了端口号,这一层是在传输层来完成

数据包的数据部分UDP头IP 头

一个数据包大致如上图所示

UDP的特点是:对错误包直接丢弃,发送之后无法知道是否到达,但是速度比较快

3 TCP: 把数据完成送到应用程序
由于UDP的局限性,对于安全和可靠性要求更高的传输时,就必须来使用TCP了

  • TCP采用丢包重传机制
  • TCP数据包排序功能,保证乱序的数据包能够组合成完整的文件

TCP头除了目标端口和本机端口,还包含了排序序列号

来看一下一个TCP传输生命周期

TCP传输生命周期一个传输声明周期包含建立连接,数据传输,断开连接

建立连接:这个阶段通过三次握手来完成,建立一个TCP连接时,客户端和服务器总共要发送三个数据包以确认连接的建立

数据传输:接收端需要对每个数据包进行确认,接收端接受到数据之后,要发送确认信息给发送端,如果发送端发送数据一段时间后没有收到确认信息,则认为是丢包,触发数据重传机制

断开连接:四次挥手保证双方断开连接

下一节讲HTTP协议

这篇关于浏览器工作原理(3)-TCP协议文件如何从服务器到浏览器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146188

相关文章

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们