计算机网络 | 豆包MarsCode AI刷题

156 阅读4分钟

一、打开抖音会发生什么?

1.1、刷视频时,客户端与服务器有哪些协议交互?

从应用层来说:DNSHTTP(图片下载、视频下载、评论)

网络接入

  1. 互联网

image-20241111154916438.png

  1. 路由

路由一定是对称的嘛?

不一定的。

路由工作在哪一层?

动态路由协议工作在传输层,一般是在IP层。

路由就是简单的修改IP地址嘛?

通过IP地址,一步步找下一跳的MAC地址,然后修改MAC地址,找到发包口。

  1. ARP协议

ARP协议,也称作地址解析协议,通过ARP协议找到目标IP的MAC地址。

机器会在局域网内发一个ARP广播请求,目标主机收到之后,回复一个ARP单播应答,里面携带自己的MAC地址。

注意:逻辑同网段才能发送ARP协议。

免费ARP:不用请求就告诉ARP地址。 :ear:

新加入一台机器:告诉别人自己的地址。

新增IP的时候发送:防止IP冲突

ARP代理

劫持包,修改地址。

  1. IP协议

唯一标识,互联网通用。

为什么不能用MAC地址代替IP地址?

MAC地址是两层协议,工作在数据链路层,但是数据链路层不是只有这么一个协议,用MAC没办法统一这一层,所以在上一层统一,也就是使用IP协议。

IPv4地址不够用怎么办? 除了IPv6协议,还可以使用NAT

  1. NAT

局域网内用户使用192.168.,当需要访问外部网络的时候,通过NAT这个口去访问外部网络,相当于多个人共用一个IP地址。

多个内网客户端访问同一个目标地址+ 端口, 源端口恰好一样,是否会冲突?

不会,NAT会同时修改 IP地址端口

网络传输

  1. 数据包

image-20241111163128125.png

image-20241111163155482.png

  1. DNS协议

DNS分为 递归请求, 迭代请求。

客户端发送 www.douyin.com的解析请求。DNS会递归的去问".com" 去哪里解析, 然后问"douyin.com"去哪里。

image-20241111163421011.png

  1. UDP协议
16位源端口号16位目的端口号
16位UDP长度16位UDP校验和
数据(如果有)

怎么保证UDP可靠传输?

需要考虑的东西很多,比如说每次发包发多少?怎么避免分片?怎么知道有没有丢包?怎么权衡传输效率和质量?

  1. TCP协议

拔了网线,TCP连接会断了嘛?

拔掉了,不一定会立刻断掉,因为TCP连接是一个状态,如果TCP有探活机制,即每隔一段时间查看连接是否还在,探活失败就会关闭连接。

三次握手:

重要概念:

sequence number:发送方发送数据的第一位在整个数据流的位置。acknowledge number 期望接收方下一次的sequence number是多少。

SYN/FIN的传输虽然没有data,但是会让下一次传输的seq加一,但是ACK的传输,不会让下一次的seq加一。

  1. TCP传输

image-20241111165355485.png

为什么有Timewait

TCP丢包怎么办

滑动窗口、流量控制、拥塞控制

  1. HTTP/HTTP1.1

为什么不直接用TCP通信?

让开发者专注于业务开发,不用关注协议的具体实现。 其实HTTP只是多加了一层规矩,HTTP依然是TCP,只是这个规矩让用户更清晰。

HTTP1.1 有哪些优化?

  • 长连接
  • 部分传输
  • 缓存
  • ......
  1. HTTPS

传输中被插入小网站怎么办?

使用HTTPS协议,HTTPS只是加密的HTTP协议。

image-20241111170027810.png

image-20241111170226416.png

image-20241111170342824.png

1.2、网络架构怎么给抖音提质

网络提速

  1. HTTP2.0

多图下载,基于多路复用技术。

image-20241111222851497.png

但是队头Stream阻塞,HTTP2就没有那么好了。

image-20241111222601181.png

  1. QUIC/HTTP3.0

传输层用的是UDP,做在用户态,解决TCP队头阻塞的问题。

  1. 数据中心分布(服务器机房分布)。同运营商访问。
  2. 静态资源路径优化。

网络稳定

网络故障排查常用命令:

  • dig查询DNS问题
  • ping/telnet/nmap查询三层/四层连通性
  • Traceroute排查中间链路
  • iptables
  • tcpdump

故障预防:

  • 监控报警
  • 故障演练/预案
  • 故障降级/止损