这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记
网络路由
同网段路由
多台设备链接到中转设备,或是SDN虚拟网络
跨网段路由
配置默认路由,没有匹配路由则发往默认路由。路由不一定是对称的,发送和回发的路径可能不同。 路由工作在网络层和传输层,路由涉及多层路由的交互。路由会改变mac地址和源ip地址,不改变目的端的ip地址。(BGP、OSPF)
网络接入
ARP协议:逻辑同网段才能发送ARP,跨网段先发ARP找到下一跳的地址,再发ARP。本质上是查找下一跳的路由
IP地址
二层网络兼容问题,地址统一问题。
NAT
多个内网客户端访问同一个端口
DNS
域名映射到IP
-
本地域名服务器LDNS
每个电脑里面都设置了本地DNS服务器(简称LDNS),需要的时候,就向LDNS发出请求,LDNS在网上问权威域名服务器(简称权威DNS)得到答案。
-
权威域名服务器
问我一个域名,我告诉你IP,如果我不知道,我告诉你谁可能知道,你再去问它。 负责对请求作出权威的回答。权威DNS中存储着记录,最常见的3种:A记录(记录某域名和其IP的对应),NS记录(记录某域名和负责解析该域的权威DNS),CNAME记录(负责记录某域名及其别名)。权威能直接回答的,就回A记录;需要其他权威DNS回答的,就回NS记录,然后LDNS再去找其他权威DNS问;如果该记录是别名类型的,就回CNAME,LDNS就会再去解析别名。
-
根域名服务器—根DNS
当LDNS啥都不知道的时候(也即没有任何缓存),就去问根DNS,根能告诉LDNS下一步该问谁。
-
工作流程
- 权威DNS:权威能直接回答的,就回ip;需要其他权威DNS回答的,就回NS记录(记录某域名和负责解析该域的权威DNS),然后LDNS再去找其他权威DNS问;如果该记录是别名类型的,就回CNAME(负责记录某域名及其别名),LDNS就会再去解析别名。
- 递归DNS:通常就是LDNS,它接受终端的域名查询请求,负责在网上问一圈后,将答案返回终端。
TCP
ack:期望下一次对方的seq是多少(+1),期望接受到的下一个package序号
-
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的
-
只有经过三次握手才能确认双发的收发功能都正常,缺一不可:
- 第一次握手(客户端发送 SYN 报文给服务器,服务器接收该报文):客户端什么都不能确认;服务器确认了对方发送正常,自己接收正常
-
第二次握手(服务器响应 SYN 报文给客户端,客户端接收该报文):
客户端确认了:自己发送、接收正常,对方发送、接收正常;
服务器确认了:对方发送正常,自己接收正常
-
第三次握手(客户端发送 ACK 报文给服务器):
客户端确认了:自己发送、接收正常,对方发送、接收正常;
服务器确认了:自己发送、接收正常,对方发送、接收正常。
-
第一次挥手:客户端发送一个 FIN 报文(请求连接终止:FIN = 1),报文中会指定一个序列号 seq = u。并停止再发送数据,主动关闭 TCP 连接。此时客户端处于
FIN_WAIT1状态,等待服务端的确认。-
FIN-WAIT-1- 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
-
-
第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于
CLOSE_WAIT状态。-
CLOSE-WAIT- 等待从本地用户发来的连接中断请求; - 此时的 TCP 处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入
FIN_WAIT2(终止等待 2)状态,等待服务端发出的连接释放报文段。 -
FIN-WAIT-2- 从远程TCP等待连接中断请求;
-
-
第三次挥手:如果服务端也想断开连接了(没有要向客户端发出的数据),和客户端的第一次挥手一样,发送 FIN 报文,且指定一个序列号。此时服务端处于
LAST_ACK的状态,等待客户端的确认。-
LAST-ACK- 等待原来发向远程TCP的连接中断请求的确认;
-
-
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答(ack = w+1),且把服务端的序列值 +1 作为自己 ACK 报文的序号值(seq=u+1),此时客户端处于
TIME_WAIT(时间等待)状态。-
TIME-WAIT- 等待足够的时间以确保远程TCP接收到连接中断请求的确认;
-
Http协议
为什么不直接使用TCP:业务分层
网络结构优化
网络提速——Http2.0
TCP多路复用:对头阻塞——QUIC/Http 3.0
QUIC采用UDP作为传输层协议,减少三次握手时间延迟,采用最新版本TLS 1.3,无需等待TLS握手完成就可以开始程序数据传输,达到快速建立连接的效果。QUIC还引入了stream offset的概念,一个stream可同时传输多个stream offset,通过PN标识数据,等所有PN标识数据达到服务器再进行重组(按照stream offset顺序)
静态资源
CDN网络,路径优化DSA
容灾
主备,切换时要保证备用基站可以附在原基站的流量
- 故障明确:明确故障是由什么原因导致的故障
- 故障止损:保证用户体验,在进行debug
- 分段排查:客户端,服务端,中间链路(dig,ping,traceroute...)