网络原理初识:从基础概念到协议分层

目录

前言

一、网络发展简史:从独立模式到网络互连

[1.1 独立模式](#1.1 独立模式)

[1.2 网络互连的兴起](#1.2 网络互连的兴起)

二、网络规模划分:局域网与广域网

[2.1 局域网(LAN)](#2.1 局域网(LAN))

[2.2 广域网(WAN)](#2.2 广域网(WAN))

三、网络通信基础:IP地址与端口号

[3.1 IP地址](#3.1 IP地址)

[3.2 端口号](#3.2 端口号)

[3.3 五元组:网络通信的"身份证"](#3.3 五元组:网络通信的"身份证")

四、协议:网络通信的"语言"

[4.1 什么是协议?](#4.1 什么是协议?)

[4.2 协议的重要性](#4.2 协议的重要性)

五、协议分层:网络通信的"组织架构"

[5.1 为什么需要协议分层?](#5.1 为什么需要协议分层?)

[5.2 OSI七层模型](#5.2 OSI七层模型)

[5.3 TCP/IP五层(或四层)模型](#5.3 TCP/IP五层(或四层)模型)

六、网络设备所在分层

七、数据封装与分用:数据在网络中的"旅行"

[7.1 数据封装](#7.1 数据封装)

[7.2 数据分用](#7.2 数据分用)

八、网络通信实例分析

[8.1 同一网段内的主机通信](#8.1 同一网段内的主机通信)

[8.2 跨网段的主机通信](#8.2 跨网段的主机通信)


前言

在当今数字化时代,网络已成为我们日常生活和工作中不可或缺的基础设施。从浏览网页、发送邮件到视频会议、在线支付,所有这些活动都依赖于网络通信。本文将带您深入浅出地了解网络原理的基础知识,从网络发展史到协议分层,帮助您建立对网络通信的系统性认识。


一、网络发展简史:从独立模式到网络互连

1.1 独立模式

早期的计算机系统是独立运行的,每台计算机都独立工作,无法与其他计算机共享数据和资源。这种"孤岛式"的计算模式限制了计算机的使用效率和应用范围。

1.2 网络互连的兴起

随着业务需求的增加,人们越来越需要计算机之间能够互相通信、共享软件和数据。于是,"网络互连"的概念应运而生------将多台计算机连接在一起,完成数据共享。

网络互连的本质:计算机之间通过网络传输数据,即网络通信。

二、网络规模划分:局域网与广域网

2.1 局域网(LAN)

定义:Local Area Network,简称LAN,指在局部范围内组建的私有网络。

特点

  • 本地、局部组建的网络
  • 局域网内的主机之间可以方便地进行网络通信(内网)
  • 局域网与局域网之间在没有连接的情况下无法通信

局域网组建方式

  1. 基于网线直连
  2. 基于集线器组建
  3. 基于交换机组建
  4. 基于交换机和路由器组建

2.2 广域网(WAN)

定义:Wide Area Network,简称WAN,通过路由器将多个局域网连接起来,形成覆盖大范围的网络。

特点

  • 由多个局域网(子网)组成
  • 例如:企业在全国各地的分公司,通过专线连接形成的广域网
  • 全球化的公共型广域网称为互联网(又称公网、外网)

重要提示:局域网和广域网只是相对概念。例如,某些特定区域的"天朝特色"广域网,也可以视为一个较大的局域网。

三、网络通信基础:IP地址与端口号

3.1 IP地址

定义:IP地址用于标识网络主机、其他网络设备(如路由器)的网络地址。

作用:就像发送快递需要知道收货地址一样,IP地址用于定位主机的网络地址。

格式

  • 32位的二进制数
  • 通常分割为4个"8位二进制数"(4个字节)
  • 用"点分十进制"表示:a.b.c.d(a,b,c,d为0~255的十进制整数)

示例

复制代码
二进制:01100100.00000100.00000101.00000110
点分十进制:100.4.5.6

3.2 端口号

定义:端口号用于标识主机中发送数据、接收数据的进程。

作用:就像发送快递不仅需要指定收货地址(IP地址),还需要指定收货人(端口号)。

格式

  • 0~65535范围的数字
  • 进程可以通过绑定一个端口号,来发送及接收网络数据

3.3 五元组:网络通信的"身份证"

在网络通信中,仅靠IP地址和端口号还不足以唯一标识一次通信。TCP/IP协议使用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

实际应用 :在Windows系统中,可以通过netstat -ano命令查看网络数据传输中的五元组信息;若需过滤,可使用netstat -ano | findstr命令。

四、协议:网络通信的"语言"

4.1 什么是协议?

定义:网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。

作用:如同见网友约定"胸口插支玫瑰花"见面,协议确保不同厂商、不同操作系统、不同硬件的计算机能够顺畅通信。

4.2 协议的重要性

  • 计算机生产厂商众多:不同厂商的设备需要统一标准
  • 操作系统多样:Windows、Linux、MacOS等需要兼容
  • 网络硬件复杂:网卡、路由器、交换机等需要协同工作

协议的本质:协议最终体现为在网络上传输的数据包的格式。

五、协议分层:网络通信的"组织架构"

5.1 为什么需要协议分层?

协议分层类似于面向接口编程:

  • 定义好两层间的接口规范,让双方遵循这个规范来对接
  • 使用方不关心提供方的实现细节,只需使用接口
  • 提供方利用封装特性隐藏实现细节,只需开放接口

5.2 OSI七层模型

定义:Open System Interconnection,开放系统互连。

OSI七层模型

重要提示:OSI七层模型是理论框架,实际网络中并未完全实现。

5.3 TCP/IP五层(或四层)模型

定义:TCP/IP是一组协议的代名词,包括许多协议,组成了TCP/IP协议簇。

TCP/IP五层模型

  1. 应用层:负责应用程序间沟通,如SMTP、FTP、Telnet等。我们的网络编程主要针对这一层。
  2. 传输层:负责两台主机之间的数据传输,如TCP(确保可靠传输)。
  3. 网络层:负责地址管理和路由选择,如IP协议。路由器工作在这一层。
  4. 数据链路层:负责设备之间的数据帧传送和识别,如网卡驱动、帧同步、冲突检测等。交换机工作在这一层。
  5. 物理层:负责光/电信号的传递方式,如网线、光纤、电磁波等。集线器工作在这一层。

图2:TCP/IP五层模型示意图

四层模型:在实际应用中,物理层常被忽略,因此也称为TCP/IP四层模型。

六、网络设备所在分层

表格

网络设备 工作分层 说明
主机 传输层至物理层 操作系统内核实现下四层
路由器 网络层至物理层 传统路由器工作在下三层
交换机 数据链路层至物理层 传统交换机工作在下两层
集线器 物理层 仅实现物理层功能

注意:随着技术发展,出现了3层或4层交换机、4层路由器,但本文讨论的是传统意义上的网络设备。

七、数据封装与分用:数据在网络中的"旅行"

7.1 数据封装

当应用层数据通过协议栈发送到网络上时,每层协议都要加上一个数据首部(Header),称为封装(Encapsulation)。

  • 应用层数据 → 传输层:段(Segment)
  • 传输层数据 → 网络层:数据报(Datagram)
  • 网络层数据 → 数据链路层:帧(Frame)

7.2 数据分用

数据到达目的主机后,每层协议剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理。

八、网络通信实例分析

8.1 同一网段内的主机通信

当两台主机位于同一网段时,通信过程如下:

  1. 源主机应用层生成数据
  2. 传输层添加首部,形成段
  3. 网络层添加首部,形成数据报
  4. 数据链路层添加首部,形成帧
  5. 物理层将帧转换为电信号/光信号
  6. 目的主机接收到信号,逐层剥掉首部
  7. 最终将数据传递给目的应用层

8.2 跨网段的主机通信

当两台主机位于不同网段时,通信过程如下:

  1. 源主机将数据发送到默认网关(路由器)
  2. 路由器根据路由表将数据转发到目的网段
  3. 目的网段的路由器将数据发送到目的主机
  4. 目的主机接收并处理数据
相关推荐
LOYURU2 小时前
Centos7.6安装Go
开发语言·后端·golang
小二·2 小时前
Go 语言系统编程与云原生开发实战(第1篇):从零搭建你的第一个 Go 服务 —— 理解 GOPATH、Modules 与现代 Go 工作流
开发语言·云原生·golang
星期五不见面2 小时前
嵌入式学习!(一)C++学习-STL(21)-26/1/27
开发语言·c++·学习
大白要努力!2 小时前
Android Spinner自定义背景
java·开发语言
w_t_y_y2 小时前
工具Cursor(五)Rules&Skill
java·开发语言
冬奇Lab2 小时前
【Kotlin系列16】性能优化:内联、内存与字节码分析
开发语言·性能优化·kotlin
2301_765703142 小时前
C++代码风格检查工具
开发语言·c++·算法
xyq20242 小时前
XSLT 编辑 XML:深入解析与实际应用
开发语言
hrrrrb2 小时前
【算法设计与分析】算法概述
开发语言·python·算法