TCP 三次握手、四次挥手和 TIME_WAIT 应该怎样理解?
三次握手让双方同步初始序号并确认双向可达;全双工连接的两个方向独立关闭,因此正常释放常见四个报文;主动关闭方进入 TIME_WAIT,等待旧报文消失并能重发最后 ACK。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
三次握手让双方同步初始序号并确认双向可达;全双工连接的两个方向独立关闭,因此正常释放常见四个报文;主动关闭方进入 TIME_WAIT,等待旧报文消失并能重发最后 ACK。
环境区保存 bootcmd、启动参数等可变配置,CRC 或格式损坏时 U-Boot 通常回退默认环境。冗余环境使用两个副本和有效/序列状态,在掉电更新中选择最后完整版本,但仍需限制写频率和保护安全变量。
广播面向一个二层/子网广播域内所有主机,组播面向加入特定组的接收者并由网络设备按组转发。接收端需在指定接口加入组,发送端还要考虑 TTL、回环和多网卡出口。UDP 本身不保证送达和顺序。
Wait Queue 让任务围绕可重复条件睡眠并由事件唤醒,等待宏会循环检查条件以应对伪唤醒;Completion 表达一次或计数式完成事件,适合等待某项初始化或 I/O 结束。两者都只能在可睡眠上下文等待。
devm 将已注册资源与 struct device 生命周期绑定,probe 失败或设备解绑时按规则自动释放,减少 goto 回滚代码。但业务启动的工作线程、DMA、硬件使能和跨设备引用未必都能靠默认释放顺序安全停止。
initramfs 是内核早期展开到内存的临时根,可加载存储/加密/RAID 依赖、做恢复或选择最终根;最终 rootfs 承载长期用户空间。极简设备也可只用 initramfs,但内容占 RAM 且更新方式不同。
kmalloc 返回物理上连续的小到中等内存并适合多数内核对象;vmalloc 只保证虚拟连续,页表映射开销更大;DMA 必须使用 DMA API 获得设备可访问地址与一致性语义,不能把 CPU 虚拟地址直接给设备。
sysroot 为目标系统提供头文件、启动文件和库的逻辑根。宿主库不能混入目标链接;即使架构相同,也可能因 libc、ABI、浮点 ABI、C++ ABI 或动态加载器路径不匹配而失败。