计算机网络初步认识

1:网络为何而生

计算机最初的形态是独立模式:每台终端各自存储数据、运行业务,多个人使用时只能排队等待,效率极低。就像小松用终端 A 处理业务 1 时,小竹和小梅只能依次等候,资源无法共享,协作更是无从谈起。

网络互联的核心,就是打破单机的孤岛状态,让多台计算机连接在一起实现数据共享。随着计算机数量增多,交换机、路由器成为连接核心,由此诞生了两种基础网络形态:

  • 局域网(LAN) :小范围的网络连接,比如办公室、家里的网络,依靠交换机实现内部设备互通;
  • 广域网(WAN) :将远隔千里的局域网连接起来,比如东京、大阪的局域网通过多台路由器互通,甚至能连接到海外的洛杉矶网络。

其实局域网和广域网只是相对概念,没有绝对的边界,比如我们常说的 "全国性广域网",在更大的视角下也可看作一个大型局域网。而人需要协同工作的本质,注定了网络的产生是必然结果 ------ 计算机是人的工具,工具的互联,本质是人的协作需求的延伸。

2:网络协议

多台计算机要顺畅通信,光有物理连接远远不够,就像两个人交流,不仅要有说话的渠道,还要说同一种语言、遵守同一套沟通规则,这就是协议的本质:通信双方的约定。

计算机之间的传输媒介是光信号和电信号,通过频率、强弱表示 0 和 1 的二进制信息,要传递复杂信息,就必须约定好数据格式、信号解读方式等细节。如果 A 用频率表示 01,B 用强弱表示 01,哪怕都想通信,也会像 "我说中文,你说葡萄牙语" 一样无法沟通。

而现实中,计算机的厂商、操作系统、硬件设备千差万别,要让不同设备互通,就需要统一的协议标准,由业界公认的组织制定,让所有参与者遵守。比如 IEEE 制定了局域网的 802 系列标准、ISO 提出了经典的 OSI 七层模型、IETF 主导了 TCP/IP 协议族的开发,这些组织成为了网络世界的 "规则制定者"。(有兴趣可以自己了解这些组织机构)

3:分层结构

协议本质是运行在计算机上的软件,而软件设计的核心思路之一是模块化、解耦合 ,协议也因此被设计为分层结构------ 这是网络基础中最关键的设计思想,没有之一。

用一个简单的例子理解分层:我们用电话沟通,可分为语言层通信设备层。语言层负责用汉语 / 英语交流,通信设备层负责电话 / 无线电的信号传输。如果想把电话换成无线电,只需修改通信设备层,语言层完全不用变;如果想和外国人交流,只需把汉语换成英语,设备层也无需改动。分层让每一层的功能独立,修改一层不会影响其他层,大幅降低了维护成本。

网络通信的协议分层比这个例子更复杂,主流的分层模型有两种:

1:OSI七层协议

OSI 七层模型是网络通信的逻辑规范,把网络从下到上分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,每一层有明确的功能和对应的物理设备:
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放
式系统互联参考模型,是一个逻辑上的定义和规范;
把网络从逻辑上分为了 7 层. 每一层都有相关、相对应的物理设备,比如路由
器,交换机;
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型
的主机实现数据传输;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,
理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可
靠的通讯;
但是, 它既复杂又不实用; 所以我们按照 TCP/IP 四层模型来讲解

OSI 模型的优点是概念清晰、功能划分明确,是网络理论的基础,但缺点也很明显:过于复杂,会话层、表示层难以在操作系统中落地,因此工程实践中很少直接使用。

2:TCP/IP 模型:实际应用的核心框架

TCP/IP 是网络通信的实际落地标准 ,是一组协议的总称(TCP/IP 协议簇),主流分为五层模型 (物理层、数据链路层、网络层、传输层、应用层),也常因忽略物理层(硬件层面)称为四层模型,这是我们学习和开发的核心依据,各层功能和核心设备清晰且实用:

分层 核心功能 核心设备 / 协议
应用层 负责应用程序间沟通,如 FTP(文件传输)、HTTP(网页访问)、SMTP(邮件) 各类应用协议
传输层 管理两台主机间的数据传输,确保可靠 / 高效传输 TCP、UDP,端口号
网络层 地址管理(IP 地址)与路由选择,规划数据传输路径 IP、ICMP,路由器
数据链路层 设备间数据帧的传送、识别,冲突检测、差错校验 以太网协议,交换机
物理层 光 / 电信号的传递方式,定义传输介质(网线、光纤、电磁波) 集线器,网线 / 光纤

不同的网络设备实现的分层范围不同:主机的操作系统实现了从传输层到物理层,路由器实现了从网络层到物理层,交换机实现了从数据链路层到物理层,集线器仅实现物理层。

4:网络传输的核心过程:封装与解包

理解了协议分层,就能看懂网络数据的传输全过程 :数据从应用层出发,自上而下经过每一层,每层都会给数据加上自己的报头 (本层的协议信息,如地址、长度),这个过程叫封装 ;数据到达目标主机后,自下而上经过每一层,每层剥掉自己的报头,把数据交给上层,这个过程叫解包,最终数据到达应用层,被用户程序接收.

举个例子:你在聊天软件发送 "你好",这个字符串就是有效载荷(真正要传递的内容):

  1. 应用层:给 "你好" 加上聊天协议的报头,封装成应用层数据;
  2. 传输层:加上 TCP/UDP 报头(含端口号),封装成
  3. 网络层:加上 IP 报头(含源 / 目的 IP),封装成数据报
  4. 数据链路层:加上以太网报头(含源 / 目的 MAC 地址)和尾部,封装成
  5. 物理层:把帧转换成电 / 光信号,通过传输介质发送。

目标主机接收到信号后,从物理层到应用层依次解包,每层剥掉对应的报头,最终 "你好" 被传递到目标聊天软件,完成通信。

这里要注意:不同层对封装后的数据包有不同称谓 ------ 传输层叫段,网络层叫数据报,数据链路层叫帧,核心都是 "报头 + 有效载荷"。

5:网络地址管理MAC地址和IP地址

数据要准确传递,必须有唯一的标识,网络中最核心的两个标识是MAC 地址IP 地址,二者分工不同,缺一不可。

1:MAC地址,数据链路层的唯一标识

MAC 地址用来识别数据链路层中相连的节点,是网卡出厂时固化的地址,长度 48 位(6 个字节),通常用 16 进制表示(如 08:00:27:03:fb:19),理论上全球唯一。

MAC 地址的作用是局域网内的转发依据,就像快递的 "小区门牌号",在同一个局域网中,数据通过 MAC 地址找到目标设备。但 MAC 地址有局限性:只能在局域网内生效,跨局域网无法识别。

2:IP地址,网络层的全局标识

IP 地址(主要是 IPv4)是网络层的地址,用来标识网络中不同的主机,长度 32 位(4 个字节),用点分十进制表示(如 192.168.0.1),每个字节范围 0-255。

IP 地址的作用是跨网络的路由依据,就像快递的 "收件人手机号 + 省市区地址",数据从一台主机到另一台跨网段主机,需要通过路由器根据 IP 地址规划传输路径,找到目标网络。

3:MAC和IP的核心区别

  • IP 地址:长远目标,在整个路由过程中保持不变,是路径选择的依据;
  • MAC 地址:下一阶段目标,每经过一个路由器都会重新封装,更换下一跳的 MAC 地址,是局域网内转发的依据。

简单说:要把数据从北京的主机发到上海的主机,依靠 IP 地址找到上海的目标网络;数据到达上海的局域网后,依靠 MAC 地址找到目标主机。


然后结合封装与解包,体现路由器解包和重新封装的特点


IP 网络层存在的意义:提供网络虚拟层,让世界的所有网络都是 IP 网络,屏蔽最底层网络的差异

6:认识socket,网络编程初步

数据传输到目标主机并不是终点,因为最终使用数据的是主机上的进程 (如浏览器、QQ、迅雷),主机上同时运行着多个进程,如何把数据精准交付给目标进程?这就需要端口号 ,以及由 IP 地址 + 端口号组成的Socket

1:端口号,传输层的进程标识

端口号是传输层的协议内容,是 2 字节(16 位)的整数,范围 0-65535,用来标识主机上的唯一网络进程,告诉操作系统 "这份数据要交给哪个进程处理"。

端口号的范围划分有明确规定:

  • 0-1023:知名端口号,为常用应用层协议预留,如 HTTP 的 80 端口、FTP 的 21 端口、SSH 的 22 端口,固定不变;
  • 1024-65535:动态分配端口号,为客户端程序预留,由操作系统在程序启动时动态分配。

端口号的核心规则:一个端口号只能被一个进程占用,一个进程可以绑定多个端口号。这里要区分端口号和进程 ID(PID):PID 是系统对进程的全局标识,端口号是网络层面的进程标识,分开设计让系统进程管理和网络模块解耦合,更灵活。

2:socket网络进程的唯一标识

IP 地址 标识互联网中的唯一主机,端口号 标识主机上的唯一网络进程,二者组合就是Socket(套接字)IP地址+端口号,这是互联网中进程的唯一标识

网络通信的本质,其实是两个互联网进程之间的通信 ,用{源IP, 源端口号, 目的IP, 目的端口号}这一四元组,就能唯一标识互联网中一次通信的两个进程,确保数据不会发错对象。

3:传输层的两大协议,TCP和UDP

传输层是连接网络层和应用层的核心,为应用层提供数据传输服务,最典型的两个协议是 TCP 和 UDP,二者特性截然不同,适用于不同的业务场景:

TCP(传输控制协议):有连接、可靠传输、面向字节流。建立连接后才会传输数据,能保证数据无丢失、无重复、按序到达,适合对可靠性要求高的场景,如聊天、文件传输、网页访问;

UDP(用户数据报协议):无连接、不可靠传输、面向数据报。无需建立连接,直接发送数据,不保证数据到达,传输效率高,适合对实时性要求高的场景,如直播、视频通话、游戏。

4:网络字节序

计算机内存中的多字节数据有大端小端之分(大端:低地址存高字节;小端:低地址存低字节),不同主机的字节序可能不同,直接传输会导致数据解读错误。

TCP/IP 协议规定:网络数据流采用大端字节序 ,无论主机是大端还是小端,发送数据时都要转换为大端,接收数据时再转换为主机字节序。为了让程序具有可移植性,系统提供了专门的转换函数:htonl/htons(主机字节序转网络字节序)、ntohl/ntohs(网络字节序转主机字节序),开发时直接调用即可。

相关推荐
一起逃去看海吧15 分钟前
dify-03
java·linux·开发语言
fengyehongWorld15 分钟前
Linux 根据端口进行的相关查询
linux
lihao lihao18 分钟前
linux匿名管道
linux·运维·服务器
うちは止水21 分钟前
weston出图调试
linux·wayland·weston
STDD22 分钟前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格1 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
Forget_85501 小时前
HCIA——计算机网络诞生与发展
服务器·网络·计算机网络
用户2367829801682 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng2 小时前
Linux LCD驱动
linux·运维·服务器