软件设计师考试中,计算机网络与网络安全是重要的基础知识模块,尤其对从事网络与信息安全软件开发的考生而言,这部分内容更是重中之重。以下整理核心知识点,帮助系统复习。
一、计算机网络基础
1. OSI七层模型与TCP/IP四层模型
- OSI七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。需掌握各层核心功能与典型协议/设备。
- TCP/IP四层:网络接口层、网际层、传输层、应用层。这是当前互联网的实际标准,需重点理解其与OSI的对应关系。
- 核心协议:
- 网络层:IP、ICMP、ARP、RARP。理解IP地址分类(A/B/C/D/E)、子网划分与CIDR无类域间路由。
- 传输层:TCP与UDP。掌握TCP的三次握手/四次挥手、滑动窗口、流量控制、拥塞控制机制;理解UDP无连接、不可靠但高效的特点及适用场景。
- 应用层:HTTP/HTTPS、FTP、SMTP/POP3、DNS、DHCP等。重点掌握HTTP状态码、HTTPS的SSL/TLS加密流程、DNS解析过程。
2. 网络设备与拓扑
- 设备功能:中继器、集线器(物理层);交换机(数据链路层,基于MAC地址);路由器(网络层,基于IP地址)。
- 常见网络拓扑:星型、总线型、环型、网状及其优缺点。
- IP地址与子网掩码计算是常考题型,务必熟练。
二、网络安全基础
1. 安全目标(CIA三元组)
- 保密性:信息不泄露给未授权实体。技术:加密。
- 完整性:信息在传输/存储过程中不被篡改。技术:散列函数(如MD5、SHA)、数字签名。
- 可用性:授权实体能正常访问资源。威胁:拒绝服务攻击(DoS/DDoS)。
2. 密码学基础
- 对称加密:加密解密使用同一密钥,速度快,适合大数据量。算法:DES、3DES、AES。关键问题:密钥分发与管理。
- 非对称加密:公钥加密,私钥解密(或反之),用于密钥交换与数字签名。算法:RSA、ECC。
- 散列函数:单向不可逆,生成固定长度摘要。用于验证完整性。算法:MD5(已不安全)、SHA系列。
- 数字签名:发送方用私钥对摘要加密,接收方用公钥验证,实现身份认证与不可否认性。
- 数字证书与PKI:由可信CA签发,绑定公钥与身份信息,构成公钥基础设施(PKI)。
3. 网络攻击与防护
- 常见攻击类型:
- 窃听/嗅探(保密性)→ 使用加密。
- 篡改(完整性)→ 使用散列校验或数字签名。
- 伪装(身份认证)→ 使用数字证书、双因素认证。
- 拒绝服务(可用性)→ 使用流量清洗、负载均衡。
- 特定攻击:SQL注入、XSS跨站脚本、CSRF跨站请求伪造、中间人攻击等。
- 防护设备与技术:
- 防火墙:包过滤、状态检测、应用代理。部署方式:包过滤路由器、双宿主机、屏蔽子网(DMZ)。
- 入侵检测/防御系统(IDS/IPS):基于特征或异常检测。
- VPN:通过隧道技术在公网建立安全私有连接,常用协议IPSec、SSL VPN。
三、网络与信息安全软件开发要点
对于软件设计师,不仅要懂原理,更要能应用于开发:
1. 安全编程实践
- 输入验证与过滤:对所有用户输入进行严格校验,防止注入攻击。
- 安全的数据处理:使用参数化查询防SQL注入;对输出进行编码防XSS。
- 会话管理:使用安全的会话ID、设置合理超时、防止会话固定攻击。
- 错误处理:避免向用户泄露系统敏感信息(如堆栈跟踪)。
- 密码存储:不应明文存储,应使用加盐的强散列函数(如bcrypt)。
2. 网络通信安全实现
- 使用TLS/SSL确保传输层安全(如HTTPS)。在代码中调用成熟的库(如OpenSSL),避免自己实现加密算法。
- 对敏感数据实施端到端加密。
- 实现安全的API接口,使用令牌(如JWT)进行认证与授权,并设计合理的访问控制。
3. 安全开发生命周期(SDL)
- 将安全考虑集成到软件开发的各个阶段:需求分析、设计、编码、测试、部署与维护。
- 进行威胁建模,识别潜在威胁并制定缓解措施。
- 定期进行代码安全审计与渗透测试。
四、应试与
- 考试重点:TCP/IP协议栈、IP地址计算、加密算法特点与应用场景、常见网络攻击原理与防御、防火墙/VPN等安全技术。
- 学习建议:结合图表理解协议交互过程(如TCP连接、SSL握手);通过对比记忆(如TCP vs UDP, 对称 vs 非对称加密);联系实际开发场景理解安全编程原则。
- 对于开发者:网络安全不仅是运维的职责,更是开发者的必修课。在软件开发中,从设计之初就融入安全思维,是构建可靠、可信软件系统的基石。
掌握以上核心知识,不仅能应对软件设计师考试,更能为从事网络与信息安全领域的软件开发工作打下坚实基础。