打卡抖音互联网会发生什么? | 青训营笔记

309 阅读9分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第7篇笔记

一、 本堂课重点内容

1. 刷抖音网络是如何交互的

2. 刷抖音为什么又快又稳

二、 详细知识点介绍

2.1 网络接入-互联网

image.png

2.2 路由

路由位于网络层,路由不更改IP地址,是改的Mac,找到发包口

路由不一定是对称的:目前绝大多数的路由器都是非对称型NAT(Cone NAT),所以P2P技术才能正常使用。 对称/非对称的区别主要在于:网关设备在实现NAT时,对于内网某主机的若干个UDP连接请求,网关设备对应地在外网上所建立的UDP端口数量。对称NAT是一个请求对应一个端口,非对称NAT是多个请求对应一个端口(象锥形,所以叫Cone NAT)。

2.3 网络接入

ARP协议:

逻辑同网段才能发送ARP

ARP请求广播,ARP应答单播

ARP本质上是查找下一跳的MAC,不是请求目标地址!

IP协议:

唯一标识,互联网通用。抖音客户端一个,抖音服务端一个。

Mac地址不能代替IP地址吗?因为MAC地址有唯一性,是分散的计算机地址,所以更不适合代替IP地址使用

IPv4不够用,一般怎么解决的?

使用 NAT 机制:把 IP 分为 外网 IP 和 内网 IP,用一个 外网 IP 代替 N 个内网 IP。就好比网上购物,收货地址填写学校,而学校里有很多人,每个人用姓名和手机号区分。

而进入内网IP后则是使用端口号区分。

2.4 网络传输

2.4.1数据包发送:

image.png 2.4.2先请求DNS

image.png 客户端发www.douyin.com的解析请求

递归解析器去问.”,com.去哪里解析

递归解析器去问"com.”,douyin.com去哪里解析

douyin..com告诉递归解,解析到xxx

2.4.3 DNS的传输协议UDP

image.png UDP本身相对简单,想发什么包就分配一个UDP的头,把payload里面塞数据发出去就好。

2.4.4 TCP三次握手

image.png sequence number:表示的是我方(发送方)这边,这个packet的数据部分的第一位应

该在整个data stream中所在的位置。

acknowledge number:表示的是期望的对方(接收方)的下次sequence number是多少。

注意,SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seq.增加一,但

是,ACK的传输,不会让下一次的传输packet加一。

2.4.5 TCP传输 image.png 典型的TCP协议要求每一个数据段发送之后都要有一个ACK回复,然后才能发送下一个数据段,这样能保证数据的可靠传输,但是TCP是全双工通信,在等待一个数据段的ACK恢复之前网络将会闲置,因此效率将会受到极大影响,因此协议提出了滑动窗口协议,专门负责数据的传输,滑动窗口子协议分为简单的停-等协议,后退N协议,以及选择重传协议三个子子协议,其实三个子子协议可以由一个例程表示,只是一个例程的三个不同情况,比如发送和接受窗口都为1时就是最简单的停等协议,三个子子协议都很复杂,只有靠这种复杂的机制才换取了网络链路的高效利用

2.4.6 HTTP/HTTP1

为什么不直接用TCP通信呢?

其实HTTP只是多加了一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰/更简洁。

HTTP1.1哪些优化?

1.使用长对话模式:之前每次请求响应都需要建立TCP/IP连接,资源消耗较大,使用长对话可以一次连接多次请求响应

 2.管道传输:之前http1.0发送一个请求后必须等待结果才能发送第二个请求,而http1.0在发送完请求后可以接着发送第二次请求,最后只要把响应的结果按顺序对应即可。

2.4.7 SSL-TLS握手 image.png

形象比喻:

我们假设A与B通信,A是SSL客户端,B是SSL服务器端,加密后的消息放在方括号[]里,以突出明文消息的区别。双方的处理动作的说明用圆括号()括起。

A:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。

B:我们用DES-RSA-SHA这对组合好了。

这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份(把证书发给A)。

目前没有别的可说的了。

A:(查看证书上B的名字是否无误,并通过手头早已有的CA的证书验证了B的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了B的公钥的真实性)

(产生一份秘密消息,这份秘密消息处理后将用作加密密钥,加密初始化向量(IV)和hmac的密钥。将这份秘密消息-协议中称为per_master_secret-用B的公钥加密,封装成称作ClientKeyExchange的消息。由于用了B的公钥,保证了第三方无法窃听)

我生成了一份秘密消息,并用你的公钥加密了,给你(把ClientKeyExchange发给B)

注意,下面我就要用加密的办法给你发消息了!

(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥)

[我说完了]

B:(用自己的私钥将ClientKeyExchange中的秘密消息解密出来,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了)

注意,我也要开始用加密的办法给你发消息了!

[我说完了]

A: [我的秘密是…]

B: [其它人不会听到的…]

2.5 网络架构怎么给抖音提质

2.5.1 网络提速-HTTP2.0

http2性能提升的核心就在于二进制分帧层。HTTP2采用的是二进制协议,它采用二进制格式传输数据而不是文本格式。2.0把响应划分为两个帧,HEADERS和DATA,也就是说一条HTTP响应划分成两个帧来传输,并且采用二进制编码。多路复用允许同时通过单一的 HTTP2.0 连接发起多重的请求 - 响应消息。HTTP2让所有的通信都在一个TCP连接上完成,真正的实现了请求的并发。

2.5.2 QUIC/HTTP3.0

QUIC:QUIC很好地解决了当今传输层和应用层面临的各种需求,包括处理更多的连接,安全性,和低延迟。QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输。QUIC的一个主要目标就是减少连接延迟,当客户端第一次连接服务器时,QUIC只需要1RTT(Round-Trip Time)的延迟就可以建立可靠安全的连接,相对于TCP+TLS的1-3次RTT要更加快捷。之后客户端可以在本地缓存加密的认证信息,再次与服务器建立连接时可以实现0-RTT的连接建立延迟。QUIC同时复用了HTTP/2协议的多路复用功能(Multiplexing),但由于QUIC基于UDP所以避免了HTTP/2的队头阻塞(Head-of-Line Blocking)问题。因为QUIC基于UDP,运行在用户域而不是系统内核,使得QUIC协议可以快速的更新和部署,从而很好地解决了TCP协议部署及更新的困难

2.5.3 数据中心分布

image.png 2.5.4 同运营商访问

image.png 2.5.5 静态资源(图片视频)路径优化(CDN)

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

2.5.6 路径优化(DSA)

2.6 网络稳定

2.6.1容灾概念:通过一些技术手段的部署,达到出现"意外"的时候,业务不会中断或者中断后会自动恢复(注意要自动,而且恢复时间很短)。

2.6.2故障明确:

什么业务?什么接口故障?

故障体现在哪里?

访问其他目标是否正常?

是否是修改导致的异常?

2.6.3 分段排查:

客户端排查:客户端访问其他服务没问题吗?其他客户瑞方问目标服务没问题吗?

服务端排查:服务端监控指标都正常吗?手动方问一下正常吗?分组件排查

中间链路排查:服务端跟客户端确保都没问题。中间网络设备有没有问题?(交换机/路由器/网关LB)。旁路的DNS有没有问题?

2.6.4 网络故障排查常用命令

dig查询DNS问题

ping/telnet/nmap查询三层/四层连通性

Traceroute排查中间链路

iptabels

tcpdump

2.6.5案例:

案例一: image.png 客户端异常->服务端自测正常->网关转发异常->健康检查异常

案例二: image.png 个别用户报故障,生产环境大多是客户端的问题

案例三: image.png 安徽电信报障某APP无法使用->检测后端服务正常,安徽电信流量突降->安徽电信客户端ping不通目标服务->电缆被挖断

案例四: image.png 某APP故障->后瑞服务器反馈服务正常->网络转发设备异常->抓包->路由不对称

2.6.6 故障预防

监控报警

故障演练预案

故障降级/止损

三、 课后个人总结

本堂课主要介绍了实际项目实现的相关技术流程。以及故障排查和对于意外的预防

四、 引用参考

[1]zhuanlan.zhihu.com/p/379580156

[2]www.jianshu.com/p/15754b4e9…

[3]blog.csdn.net/achenwenpin…

[4]baijiahao.baidu.com/s?id=172786…