这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
路由
路由是不是对称的?
不是对称的
路由是改IP地址吗?
路由是改MAC地址,发包过程中,源IP地址和目的IP地址是不会变得,每经过一个设备MAC地址会更改
ARP
ARP请求只能在同网段,ARP 请求的作用是请求MAC地址
ARP的本质是请求下一跳的MAC,而不是请求目标地址的MAC
免费ARP
使用的场景:
- 局域网加一台机器,此机器主动发送免费APR,告诉局域网中其他机器自己的MAC地址
- 新增一个IP后,会主动发送一个免费ARP,检测IP地址是否冲突
ARP代理
劫持一个ARP请求,并发送往另一个地方
IP协议
MAC地址为什么不能替代IP地址?
MAC地址位于网络协议的数据链路层,而数据链路层有许多协议,不一定都会有MAC地址,那么为了向下兼容这些协议,就在网络层定义了IP地址,进行封装。
IPv4不够用怎么办?
NAT转换
NAT只改了IP地址吗?多个内网客户端访问同一个IP地址+端口,不就冲突了吗?
不是,NAT是改了IP地址和端口,不会冲突
网络传输
网络数据包模型
数据包发送
DNS请求
DNS的实现是UDP协议
客户端向本地域名服务器查询是递归查询,本地域名服务器向根域名服务器请求是迭代查询
TCP协议
如果把网线拔了,TCP会不会断开?
需要看具体的场景有没有TCP的保活机制,如果有TCP的保活机制,那么如果一端没有响应,另一端会发送探测报文,在一段时间后,才会断开TCP连接;如果没有这个机制的话,就会直接断开。
TCP三次握手中的MSS
MSS: (Maximum Segment Size) 最大报文段长度,是TCP数据包每次能够传输的最大数据分段。
为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值(1500字节)代替(需要减去IP数据包包头的大小20字节和TCP数据段的包头20字节)所以一般MSS值1460字节
通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
Seq和ACK
seq是发送方的序号,ack是期望对方下一次发送的序号
SYN/FIN请求 虽然没有数据data,但是会让下一次传输的seq加一,ACK回复则不会
HTTP
为什么不直接用TCP通信呢?
因为TCP过于复杂, HTTP对于开发更为简单,对于用户更简洁
HTTP1.1优化?
增加了长连接的机制、缓存、部分传输、HOST
HTTPS加密
HTTPS使用非对称加密+对称加密的方式
HTTP2.0优化?
多路复用:在一个TCP连接里面,多个HTTP请求都可以复用这个连接
多路复用的缺点:队头阻塞,意思是如果某个数据包丢失,剩下的数据包都要等到这个数据包重传才能继续发送
网络提速
静态资源:cdn缓存
动态资源:路径优化