抖音网络交互过程| 青训营
打开抖音互联网会发生什么?
从事其他方向研发 从事网络相关研发
简历更新(熟悉TCP/IP、计算机网络 )
协议分析( 自学 ) 互联网应用泛解
协议基础/为什么会产生这些协议
应用层
域名解析DNS
视频下载/HTTP
图片下载/HTTP
评论API/HTTP
抖音网络交互过程
网络接入
抖音客户端在连接到互联网时,首先需要进行网络接入。这涉及到路由和ARP协议。
路由
路由是在IP层协议中处理的,用于确定数据包应该通过哪条网络路径发送。路由不一定对称,意味着数据包的往返路径可能并不相同。路由的目的是根据目标IP地址找到下一跳的路由器,然后将数据包转发给该路由器。
ARP协议
在数据包发送之前,抖音客户端需要找到下一跳的目标设备的MAC地址,以便正确地将数据包发送到目标设备。为了解决这个问题,使用ARP协议来将目标IP地址解析为对应的MAC地址。ARP请求是广播的,而ARP应答则是单播的。
IP协议
IP协议用于唯一标识互联网上的设备。抖音客户端和抖音服务端分别具有唯一的IP地址。
网络传输
在数据包发送过程中,会先请求DNS,然后利用UDP传输数据。
DNS解析
抖音客户端在发送请求时,需要将域名解析为IP地址,这通过DNS解析来实现。DNS是一个层次化的分布式系统,负责将域名映射到相应的IP地址。DNS请求通常使用UDP协议进行传输。
UDP传输
UDP是一种无连接的传输协议,它使用简单的数据报文形式进行传输。抖音在网络传输中,利用UDP进行数据包的传输。UDP传输快速,但不可靠,因为它不提供重传机制和数据包的确认。
TCP三次握手
如果需要建立可靠的连接,抖音使用TCP协议。在TCP建立连接时,会进行三次握手来确保连接的可靠性。
- 客户端向服务端发送一个请求连接的数据包(SYN包)。
- 服务端收到请求后回复客户端一个同意连接的数据包,并且自己也发送一个请求连接的数据包(SYN+ACK包)。
- 客户端收到服务端的回复后,再回复一个确认连接的数据包(ACK包),连接建立完成。
HTTP协议
其实HTTP只是多加了一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰/更简洁.
HTTP1.1哪些优化 ?
长连接 中文/TCP 部分传输 HOST 缓存
HTTPS解密出来依然是HTTP
SSL/TLS 握手
对称加密和非对称加密
网络架构优化方向
为了提高抖音的网络质量,可以考虑以下优化方向:
网络提速
- 使用HTTP/2.0:HTTP/2.0支持多路复用,能够更高效地传输数据,从而减少延迟和提高性能。
- QUIC/HTTP3.0:QUIC是基于UDP的传输协议,具有0 RTT(往返时间为0)的特性,适用于弱网环境下的优势。
网络稳定
- 容灾:建立故障感知和自动切换机制,当发生故障时能够及时切换到备用网络,确保服务的连续性。
- 故障排查:建立有效的故障排查流程,使用dig、ping、telnet、traceroute等命令来诊断网络问题。
网络故障排查是网络相关研发和运维工作中非常重要的一环。以下是常用的网络故障排查命令:
-
dig
: 用于查询DNS问题,可以查找域名对应的IP地址、解析的详细过程和结果。例如:dig www.example.com
-
ping
: 用于测试主机之间的连通性,通过发送ICMP回显请求(ping包)来检查目标主机是否可达。例如:ping www.google.com
-
telnet
: 用于测试主机之间的TCP连接,可以检查指定端口是否开放。例如:telnet www.example.com 80
-
nmap
: 用于网络探测和安全扫描,可以扫描指定主机的端口开放情况。例如:nmap www.example.com
-
traceroute
: 用于跟踪数据包在网络中的路径,显示数据包经过的路由器和节点。例如:traceroute www.example.com
-
iptables
: 用于配置Linux系统的防火墙规则,可以通过配置iptables规则来控制网络流量。例如:iptables -L
-
tcpdump
: 用于抓取和分析网络数据包,可以查看数据包的内容和流量。例如:tcpdump -i eth0