场景题
输入一个url后到出现页面发生什么?
DNS解析
- 查询浏览器缓存
- 查询操作系统缓存
- 查询路由器缓存/ISP服务器缓存
- 通过递归和迭代两种方式查询dns服务器
TCP连接
- 应用层:HTTP数据(GET/POST)
- 传输层:TCP数据(三次握手、SYN泛洪攻击)
- SYN攻击是伪造tcp头,虚造一个ip,导致服务方永远无法收到ack,半连接状态消耗系统资源,一般可以设置syn timeout或者拒绝大量相同ip访问来避免。
- 网络层:IP头(arp)
- 链路层:以太网首部(广播单播、arp攻击)
- arp攻击:局域网内有大量虚假arp应答
服务器响应
- 协议解析
- 资源发送
浏览器渲染
数据从磁盘到内存全过程?
1、初始化DMA控制器并启动磁盘
2、从磁盘传输一块数据到内存缓冲区
3、DMA控制器发出中断请求
4、执行“DMA结束”中断服务程序
数据从网卡到磁盘全过程?
- 网卡收到数据包
- 将数据包从网卡硬件缓存读入内存(DMA –> skb_buffer)
- 通知内核处理
- NIC触发硬中断,硬中断处理程序会调用驱动程序启动软中断,后续慢慢处理。
- 软中断触发NAPI,循环处理ring_buffer指向的skb_buffer
- 经过TCP/IP协议层逐层处理
- 应用程序通过read()从sockert buffer读取内容
用一段话描述:网卡收到数据包,DMA到内核内存,中断通知内核数据有了,内核按轮次处理消耗数据包,一轮处理完成后,开启硬中断。其核心就是网卡和内核其实是生产和消费模型,网卡生产,内核负责消费,生产者需要通知消费者消费;如果生产过快会产生丢包,如果消费过慢也会产生问题。也就说在高流量压力情况下,只有生产消费优化后,消费能力够快,此生产消费关系才可以正常维持,所以如果物理接口有丢包计数时候,未必是网卡存在问题,也可能是内核消费的太慢。
源代码到运行全过程
- 预处理
- 编译(词法分析,语法分析,中间代码生成,优化)
- 汇编
- 链接
- 生成ELF文件