软考网络工程师备考考点讲解(一):计算机网络基础与OSI模型

一、计算机网络的基本概念

1. 什么是计算机网络

计算机网络是指由多个计算机系统通过通信设备和线路互相连接而成的集合,目的是实现资源共享和信息交换。网络中的每个节点可以是计算机、服务器、路由器、交换机等,数据可以通过这些节点传输。

2. 计算机网络的功能

计算机网络具有如下主要功能:

  • 资源共享:硬件设备、软件资源、数据资源可以通过网络在不同的计算机之间共享。
  • 提高可靠性:通过冗余设备和连接,提升系统的可靠性和容错性。
  • 分布式处理:利用网络中的多台计算机协同工作来提高处理能力。
  • 通信功能:实现数据的传输和共享,支持不同的通信协议,如TCP/IP、HTTP等。

3. 计算机网络的分类

计算机网络根据不同的分类标准可以分为:

  • 按网络覆盖范围分类
  • 局域网(LAN):覆盖范围小,通常在一个建筑物或小区域内。
  • 城域网(MAN):覆盖城市范围。
  • 广域网(WAN):覆盖范围较大,通常包括多个城市或国家。
  • 按传输介质分类
  • 有线网络:如双绞线、光纤。
  • 无线网络:如Wi-Fi、蓝牙等。

4. 网络拓扑结构

网络拓扑结构是指网络节点之间的物理或逻辑连接方式,常见的网络拓扑结构有:

  • 星型拓扑:各个节点通过中心节点连接,如交换机或集线器。
  • 环型拓扑:节点按环形连接,每个节点有两个邻接节点。
  • 总线型拓扑:所有节点通过一条公共总线连接。
  • 网状拓扑:每个节点与多个节点连接,具有较高的可靠性。

二、OSI模型详解

1. OSI模型的概念

OSI模型(Open Systems Interconnection Model)是国际标准化组织(ISO)提出的网络互连参考模型,用于规范网络通信功能。OSI模型将网络通信过程分为七层,从低到高依次为:

  1. 物理层(Physical Layer)
  2. 数据链路层(Data Link Layer)
  3. 网络层(Network Layer)
  4. 传输层(Transport Layer)
  5. 会话层(Session Layer)
  6. 表示层(Presentation Layer)
  7. 应用层(Application Layer)

各层之间相互独立,每一层只负责处理与其相关的特定任务。下面我们逐一讲解各层的主要功能和作用。

2. OSI模型各层功能

1. 物理层
  • 主要功能:物理层负责通过物理介质传输原始比特流。物理层的任务是定义设备之间的电气和物理规范,如电压、电缆类型、连接器等。
  • 设备:集线器、网线、光纤。
  • 协议:如RJ-45、光纤传输标准。
2. 数据链路层
  • 主要功能:数据链路层负责在同一网络内实现节点之间的可靠数据传输,提供错误检测与纠正功能。数据链路层将比特数据组织成帧,并通过MAC地址识别网络设备。
  • 设备:交换机。
  • 协议:如以太网协议(Ethernet)、PPP协议。
// C++代码实现数据链路层中的帧校验
#include <iostream>
#include <vector>
using namespace std;

// 计算CRC校验码
unsigned int calculateCRC(vector<unsigned char> data) {
    unsigned int crc = 0xFFFF;
    for (int i = 0; i < data.size(); i++) {
        crc ^= (unsigned int)data[i];
        for (int j = 0; j < 8; j++) {
            if (crc & 1) {
                crc = (crc >> 1) ^ 0xA001;
            } else {
                crc >>= 1;
            }
        }
    }
    return crc;
}

int main() {
    vector<unsigned char> data = {0x48, 0x65, 0x6C, 0x6C, 0x6F}; // 数据帧 "Hello"
    unsigned int crc = calculateCRC(data);
    cout << "CRC校验码: " << crc << endl;
    return 0;
}
3. 网络层
  • 主要功能:网络层负责不同网络之间的数据包传输,进行路由选择、网络寻址,并提供流量控制、拥塞控制等功能。网络层使用IP地址来定位设备。
  • 设备:路由器。
  • 协议:IP协议、ICMP协议、ARP协议等。
4. 传输层
  • 主要功能:传输层为应用程序提供可靠的端到端数据传输服务,确保数据按顺序到达,且没有丢失。传输层提供差错恢复和流量控制。
  • 协议:TCP、UDP。
// 简单的TCP连接伪代码
#include <iostream>
using namespace std;

void establishConnection() {
    cout << "TCP 连接建立:三次握手开始" << endl;
    cout << "发送 SYN 报文" << endl;
    cout << "接收 SYN-ACK 报文" << endl;
    cout << "发送 ACK 报文" << endl;
    cout << "TCP 连接已建立" << endl;
}

void closeConnection() {
    cout << "TCP 连接关闭:四次挥手开始" << endl;
    cout << "发送 FIN 报文" << endl;
    cout << "接收 ACK 报文" << endl;
    cout << "接收 FIN 报文" << endl;
    cout << "发送 ACK 报文" << endl;
    cout << "TCP 连接已关闭" << endl;
}

int main() {
    establishConnection();
    closeConnection();
    return 0;
}
5. 会话层
  • 主要功能:会话层负责建立、管理和终止应用程序之间的会话。它主要提供会话管理功能,如会话恢复、断点续传等。
  • 协议:如NetBIOS、RPC。
6. 表示层
  • 主要功能:表示层负责数据的格式转换、加密、解密、压缩和解压缩。它解决不同系统之间的数据表示差异问题。
  • 协议:如JPEG、MPEG、SSL/TLS。
7. 应用层
  • 主要功能:应用层为用户提供直接的网络服务,如文件传输、电子邮件、远程登录等。
  • 协议:HTTP、FTP、SMTP、DNS等。

3. OSI模型与TCP/IP模型的区别

OSI模型与TCP/IP模型是两种常见的网络模型,它们有以下主要区别:

  • 层次结构不同:OSI模型有七层,而TCP/IP模型只有四层(网络接口层、互联网层、传输层、应用层)。
  • 标准化过程:OSI模型是一个理论模型,强调标准化,TCP/IP模型则是基于互联网发展的实际应用模型。
  • 应用范围:TCP/IP模型应用于实际网络通信中,而OSI模型更多用作教学和理论参考。

三、总结

本篇讲解了计算机网络的基础概念、网络的分类以及拓扑结构,详细分析了OSI模型的七层结构及其功能。通过对OSI模型的理解,考生能够更好地理解网络通信的原理,为后续深入学习网络工程中的其他知识点打下基础。

接下来,我们将在下一篇中继续探讨网络工程中的其他重点知识,如TCP/IP协议栈、路由协议等内容。