探索计算机网络(上) | 青训营笔记

80 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第8天

一、背景

通过本门课程可以收获如下:

  1. 从事其他方向研发 —— 从事网络相关研发
  2. 简历更新(熟悉TCP/IP、计算机网络)
  3. 协议分析(自学)—— 互联网应用泛解
  4. 协议基础/为什么会产生这些协议 image.png

二、本堂课重点内容介绍

  1. 刷抖音网络是怎么交互的?
  2. 刷抖音为什么又快又稳
  3. 总结回顾

三、详细知识点介绍

1. 刷抖音网络是怎么交互的

网络接入

网络传输

image.png

1.1 网络接入

1.1.1 互联网

image.png

1.1.2 路由

image.png

往同网段如何发包/交互?

image.png

  • 路由一定是对称的吗?

image.png

  • 路由是工作在哪一层协议?
  • 那路由是改的 IP 地址吗? 路由是改 MAC,找到发包口

image.png

怎么找到下一跳MAC?

1.1.3 ARP 协议

image.png

  • 逻辑同网段才能发送 ARP
  • ARP请求广播,ARP 应答单播
  • 免费 ARP? ARP 代理?

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

1.1.4 IP 协议

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

1.1.5 NAT

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

image.png

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

1.2 网络传输

1.2.1 数据包发送

image.png

1.2.2 先请求 DNS

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

www.douyin.com 解析到 xxx

image.png

1.2.3 DNS 的传输协议 UDP

  • UDP 本身相对简单

image.png

总结:想发什么包,就分配一个 UDP 的头,把 payload 里面塞数据发出去就好!

  • UDP用好很难

    • 发包每次发多少?怎么避免分片?
    • 怎么知道没丢包?
    • 怎么权衡传输效率和质量?
    • ....

总结:怎么保证协议可靠?

1.2.4 TCP 三次握手

  • 什么是 TCP 连接?

image.png

拔了网线,连接会断吗?

  • 你真的了解 TCP 三次握手吗?

    • Tcpdump + Wireshark

1.2.5 TCP传输

image.png

  • sequence number: 表示的是我方(发送方)这边,这个 packet 的数据部分的第一位应该在整个 data stream 中所在的位置。
  • acknowledge number: 表示的是期望的对方(接收方)的下一次 sequence number 是多少。注意,SYN/FIN 的传输虽然没有 data,但是会让下一次传输的 packet seq 增加一,但是,ACK 的传输,不会让下一次的传输 packet 加一。

提问:

  • 为什么老问你Timewait?
  • 丢包怎么办?
  • 滑动窗口再结合基础概念去理解
  • 流量控制/拥塞控制结合基础概念去理解

image.png

1.2.6 HTTP/HTTP1.1

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

image.png

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

HTTP1.1 有哪些优化?

  • 长连接
  • 部分传输
  • HOST
  • 缓存
  • ....

1.2.7 HTTPS

  • 传输中被插入小网站怎么办?
  • HTTPS 解密出来依然是 HTTP

image.png

1.2.8 SSL/TLS 握手

image.png

对称加密和非对称加密

image.png

确保没有劫持,也确保私钥不泄密

1.3 总结

网络连接协议 ——> 网络传输协议 ——> 愉快的刷抖音