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

45 阅读3分钟

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

1、网络接入

image.png

(1)路由

image.png

image.png

  • 路由一定是对称的吗?
    不一定
  • 路由是哪一层协议?
    网络层
  • 路由是改的IP地址吗?
    路由是改Mac,找到发包口

怎么找到下一跳的MAC地址?

(2)ARP协议

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

  • 逻辑同网段才能发送ARP;
  • ARP请求广播,ARP应答单播

image.png

(3)IP协议

  • 唯一标识,互联网通用。抖音客户端一个,抖音服务端一个;
  • Mac地址不能代替IP地址吗;
  • IPv4不够用,一般怎么解决的

(4)NAT

  • 家里路由器是怎样上网的?
  • 多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了?

image.png

网络打通了怎么视频怎么下载

(5)数据包

  • OSI七层网络模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
  • TCP/IP四层概念模型:应用层、传输层、网络层、数据链路层

image.png

(6)数据包发送

image.png

(7)先请求DNS

  • 客户端发www.douyin.com的解析请求
  • DNS解析器去问".",com.去哪里解析
  • DNS解析器去问"com.",douyin.com去哪里解析
  • douyin.com告诉递归解www.douyin.com解析到xxx

image.png

(8)DNS的传输协议UDP

image.png

(9)TCP三次握手

  • 第一次握手:客户端发送带有SYN标志的数据包到服务端,客户端进入syn_sent状态;
  • 第二次握手:服务端发送带有SYN\ACK标志的数据包到客户端,服务端进入syn_rcvd状态;
  • 第三次握手:客户端发送带有ACK标志的数据包到服务端,连接就进入Established状态

为什么需要三次握手?

为了建立可靠的通信信道,保证客户端与服务端同时具备发送、接收数据的能力。

为什么两次不行?

①防止已失效的请求报文又传送到了服务端,建立了多余的连接,浪费资源;
②两次握手只能保证单向连接是畅通的。(为了实现可靠数据传输,TCP协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中,哪些是已经被对方收到的。三次握手的过程即是通信双方,相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤;如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认)。

(10)TCP传输

image.png

image.png

典型的tcp协议要求每一个数据段发送之后都要有一个ack回复, 然后才能发送下一个数据段。虽然这样能保证数据的可靠传输,但是效率呢?

由于tcp是全双工通信,在等待一个数据段的ack恢复之前网络将会闲置,因此效率将会受到极大影响。

因此协议提出了滑动窗口子协议,专门负责数据的传输,滑动窗口子协议分为简单的停等协议,后退N协议,以及选择重传协议三个子协议,其实三个子协议可以由一个例程表示,只是一个例程的三个不同情况, 比如发送和接收窗口都为1时就是简单的停等协议。三个子协议都很复杂,只有靠这种复杂的机制才换取了网络链路的高效利用。

(11)HTTP/HTTP1.1

HTTP依然是TCP,但这个规矩让用户更清晰、更简洁。

image.png

HTTP1.1有哪些优化?

  • 长连接:减少了建立和关闭连接的消耗和延迟;
  • 缓存:添加更多的缓存控制策略(如:Entity tagIf-Match);
  • HOST:支持Host头域,不再以IP为请求方标志;
  • 网络连接的优化:支持断点续传;
  • 错误状态码增多:新增了24个错误状态响应码