网络层可以看作高速公路:不关心开的什么车
运输层可以看作卡车司机:不关心车厢拉的什么东西,不关心有没有路可以走
链路层可以看作快递公司:不关心包裹内容,不关心卡车怎么把东西送到的
上层操作对下层来说是黑盒的,各司其职。
协议定义了两个或多个通信实体之间交换的报文格式和顺序。
标头和载荷:对于收件人:收件地址和寄件地址是标头,包裹内容是是载荷
对于快递公司:发往哪个集散点是标头,收件人寄件人关注的东西则是载荷
HTTP协议示例:
[]本地层:前4个字节:Null/Loopback代表该帧是本机的帧,不需要经过别的交换机
IP协议层:第5-44个字节包含信息:IP协议版本(ipv6),原IP地址(src)和目标IP地址(dst)
TCP协议层:第45-64字节包含信息:源端口号,目的端口号,序列长度,载荷信息,载荷长度等信息
HTTP协议层:同样分为头部和载荷两部分,但是示例中是get请求所以没有载荷,GET 表明了请求路径,Host表明了请求的域名
TCP中头部和载荷的分割靠的是data offset(第13,14字节)HTTP中靠的是解析后发现有连续的换行符和回车符之后确定
每一层都会将上一层的报头作为载荷放到下一层中。
HTTP1-3中哪些因素让协议越来越快以及一些影响web网络速度的其他因素
这是一个http协议
上面红色部分代表请求:第一行的三个信息 请求方式/资源路径/http版本
蓝色部分代表响应: 第一行信息: 版本/状态码/状态信息
第一个是http1连接模型,每次请求都要重新建立连接,第二个是http1.1的连接模型,会短暂的连接一会用于请求,第三种已经弃用了。
显而易见,http1.1无法完成多路复用。
http2引入帧的概念来解决多路复用的问题,让http在连接上每个数据包都有自己的身份(标识每个数据包都属于哪个请求)
http2并不能解决队头堵塞的问题(队头堵塞:包只能按顺序接受导致统一身份的包被隔开之后就要等其他包接受之后才能接受组成完整信息)
http3:QUIC http3更适合https
QUIC将tls和tcp之间的rtt请求组合起来了所以变快了,且第二次是0rtt连接
HTTP之外的影响因素
cdn:内容分发网络:在全国不同地区建立服务器,用户访问抖音的时候浏览器先去dns服务器请求抖音ip地址,这时候抖音不直接发送自己的ip而是转发给cdn,由cdn判断距离用户最近的服务器然后发送一个cdn的ip。
但是仅仅根据距离选择服务器是不合理的,转折所带来的延迟要大于距离带来的延迟,大约是2/3.
用策略减少成本:拉策略是根据用户使用判断的:a在广州看一个视频,广州服务器没有去北京总服务器调取然后存在本地服务器里。
推策略是网站自己判断的:比如热门电影
websocket
websocket是HTTP升级而来的
网络安全:对称加密,非对称加密,密码散列函数