打开抖音互联网会发生什么?| 豆包MarsCode AI刷题

146 阅读7分钟

刷抖音时网络是怎么交互的?

网络接入

  • 网络接入互联网——前提要保证,手机可以连接到抖音服务器

b7035dbf-2e2c-464e-82ad-7e34e9908c62.png

  • 物理上的联通

98fecb3d-6c7e-4bf1-bf5a-f021586590f1.png

通常情况下抖音服务器会与运营商的服务器是相通的
在国际上,一般是通过海底光缆等方式进行连接
这样,整个互联网也就连通了

  • 逻辑上的联通

同网段如何发包、交互?

在同网段通信时,数据包中的地址就是源IP,目标IP,源MAC,目标MAC,而当需要把数据包发到其它网络时,目标MAC就必须改变了,在还没有出内网时,目标MAC必须写成网关的MAC地址发出去,当网关收到时,再把目标MAC地址改成下一跳的MAC地址发出去,而源IP和源MAC以及目标IP不曾改变,就算到达了公网上,目标MAC仍然在不断改变着,直到最后,这个数据包到达目标IP的网络,最终通信结束。

b3fe3a60-057a-4171-adb8-f098658f38a1.png

现在在同网段,可能会有多台服务器或终端设备,一般流行采用三层交换机的方式,分配IP地址进行连接

路由一定是对称的么?

路由是工作在哪一层协议?

那路由是改的IP地址吗?

image.png

路由不一定是对称的,可以对称,也可以不对称。
按教学课本上,归属于网络层
不是改IP地址,是改MAC地址。目标IP地址是一直不变的,改的是目标MAC地址。
路由是改MAC地址,找到发包口。

补充:

网络层的功能:定义了基于IP协议的逻辑地址 、 连接不同得媒介类型 、 选择数据通过网络得最佳路径

怎么找MAC地址?——ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

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

  • 逻辑同网段才能发送ARP,跨网段的话,会一级一级的跳,直到找到。
  • ARP请求广播,ARP应答单播

免费ARP

  • 把实时的ip和mac变更消息第一时间通告到全网,及时的更新全网的ARP表项
  • 免费ARP也作用于避免地址冲突检测,提前预测。

ARP代理? —— 类似网络代理,vpn代理等,发生劫持,另一终端回应,虚拟网路用的到

代理ARP是ARP协议的一个变种。对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。

IP协议—— Internet Protocol(网际互连协议)

image.png

唯一标识,互联网通用。

Mac地址不能代表IP地址吗?

  • MAC层位于OSI七层协议中数据链路层,mac地址是以太网链路寻址的解决方案。
  • 历史遗留问题,向下兼容,在IP层封装。

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

  • IPv6
  • NAT——不支持IPV6

网络接入-NAT

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

用端口识别不同的主机。 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

image.png

网络打通后,视频是怎么下载的?

网络传输

网络传输——数据包

image.png

网络传输——数据包发送

image.png

网络传输——先请求DNS

image.png

网络传输-DNS的传输协议——基于UDP

UDP本身相对简单,但是想用好UDP很难。比如说需要可靠的传输视频流:

需要考虑:

发包每次发多少?怎么避免分片?
(MTU, (最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小),有限制,就需要分片)
怎么知道没丢包?
怎么权衡传输效率和质量?

如果使用UDP协议,就相当于手动实现一次TCP协议,这个是比较困难的,需要考虑所有的问题情况。

网络传输-TCP 三次握手

拔了网线,连接会断吗?

不会马上断掉。在需要长连接的网络通信程序中,经常需要心跳检测机制,来实现检测对方是否在线或者维持网络连接的需要。这一机制是在应用层实现的,对应的,在TCP协议中,也有类似的机制,就是TCP保活机制。

为了确认双方各自的接收和发送能力是否正常(服务端需要确认服务端和客户端、客户端也需要确认服务端和客户端的收发能力)

第一次握手:客户端给服务器端发送一个SYN报文;
第二次握手:服务器收到SYN报文之后,会应答一个SYN+ACK报文。
第三次握手:客户端收到SYN+ACK报文之后,会回应一个ACK报文。
服务器收到ACK报文之后,三次握手建立完成。

image.png

保证可靠传输: 确认应答机制、超时重传机制、流量控制机制、拥塞控制机制

网络传输-TCP传输

为什么老问你Timewait?

确保连接正常关闭。 防止新的连接建立异常。 Timewait需要等待MSL。MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

丢包怎么办? 重传,有ACK机制。

image.png

网络传输-HTTP/HTTP1.1

为什么不直接用TCP通信呢? 为什么互联网上那么多用HTTP通信?

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

HTTP1.1哪些优化?
长连接,不用每次发送请求都需要建立一个TCP连接 部分传输 HOST 缓存

网络传输-HTTPS

公钥和私钥,加密传输,有证书认证合法性

HTTPS解密出来仍然是HTTP

image.png

网络传输-SSL/TLS握手

SSL(Secure Sockets Layer)协议既安全套接字层协议,TLS(Transport Layer Security)协议即安全传输层协议。

HTTPS、SSL与TLS的关系:
SSL严格意义上将SSL是介于网络层协议和应用层协议之间的一种协议层。通过与HTTP协议搭配产生了HTTPS协议,您可以理解为HTTP+SSL=HTTPS(阅读下文您将理解为什么网络专家要这么设计)。现如今SSL经过三代更新,在SSLv3.0之后正式更名为TLS1.0。也可以理解为TLS1.0实际上是SSLv3.1。

TLS的设计原理与SSLv3相同(握手流程及数据传输流程相同),但二者最明显的区别就是它们所支持的加密算法不同,这也造成了TLS和SSLv3不可相互操作。

工作流程:

image.png

总结——可以打开手机,愉快的刷抖音了

image.png