浏览器3-tcp网络传输模型
TCP协议:如何保证页面文件能被完整的送达浏览器
衡量web性能时候有个指标FP(first paint),指从页面加载到首次绘制的时长。网络加载速度是影响FP的一个重要因素。了解网络协议就变得十分重要。不管是http还是websocket都是基于TCP/IP的。
一个数据包的旅程
网络中的文件通常被分为很多数据包来传输,这些数据包在传输过程中很容易丢失或出错,如何保证他们的完整性呢?
互联网,是一套理念和协议组成的体系架构。其中,协议是一套众所周知的标准和规范,如果各方都同意使用,那么他们之间的沟通就变得毫无障碍。
1.IP地址,把数据包送达指定主机
互联网上不同的在线设备都有唯一的地址,地址只是一个数字,这和大部分家庭收件地址类似,你只需要知道一个家庭的具体地址,就可以往这个地址发送包裹,这样物流系统就能把物品送到目的地。
2.UDP,把数据包送达应用程序
到达主机的数据包如何知道是交给浏览器还是交给英雄联盟呢,UDP头信息包含了源端口号和目的端口号,而且传输速度很快。
缺点:
1.虽然 UDP 可以校验数据是否正确,但是对于错误的数据包,UDP 并不提供重发机制,只是丢弃当前的包
2.而且 UDP 在发送之后也无法知道是否能达到目的地。
UDP一般用在不那么严格要求数据完整性的场景,如在线视频和互动游戏等。
3.TCP,把数据包完整的送达应用程序
TCP头信息也包含了源端口号和目的端口号。
解决UDP的两个问题
1.数据包传输过程中容易丢失 => 重传机制
接收端在接收到数据包之后,需要发送确认数据包给发送端。所以当发送端发送了一个数据包之后,在规定时间内没有接收到接收端反馈的确认消息,则判断为 数据包丢失,并触发发送端的重发机制
2.拆分的小数据包会经过不同的路由,并在不同的时间到达接收端,UDP不知道如何组装? =>数据包排序机制
TCP头信息中除了源端口和目的端口号外,还有包排序信息
总结
简化的TCP网络传输模型,上层即应用层,底层即物理链路层
一个TCP连接的生命周期