Go语言后端网络 | 青训营笔记

172 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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

容灾