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

目录

前言

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

[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. 目的主机接收并处理数据
相关推荐
JaguarJack10 小时前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo10 小时前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack1 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理2 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
feifeigo1232 天前
matlab画图工具
开发语言·matlab
dustcell.2 天前
haproxy七层代理
java·开发语言·前端
norlan_jame2 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone2 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
呉師傅2 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑