浏览器工作原理(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

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb