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

相关文章

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT