这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。
1.网络接入协议/概念
- MAC地址
硬件地址,具有唯一性
- 路由协议
同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包
跨网段:配置网关路由。获取网关MAC地址发包
- ARP协议
逻辑同网段才能发送ARP,因为广播不能跨网段
ARP请求广播,ARP应答单播
免费ARP:新加来的机器没收到广播,就积极告诉其他机器自身的mac地址,以便于其他机器更新,防止IP冲突
ARP代理:虚拟网络,劫持ARP请求去做一些操作
编辑
- IP协议
IPv4:互联网终端节点的唯一标识
IPv6:不仅仅是IP地址长度的增加
- NAT
NAT上网:家用路由器
NAT出网:机房内网主机上外网
NAT原理:注意不仅仅是源地址变换,源端口/校验和/SEQ等都会变化
编辑
2.网络传输协议
- DNS
DNS的传输协议为UDP
- UDP
用好很难:发包每次发多少,如何避免分片,如何直到有么有丢包
- TCP
连接后,拔掉网线,连接会断吗? 具体看有没有TCP的保活
哪个字段可以防止分片? MSS,在三握时就确认了MSS
三握的时候有很多option会被交互,类似的还有时间戳
Timewait的作用? 确保连接正常关闭,防止连接异常
丢包重传
滑动窗口
流量控制
- HTTP/HTTP1.1
为什么不用TCP通信? 因为TCP功能已经够复杂了
HTTP依然是TCP,只是在此之上多加了一层规矩
- HTTPS
解密出来依旧是HTTP,传输过程中获得了加密
SSL/TLS握手(对称加密与非对称加密)
对对称加密算法进行加密
编辑
- HTTP2.0
多路并发复用,单个TCP连接有多个stream,但是有对头阻塞,一旦丢包就无法并发直到重传成功。
编辑
- QUIC/HTTP3.0
使用UDP实现,解决了对头阻塞问题
编辑
3.刷抖音网络是怎么交互的?
应用层来看,协议涉及了:域名解析DNS,图片、视频下载HTTP,用户评论API/HTTP
交互:网络接入、网络传输
网络接入:
同网段和不同网段都存在路由
同网段如何发包/交互呢:检查mac地址
跨网段:路由/网关
路由不是对称的
路由工作在IP层
路由是改的IP地址吗? 不是,改的是mac地址,发包过程中,mac地址在不断变化,而源,目的地IP地址是不变的。
怎么找下一跳的mac地址? 通过ARP协议
为什么用IP地址,而不用mac地址标记客户端与服务端? 有些设备不兼容mac地址,地址统一使用IP地址
IPv4地址不够用怎么办?IPv6,NAT
网络传输:
编辑
首先客户端发{www.douyin.com}的解析请求,基于DNS
之后基于传输协议
4.网络架构怎么给抖音提质
网络提速:
HTTP2.0,QUIC
网络路径优化,网络提速 ,动态API
容灾