这是我参与 [第三届青训营 -后端场]笔记创作活动的第2篇笔记
网络大纲
网络接入协议
Mac地址: 主机的地址,全球唯一
路由协议: 管理路由器之间的数据传输(路由器所属网络)
ARP: 用于将ip地址转为私网内可以指定测mac地址
IP协议: 网络中主机互相通信,所确定的唯一地址
NAT: 网络 地址 转换 发送时将主机ip换成私网ip,反之则反之
网络传输协议
- DNS: Domain Name System 域名系统(dns resolver)
- UDP: User Datagram Protocol 用户数据报 协议
- TCP: Transmission Control Protocol 传输控制协议
- HTTP: HyperText Transfer Protocol 超文本传输协议, 用于超文本标记语言的传输,是客户端和服务器的数据传输格式标准
- HTTPS: http+ssl/tls加密 目的: 提供对网站服务器的身份验证(谁都能申请,免费)
- HTTP2.0: 压缩http头
- QUIC:Quick UDP Internet Connections
问题
- 按照TCP/IP模型,数据包的拆包/封包
- TCP拥塞算法有哪些?
- 熟练掌握Socket编程?
- golang下net相关库的代码
- 了解 Linux kernel的网络包从收到包到用户态, 从用户态发包到网卡的整个流程?wsm
为什么会产生这些协议/协议基础
简历更新 (熟悉TCP/IP ,计算机网络)
互联网应用泛解
视频/图片 泛http
评论api 泛http
抖音网络如何交互
-
网络接入: 大服务 一般是会和运营商接通的
-
最后一公里
-
同网段:ip在子网范围内
-
集线器/交换机(用) 同网段主机交互
-
sdn: 同网段不一定接入一个物理交换机(虚拟化)
-
mac:overlap
-
优先匹配(精细)
-
路由一定对称?
- 不是的
-
路由工作在哪一层?
- 网络层/数据链路层 ip层
- bgp/ospf:传输层的协议:基于tcp,的\udp做的
-
路由是改IP地址的咩?
- 改mac地址
- 目标IP地址一直不变
- 路由是为了找中间的路(根据下一跳找到下一个mac地址)
-
下一跳怎么来的?
- bgp ospf
-
发包要指定网卡,why?
- 找到下一跳的目标的话,就会找到网卡(初始化)
-
知道ip怎么找到mac地址?
- arp: 发送请求看谁响应了,arp只有逻辑同网段才能使用
- 找到下一跳, 广播发arp,目标mac应答(单播) 找到mac地址
- 免费arp:新增主机主动发送arp:告诉别人新增了机器,防止ip冲突
- ipv6.grp:防止同一局域网有两个ip地址
- arp代理:交换机劫持arp请求,发到代理指定位置,用于sdn(software define network).
-
-
mac地址为什么不能代替IP地址?
- mac地址没有层级
- 不好做路由表
- 有些二层协议,不支持mac协议,用ip地址就可以统一了.
-
ipv4不够用,一般怎么解决?
-
NAT
-
多个内网客户访问同一个目标地址+端口,源端口恰好一样,冲突/
- nat 协议改协议和端口(源)
-
-
数据报发送
- 流程(已会)
-
DNS
-
递归迭代:
-
递归解析器
->递归解析器去问 "."(根服务器) , com.去哪里解析
->递归解析器问"com."(顶级域服务器), douyin.com 去哪里解析
->douyin.com告诉递归解 www.douyin.com 解析到xxx(IP地址)
-
-
-
-
网络传输
-
UDP
-
DNS的传输协议udp
-
udp避免分片,每次发多少?
- IP层 mtu:1500字节
-
怎么知道没丢包?
-
怎么权衡传输效率和质量?
-
-
TCP
-
what? 保持一个tcp连接状态
-
拔了网线,tcp连接会断吗? 拔了网线,看tcp的探活,如果探到网线断了,就停止主机状态.
-
tcp三次握手?
-
tcp用什么字段避免分片? mss(在tcp三次握手使用,确认mss)
-
三次握手,tcp option中的mss中的最小值,时间戳在三次握手时也会进行交互. 抓一次tcp的包,看一下作用
-
三次握手,ack为什么要加一?
- 确定流程执行顺序(确定对方的sequence加1)
-
-
tcp传输
-
为什么老问timewait?
-
为什么timewait要有两个msl?
- 确保连接正常关闭,防止前一次的ack丢失.
-
timewait 字段
- timewait_recycle:不等timewait直接用了
- timewait_reuse:一样
- timewait:太多端口,等得太多.端口不够用
-
-
丢包怎么办?
- ack机制
-
结合sequence,ack 理解滑动窗口,流量控制/拥塞控制?
-
为什么不直接用tcp,而要再用http呢?
- 兼容协议,tcp负责内容已经很多了
- http: 多了一些规矩,简化开发流程(可以想想用tcp编程)
- http跟tcp关系: 解放军军事专用语和中文的关系
-
-
https
-
https解析出来仍然是http
-
对称加密
- 加密算法本身写死
-
非对称加密
- 加密算法本身未写死(黑盒)
- 第三方ca机构: 决定加密算法本身(黑盒)
-
-
-
抖音为什么又快又稳
-
网络提速(协议优化)
-
http2.0:多路复用(很多图片一起下载)
-
tcp连接通道里有多个stream(stream是串行的)
-
发生丢包:
- 队头堵塞
-
tcp有个option可以解决(asack)
-
-
quic/http3.0
-
udp(好推广) tcp(改了,操作系统难改)
-
kernal(内核态) or 用户态(√ 好推广)
-
0 RTT
-
弱网传输
- tcp有丢包(弱网),会队头堵塞
- udp不会
-
-
-
网络路径优化(本来要走1万米,通过优化路径,最后走了4000米)
-
cdn(content delivery network) dsa(Dynamic site accelerator)
-
数据中心:服务器集合的地方(公司机房)
- 核心机房: 用户核心数据
- pop点接入: 增加跟互联网交互的出入口
- 边缘机房:对小运营商
-
同运营商访问:
- 手机运营商:移动的,就访问移动机房(中国三大运营商之间通讯访问较差,通过域名解析实现)
-
CDN(针对静态资源/一般是不变的,不随请求改变而改变)
- 在边缘机房先缓存,如果有就不找了, 汇聚机房再找,再去核心机房找
-
DSA(针对动态资源/)
- 探测,拓扑,形成表,最后找到最优路径
-
-
网络稳定
-
容灾概念
- 故障发生
- 故障感知:系统知道
- 自动切换:将有问题的系统从容灾系统中去掉
- 服务恢复
-