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

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的