网络 | 青训营笔记

105 阅读6分钟

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

网络接入

互联网框架:

image-20230119151512426

丢包、卡顿问题一般出现在“最后一公里”,运营商一般不会出现故障

路由

路由工作在IP层,路由不是改IP地址,而是改MAC地址。

路由是为了找目标的路,一旦找到下一跳,是为了告诉二层交换时下一跳往哪个MAC地址发

掩码: 决定子网的范围是多大。如果一个ip在子网掩码以内的,称为同网段。

同网段不仅有直连的方式,更多的方式是交换机/逻辑交换机

image-20230119152119221

同网段不一定接入同一个物理逻辑的交换机,可能是软件定义网络的虚拟的同网段

在同网段下已知目标ip,查询ip的mac地址,然后发送报文

在不同网段:

image-20230119154655240

路由不一定是对称的:

image-20230119154804761

用户A到用户H,出发和返回的路不一定是一条路,但一般是一条路

ARP协议

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

逻辑的同网段才能发送ARP请求,不同网段不能发送ARP。如果是不同网段需要路由器执行下一跳,跳到对应的网段才能发送ARP

ARP请求广播,ARP应答单播

免费ARP:不用请求就告诉ARP地址。常用局域网里新加一台设备,新加的设备通常会发送免费ARP

image-20230119155650396

IP协议

唯一标识,互联网通用。抖音客户端一个、服务端一个

IP协议产生的原因:地址的统一问题,二层协议有很多不兼容的地方,比如有的支持MAC,有的不支持MAC,所以向上又封装了一层,统一用IP地址去标识

IPV4不够用的解决方法:IPV6、net(路由器)

image-20230119160527110

net不仅修改IP,还改端口。解决多个内网客户端访问同一个目标地址+端口,源端口恰好一样的问题

网络传输

image-20230119160729061

数据包:见计算机网络。按层去分的

数据包的发送:

image-20230119160956768

DNS协议:

image-20230119161108361

关注递归迭代,客户端递归请求递归解析器,递归解析器迭代请求DNS服务器

UDP协议

image-20230119161343618

UDP很难用好,比如用UDP实现可靠视频流

TCP协议、HTTP协议、HTTPS协议

重要概念等都在计网,这里不再写

网络架构给抖音做提质

网络提速:HTTP 2.0

最主要的思想:多路复用

image-20230119171630947

多个stream在一个TCP连接通道里面串行访问,看起来像并行访问

image-20230119172629327

QUIC HTTP3.0

image-20230119172745714

使用UDP协议、在用户态实现

网络路径优化:

数据中心分布

image-20230119173134483

POP接入是字节服务器接入运营商的机房

同运营商访问,电信用户接入电信网络等

静态资源(图片视频)路径优化:缓存

image-20230119173351632

动态API(播放/评论接口)路径优化:

image-20230119173450967

网络提速的优化

容灾概念:故障发生、故障感知、自动切换、服务回复

案例一:image-20230119173733281

一般走专线调用,专线不可用调外网容灾

案例二:

image-20230119173912320

A命令,当发现A机房不可用之后,域名解析自动换成B机房的IP

案例三:

image-20230119174118407

云到端:通过SDK主动降级容灾,但是有场景局限性(用户统一)

案例四:

image-20230119174247400

Bug导致Crash,可以做前置兜底(Cache)。本质上是做降级,将上一层的数据返回去

如果没有容灾系统:

故障明确:

  • 什么业务、什么接口故障
  • 故障体现在哪里
  • 访问其他目标是否正常
  • 是否是修改导致的异常

故障止损:先止损再排查

分段排查:

客户端排查、服务端排查、中间链路排查

常见的排查命令:

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

企业接入升级打怪之路

假设一家example公司

域名管理

Host管理: 用一张主机表存储域名解析

image-20230119182213465

使用域名系统替换Host

域名空间:树形结构,划分zone的方式进行分层授权管理,全球公共域名空间仅一棵树。根域名服务器:查询节点

image-20230119182345895

要想拿到域名,首先得在云服务厂商购买域名。

买到域名之后还要域名备案。

example公司可以清除/etc/hosts文件,然后配置/etc/resolv.conf中nameservers为公共DNS迁移原配置,通过控制台添加解析记录即可

开放外部用户访问:

方案:租赁外网ip,专用于外部用户访问门户网站,将www.example.com解析到外网ip上,将改ip绑定到一台物理机上,并发布公网route,用于外部用户访问

自建DNS服务器

目前的问题:

  • 内网域名解析也得出公网获取,效率低下
  • 外网用户能看到内网ip地址,容易被攻击
  • 云厂商权威DNS容易出故障,影响用户体验

未完