计算机网络通信核心逻辑:网络七层模型+网络应用体系结构+IO模型+IP+端口
本文介绍了计算机网络通信的核心逻辑,主要包含四个部分:1)OSI七层网络模型及各层功能;2)C/S、B/S、P2P三种网络应用体系结构及其适用场景;3)BIO、NIO、AIO三种IO模型的特点和代码示例;4)IP地址的作用和IPv4/IPv6格式差异。文章通过表格对比、代码示例等方式,系统性地阐述了计算机网络通信的基础原理和实际应用架构选择,为理解网络通信提供了清晰的框架。
计算机网络通信核心逻辑
一、网络七层模型(OSI七层)
计算机网络的各层及其协议的集合就是网络的体系结构。
| 结构模型 | 优点 | 缺点 |
|---|---|---|
| 七层协议 | 概念清楚,理论完整 | 复杂不实用,与实际开发场景脱节 |
| TCP/IP协议 | 简洁实用,实现简单,成熟稳定 | 分层不够细致,缺乏统一的标准化设计 |
| 五层协议 | 既简洁又能将概念阐述清楚,便于新手理解学习 | 实际应用不如四层普及 |

五层协议的体系结构只是为了介绍网络原理的而设计的,经典的体系结构是七层协议和TCP/IP协议,所以本文主要介绍OSI的七层协议体系结构。
- 七层协议模型的传输流程:
数据从应用层向下逐层封装,到物理层传输;接收方从物理层向上逐层解封装,到应用层。
接下来本文将自上而下地简要介绍一下各层的主要功能。
1.1 应用层
应用层是体系结构中的最高层,是用户与网络的接口。应用层为特定类型的网络应用提供访问OSI参考模型环境的手段。
应用层协议是应用进程(这里的进程指主机中正在运行的程序)间通信和交互的规则。在互联网中的应用层协议有很多,如域名系统DNS、支持万维网的HTTP协议、支持电子邮件的SMTP协议等。
1.2 表示层
表示层主要处理在不同主机中交换信息的表示方式,提供格式化的表示和转换数据服务。数据压缩、解压缩、加密和解密也是表示层的功能。
1.3 会话层
会话层允许不同主机上的各个进程之间进行会话。对话是一种主要为表示层实体或用户进程建立连接,并在连接上有序地传输数据的服务,也称建立同步。会话层负责管理主机间的会话进程,包括建立、管理和终止进程间的对话。
1.4 运输层
运输层的任务是负责向两台主机中进程之间的通信提供通用的数据传输服务。所谓“通用”是指多种应用可以使用一个运输层服务。运输层提供的是端到端通信,主要使用以下两种协议:
| 协议 | 特点 | 传输单位 |
|---|---|---|
| 传输控制协议TCP | 提供面向连接的、可靠的数据传输服务 | 报文段 |
| 用户数据包协议 UDP | 提供无连接的、尽最大努力的数据传输服务(不保证可靠性) | 用户数据报 |
1.5 网络层
网络层负责为分组交换网上的不同主机提供通信服务,将网络层的协议数据单元(分组)从源主机传输到目的主机。
无论在哪一层传送的数据单元,都可笼统地用“分组”来表示。
网络层既提供有连接可靠的虚电路服务,又提供无连接不可靠的数据报服务。
1.6 数据链路层
数据链路层简称为链路层,主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路。数据链路层将网络层交下来的IP数据报封装成帧,在相邻结点间的链路上传输帧,实现结点之间的差错控制和流量控制。
1.7 物理层
物理层的传输单位是比特,功能是在物理介质上为数据端设备透明地传输原始比特流。传递信息所用的物理媒体如双绞线、同轴电缆、光缆等不在物理层协议之内而是在物理层协议的下面,因此也有人将物理媒体当做0层。
二、常见网络应用体系结构
在互联网上主机之间的通信方式 通常可以划分为两大类:C/S方式和P2P方式,B/S方式是C/S方式的一种特例。
在软件开发与系统架构设计中,C/S、B/S、P2P是三种经典且应用广泛的架构模式。
2.1 C/S(客户端/服务器架构)
C/S方式是最常用、最传统的的方式。C/S架构是传统的两层分布式架构,也是早起软件系统的主流架构模式。专用客户端和中心服务器通过自定义网络协议(如TCP/UDP)完成数据交互与业务处理。服务器程序可同时处理多个远地或本地客户的请求。
客户端是服务请求方,服务器是服务提供方。
- 典型应用:企业级专用系统(如ERP、财务软件、OA系统)、大型网络游戏客户端、数据库管理工具(如Navicat)等对交互性、性能和数据安全性要求较高的专用场景。
2.2 B/S(浏览器/服务器架构)
B/S架构是在C/S架构基础上发展而来的三层架构(浏览器层、Web服务器、数据库服务器层),核心是用通用浏览器代替C/S架构的专用客户端,“一次开发,多端访问”。
- 典型应用:各类门户网站(淘宝、百度)、云办公软件(钉钉网页版、腾讯文档)、企业官网、在线教育平台等。
2.3 P2P(对等连接架构)
P2P(peer-to-peer)是指两台主机在通信室不区分哪一个是服务请求方哪一个是服务提供方。P2P 架构与前两种架构的核心差异在于去中心化设计,架构中无固定的中心服务器,每个节点既可作为客户端也可作为服务器。只要两台主机都运行了对等连接软件(P2P软件),他们就可以进行平等的、对等连接通信。
实际上P2P方式从本质上看仍是C/S方式,只是对等连接中的每一台主机既是客户又同时是服务器。
- 典型应用:资源下载工具(迅雷、BT下载)、区块链网络、视频直播的P2P分发系统、分布式存储系统等对资源共享、去中心化、容错性有要求的场景。
2.4 三种架构适用场景
三种架构无绝对的优劣之分,架构选型需结合实际场景和业务需求来判断:
- 若业务为企业专用系统、高性能定制化应用,对交互性、数据安全性要求高,且终端环境统一,优先选择C/S架构。
- 若业务为通用型Web型应用、云服务、跨端应用,对维护成本、跨平台适配性要求高,优先选择B/S架构;
- 若业务为资源共享、分布式传输、去中心化应用,对系统容错性、资源利用率要求高,可选择P2P架构。
三、IO模型
UNIX 系统下, IO 模型一共有 5 种:同步阻塞 I/O、同步非阻塞 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O。本文只介绍java中常用的三种IO模型:BIO(同步阻塞IO)、NIO(同步非阻塞IO)、AIO(异步非阻塞IO)。
3.1 BIO(同步阻塞IO)
同步阻塞IO:当程序发起IO操作(read调用)时,发起请求的线程会被一直阻塞,直到IO操作完全完成,且IO操作的发起和结果获取由同一个线程完成(同步)。
- 特点:简单易用,资源利用率低,并发能力差,仅适合并发量低、响应时间短的简单服务。
- 示例代码:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class BioServer {
public static void main(String[] args) throws IOException {
// 绑定端口
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("BIO服务器启动,监听8080端口...");
while (true) {
// 阻塞等待客户端连接(accept()方法阻塞)
Socket socket = serverSocket.accept();
System.out.println("新客户端连接:" + socket.getInetAddress());
// 每个连接创建一个新线程处理
new Thread(() -> {
try {
// 读取数据(read()方法阻塞)
byte[] buffer = new byte[1024];
int len = socket.getInputStream().read(buffer);
if (len > 0) {
System.out.println("收到数据:" + new String(buffer, 0, len));
}
// 响应客户端
socket.getOutputStream().write("BIO响应".getBytes());
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
}
3.2 NIO(同步非阻塞IO)
同步非阻塞 IO,发起一个 read 调用,如果数据没有准备好,此时应用程序可以不阻塞等待,可继续执行其他任务,然后很快回来继续发起 read 调用,也就是轮询。这个轮询不是持续不断发起的,会有间隙, 这个间隙的利用就是同步非阻塞 IO 比同步阻塞 IO 高效的地方。
-
三大核心组件:
Channel(通道)、Buffer(缓冲区)、Selector(选择器)。 -
特点:并发能力强,变成复杂度高。
-
优势:与BIO相比,优势是IO多路复用:通过Selector监听多个Channel的就绪事件,仅在IO就绪时分配线程处理,避免大量无效阻塞,大幅降低线程资源消耗。
3.3 AIO(异步非阻塞IO)
异步非阻塞IO是基于事件和回调机制实现的。程序发起IO操作后会直接返回;操作系统完成整个IO操作后,主动通过回调函数/事件通知线程处理结果。
- 特点:无需轮询,资源利用率极高,编程复杂度最高,依赖操作系统支持
3.4 三种IO模型使用场景
IO 模型的选型需结合业务场景、并发量、IO 耗时、开发成本综合判断:
- 若业务并发量低(<100),逻辑简单,优先选BIO;
- 若业务高并发、IO耗时短,优先选NIO;
- 若业务高并发、IO耗时长,且操作系统支持完善,可选AIO。
四、IP
IP地址是网络设备的唯一网络标识。在同一网络段内,每台设备的 IP 地址唯一,不会重复。
- 核心作用是:在网络中定位设备,实现设备间的相互寻址。
目前IP地址分为两个主流版本: IPV4和IPV6。
- IPV4:地址格式为
16位,4 个 0-255 的十进制数组成,数之间用.分隔,例如:192.168.1.100; - IPV6:地址格式为
128位,由8 组 16 进制数组成,组之间用:分隔,例如: 2001:0db8:0000:0000:0000:0000:1428:57ab,压缩版:2001:0db8::1428:57ab(连续0段用::代替)
IPV6把地址从IPV4的32位增大到128位,使地址空间扩大了296倍。
五、端口
- 软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。一个进程由一个端口来标识。
- TCP/IP的运输层用一个16位端口号来标志一个端口,16位的端口号允许有65535个不同端口号。但是端口号只有本地意义,在互联网不同计算机中,相同端口号没有关联。
- 熟知端口号(系统端口号):
0~1023。服务端使用的端口号。
由IANA统一分配和管理,普通用户进程无权限绑定。
为了让互联网上所有客户程序都能找到服务器程序,服务器程序使用的端口(熟知端口)就必须是固定的、众所周知的。
- 登记端口号:1024~49151。服务端使用的端口号。
由IANA注册管理,分配给常用的应用程序。中间件、服务端框架,普通用户进程可以直接绑定。 - 短暂端口号:49152~65535。客户端使用的端口号。
无官方分配,仅在客户进程运行时才动态选择。通信结束后刚才使用过的客户端口号就不复存在,这个端口号就可供其他客户进程使用。
更多推荐



所有评论(0)