241125学习日志——[CSDIY] [ByteDance] 后端训练营 [15]
CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!!
第一弹:Cpp零基础学习【30 DAYS 从0到1】
第二弹:Cpp刷题文档【LeetCode】
第三弹:Go开发入门【字节后端青训营】
第四弹:Cpp简单项目开发【黑马Rookie】
第五弹:数据结构绪论【数据结构与算法】
第六弹:Go工程实践【字节后端青训营】
第七弹:高质量编程和性能调优【字节后端青训营】
第八弹:Linux 基础知识【书生大模型训练营】
第九弹:Python 基础知识【书生大模型训练营】
第十弹:Git 基础知识【书生大模型训练营】
第十一弹:玩转HF/魔搭/魔乐社区【书生大模型训练营】
第十二弹:书生大模型全链路开源体系【书生大模型训练营】
第十三弹:玩转书生「多模态对话」与「AI搜索」产品【书生大模型训练营】
第十四弹:浦语提示词工程实践【书生大模型训练营】
第十五弹:HTTP 框架修炼之道【字节后端青训营】
第十六弹:打开抖音会发生什么【字节后端青训营】
课前依赖:
- Linux 操作系统
- Wireshark 软件 (抓包软件)
- Socket 网络编程开发环境
打开抖音互联网会发生什么?
- 带你探索计算机网络
-
协议基础、为什么会产生这些协议
-
协议分析、互联网应用泛解
-
建立更新为:熟悉(精通/了解) TCP/IP 、计算机网络
1. 刷抖音网络是怎么交互的?- 网络接入
- 网络接入
- 网络传输
1.1 网络接入 - 互联网
“最后一公里” “last mile” - 最容易发生丢包等情况
1.2 网络接入 - 路由
掩码、子网、逻辑交换机、直连同网段…
SDN:网络虚拟化
往同网段如何发包/交互?
网关:
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。
- 路由并不一定是对称的
- 路由是工作可以工作在传输层、IP层…
- 路由不是修改IP地址,而是修改MAC地址,找到发包口
1.3 网络接入-ARP 协议
怎么找到下一跳的MAC:ARP 协议
- 逻辑同网段才能发送 ARP
- ARP 请求广播,ARP 应答单播
- 跨网段:只会找到下一跳的 MAC 地址
- 免费 ARP 地址:提高效率、提前判断 IP 错误
- ARP 代理
1.4 网络接入 - IP 协议
双层协议
- 唯一标识,互联网通用。抖音客户端一个。抖音服务端一个
- Mac 地址不能代替 IP 地址吗
- IPv4不够用,怎么解决
1.5 网络接入 - NAT
- 家里路由器是怎样上网的?
- 多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了?
1. 刷抖音网络是怎么交互的?- 网络传输
1.6 网络传输 - 数据包
课后作业:做一次抓包。
- 数据包发送
- 数据包接收
1.7 网络传输 - 先请求 DNS
解析请求…
1.8 网络传输 - DNS 的传输协议 UDP
UDP 本身相对简单,但用好较难
**总结:**想好发什么包,就分配一个UDP的头,把 payload 里面塞数据发出去就好
1.9 网络传输 - TCP 三次握手
什么是 TCP 连接?
传输控制协议(TCP,TransmissionControl Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义 [1]。
TCP旨在适应支持多网络应用的分层协议层次结构,互连的计算机通信网络中成对的应用程序进程之间能够依靠TCP提供可靠的通信服务来传输字节流。TCP支持双向数据流,应用程序也可以仅单向发送数据。在主机之间,TCP使用端口号标识应用程序服务并且可以多路传输数据流。
TCP 三次握手、四次挥手
第一次握手:
客户端将TCP报文标志位SYN置为1,随机产生一个序号值seq=J,保存在TCP首部的序列号(Sequence Number)字段里,指明客户端打算连接的服务器的端口,并将该数据包发送给服务器端,发送完毕后,客户端进入SYN_SENT
状态,等待服务器端确认。第二次握手:
服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将TCP报文标志位SYN和ACK都置为1,ack=J+1,随机产生一个序号值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD
状态。第三次握手:
客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED
状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。注意:我们上面写的ack和ACK,不是同一个概念:
- 小写的ack代表的是头部的确认号Acknowledge number, 缩写ack,是对上一个包的序号进行确认的号,ack=seq+1。
- 大写的ACK,则是我们上面说的TCP首部的标志位,用于标志的TCP包是否对上一个包进行了确认操作,如果确认了,则把ACK标志位设置成1。
sequence number
acknowledge number
1.10 网络传输 - HTTP/HTTP1.1
HTTP 其实依然是 TCP。
HTTP 1.1 有哪些优化?
- 长连接
- 部分传输
- HOST
- 缓存
- …
1.11 网络传输 - HTTPS
SSL/TLS 握手
- 对称加密、非对称加密
- 确保没有劫持,也确保私钥不泄密
2. 网络架构如何给抖音提质 - 网络提速
- 网络提速
- 网络稳定
2.1 网络提速 - HTTP2.0
多图片并行下载
2.2 网络提速 - 多路复用/stream
- 单个 TCP 连接传输
- TCP 丢包
2.3 网络提速 - QUIC/HTTP3.0
- TCP or UDP?
- 必须是 UDP,推广方便
- Kernal or Userspace
- 基于内核的实现?不,基于用户态的实现
- 0 RTT
- 弱网优势
- 解决阻塞问题
2.4 网络提速 - 数据中心分布
核心机房:存储安全信息
边缘机房:小运营商等机房
2.5 网络提速 - 同运营商访问
- 移动访问联通的连接性会比较差
2.6 网络提速 - 静态资源(照片视频)路径优化(CDN)
核心机房 -> 汇聚机房 ->边缘机房
2.7 网络提速 - 动态 API (播放/评论接口)路径优化(DSA)
不同机房之间做延时探测等方法,找到最优路径
2. 网络架构如何给抖音提质 - 网络稳定
2.8 网络稳定 - 容灾概念
故障发生、故障感知、自动切换、服务恢复
2.9 网络稳定 - 故障排查
故障明确、故障止损、分段排查
2.10 网络稳定 - 故障明确
出现什么故障? ->沟通
- 什么业务?什么接口故障?
- 故障体现在哪里?
- 访问其他目标是否正常?
- 是否是修改导致的异常?
2.11 网络稳定 - 故障止损
先止损再排查:
- 用户体验第一
- 对公司收入的影响是按照分钟甚至秒来计算
如何止损?
- 组件没有容灾,但是系统有没有?
- 降级
2.12 网络稳定 - 分段排查
客户端排查
服务端排查
中间链路排查
2.13 网络稳定 - 网络故障排查常用命令
- dig 查询DNS问题
- ping/telnet/nmap 查询三层/四层连通性
- Traceroute 排查中间链路
- iptables
- tcpdump
2.14 网络稳定 - 故障预防很重要
- 监控报警
- 故障演练/预案
- 故障降级/止损
碎碎念:计算机网络相关课程我甚至没有接触过,和科班的差距在这一刻被放大,但我是有办法的,美本的很多学校有蛮多相关课程,得找个时间补上。
原文地址:https://blog.csdn.net/Rain050415/article/details/144018857
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!