
计算机网络面试常见知识点总结笔记
5星
- 浏览量: 0
- 大小:None
- 文件类型:MD
简介:
这份总结笔记包含了计算机网络面试中常见的核心知识点,旨在帮助求职者全面复习和准备相关技术问题,提高面试通过率。
### 计算机网络面试知识点详解
#### 一、网络包接收流程
##### 网络包接收原理
网络包的接收涉及多个层次的技术细节,包括底层硬件与操作系统的交互以及不同协议间的协作。
- **硬件中断**: 当数据包到达网卡时,网卡通过DMA技术直接将数据写入Ring Buffer。随后,网卡向CPU发起硬件中断通知操作系统有新的数据包到来。为避免频繁的中断影响CPU性能,系统采取了多种优化措施。
- **NAPI机制**: Linux内核2.6版本引入了NAPI(New API)机制,这是一种结合中断和轮询的方法。其核心思想是在接收数据时首先通过中断唤醒处理程序,然后通过轮询方式处理数据包以减少不必要的中断并提高CPU利用率。
- **数据包处理流程**:
- 数据包到达网卡并通过DMA技术写入Ring Buffer。
- 网卡向CPU发起硬件中断。
- CPU调用注册的中断处理函数。
- 屏蔽中断,防止在此期间重复发生中断。
- 发起软中断。
- 软中断处理:
1. `ksoftirqd`线程负责处理软中断请求;
2. 数据帧从Ring Buffer中获取,并封装为`sk_buff`结构;
3. 然后数据包进入协议栈逐层解析:
- **网络接口层**: 检查数据帧的有效性,去除头尾信息并识别IP版本。
- **网络层**: 验证IP地址正确性,根据传输层协议(如TCP或UDP)进行处理。
- **传输层**: 根据五元组(源IP、源端口、目标IP及目标端口)定位对应的Socket,并将数据放入接收缓冲区。
- **应用层**: 应用程序调用Socket接口获取数据。
- **应答过程**:发送过程与上述流程类似,从应用程序开始经传输层和网络层直至物理层完成。
#### 二、HTTP协议详解
##### 2.1 TCP粘包问题
TCP粘包是指在接收端看来连续的数据包似乎“黏”在一起了,导致难以区分各个数据包的边界。解决此问题的方法包括:
- **固定长度消息**: 每个消息规定一个固定的长度,但这种方法缺乏灵活性。
- **特殊字符分隔**: 使用特定字符作为消息之间的分隔符,在遇到该字符时需要进行转义处理以避免混淆。
- **自定义消息结构**: 在每个消息前添加表示其长度的字段,这样接收端就能根据这个信息准确地读取数据。
##### 2.2 HTTP与TCP的Keep-Alive机制
- **HTTP Keep-Alive**: 又称长连接,由应用程序层面实现。它允许客户端和服务端之间保持一个TCP连接用于发送和接受多个请求响应,从而减少建立和关闭链接的成本。
- **TCP Keep-Alive**: 内核级别的保活机制,在长时间无数据交互时内核会发送探测包来检查链路是否仍有效。
这些知识点涵盖了从硬件到操作系统再到协议栈的多层次技术细节。理解网络包接收流程及HTTP中的粘包问题与Keep-Alive机制对于深入掌握计算机网络原理和设计高效的应用程序至关重要。
全部评论 (0)


