【计算机网络】计算机网络协议、接口与服务全面解析——结合生活化案例与图文详解
导读
大家好,很高兴又和大家见面啦!!!
在上一篇内容中我们介绍了……
一、协议
1.1 定义
网络协议(Network Protocol)是指为了在网络中进行数据交换而建立的规则、标准或者约定。
网络协议是控制对等实体之间进行通信的规则的集合,是水平的。
代码语言:javascript代码运行次数:0运行复制graph LR
A[实体1] ---- 网络协议1 ---> B[对等实体1]
C[实体2]---- 网络协议2 ---> D[对等实体2]
不对等的实体之间是没有协议的:
代码语言:javascript代码运行次数:0运行复制graph LR
实体1-.-C((无协议))-.-> 对等实体2
classDef red fill:#ff0000, stroke:#000000
class C red
1.2 组成
协议是由语法、语义以及同步三部分组成:
- 语法:数据与控制信息的格式。
graph LR
%% ===== 数据包语法结构 =====
subgraph Ethernet_Frame[以太网帧语法]
direction LR
A["帧头<br>------------------<br>
目标MAC: 00:1A:2B:xx<br>
源MAC: 00:0C:29:xx
"] -->
B["IP头<br>------------------<br>
版本: IPv4<br>
TTL: 64"] -->
C["TCP头<br>------------------<br>序列号: 0x3a4b<br>窗口大小: 8192"]
C --> D["数据载荷<br>------------------<br>(应用层数据)"] -->
E["帧尾<br>
------------------<br>
CRC校验: 0x7d3f"]
classDef header fill:#e6f3ff,stroke:#0066cc,stroke-width:1.5px;
classDef data fill:#e6ffe6,stroke:#00cc00;
classDef checksum fill:#ffe6e6,stroke:#ff0000;
class A,B,C,E header
class D data
class E checksum
end
- 语义:即需要发出何种控制信息、完成何种动作及做出何种应答。
graph TB
%% ===== 协议语义:控制逻辑 =====
subgraph 语义[控制逻辑与动作]
direction TB
Start((开始)) --> CheckCRC{校验CRC}
CheckCRC -- 校验成功 --> SendACK[发送ACK确认]
CheckCRC -- 校验失败 --> SendNAK[发送NAK要求重传]
SendACK --> UpdateWindow[更新接收窗口]
SendNAK --> WaitRetransmit[等待重传]
UpdateWindow --> EndProcess((结束))
WaitRetransmit --> EndProcess
classDef decision fill:#ffe6cc,stroke:#ff9900;
classDef action fill:#e6ffe6,stroke:#00cc00;
classDef startEnd fill:#f0f0f0,stroke:#666;
class CheckCRC,SendACK decision
class SendNAK,UpdateWindow,WaitRetransmit action
class Start,EndProcess startEnd
end
- 同步(时序):执行各种操作的条件、时序关系等,即事件发现顺序的详细说明。
sequenceDiagram
participant Sender as 发送方
participant Receiver as 接收方
%% ===== 同步时序 =====
Sender ->> Receiver: 数据包 (语法: 头部+数据)
Note over Receiver: 语义: 解析头部并校验
Receiver-->>Sender: ACK (控制信息)
alt 超时未收到ACK
Sender->>Sender: 重传数据 (语义: 超时动作)
else 正常收到ACK
Sender->>Receiver: 发送下一包 (同步: 顺序约束)
end
这里我以小明与小红这两个好友之间的交流为例进行说明:
- 语法就是指的双方交流时采用的语法规则,如中文语法规则;
- 语义则是当小明提问时,小红对问题的思考与回复;
- 同步则是指交流时的先后顺序与事件的触发条件:
在双方沟通之前,有进行过如下约定:
- T01协议:当接收方未正常接收到消息时触发
- T02协议:当接收方未在规定时间内回复时触发
- 规定当声音超过60dB对方才能听清
第一轮对话(物理层错误):
- 小明:[音量40dB]“你吃饭了吗?”
→ 小红检测到振幅不足,不传递至语义层 小红触发T01协议
- 小红:[音量60dB] “你声音太小了,声音大点再问一次”
第二轮对话(协议层超时):
- 小明:[音量60dB]你吃饭了吗?
→ 对话状态机启动10秒计时 小红:语义分析完成,但生成回复耗时12秒 → 小明检测超时 触发T02协议
- 小明:再次提问[音量60dB]“你吃饭了吗?”
第三轮对话(正常流程):
- 小明:[音量60dB]你吃饭了吗?
小红:[5秒内]语义解析 → 生成回复 → 输出
- 小红:[音量60dB]“吃过了”
→ 计时器终止,对话状态更新
二、接口
同一节点内相邻两层的实体交换信息的逻辑接口称为服务访问点(Service Access Point, SAP)。
接口是也仅是相邻的上下层之间通信的渠道,不可能存在跨层接口,也就是说上层不可能的跨层与下层进行通信。
服务就是通过SAP提供给上层使用,第n层的SAP就是第n+1层访问第n层服务的渠道。
三、服务
3.1 定义
服务是指下层为紧邻的上层提供的功能调用,是垂直的。
对等实体在协议的控制下,使得本层能为上层提供服务,但要实现本层协议,还需要使用下层提供的服务。
3.2 服务与协议的区别
服务与协议是两个完全不同的概念,主要区别如下:
- 通信对象不同
- 服务是垂直的,下层为紧邻的上层提供功能接口(如传输层为应用层提供可靠传输服务)。
- 协议是水平的,同一层对等实体间通过协议通信(如两台主机的传输层通过TCP协议协商数据传输)。
- 依赖关系不同
- 服务定义接口,协议实现功能:下层通过协议实现其向上层承诺的服务。例如,传输层通过TCP协议(三次握手、超时重传)实现可靠传输服务,向上层暴露
send()
和receive()
接口。 - 上层仅依赖服务接口:应用层调用传输层的
send(data)
,无需知晓TCP协议如何实现可靠性(如滑动窗口、拥塞控制)。
- 服务定义接口,协议实现功能:下层通过协议实现其向上层承诺的服务。例如,传输层通过TCP协议(三次握手、超时重传)实现可靠传输服务,向上层暴露
- 透明性
- 下层协议对上层透明:上层用户只能看到下层提供的服务接口,而协议实现细节(如TCP序列号管理)对上层不可见。
- 示例:应用层(浏览器)通过传输层的
send()
发送HTTP请求,但无需了解TCP如何通过ACK确认数据包。
注意:只有能被上一层实体使用的功能才称为服务,协议实现的其他功能(如流量控制)对上层透明。
3.3 分类
计算机网络提供的服务可按以下三种方式分类:
3.3.1 面向连接服务于无连接服务
在面向连接服务中,通信双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和占用的资源。因此这种服务可分为连接建立、数据传输和连接释放三个阶段。
在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,将每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这种服务常被描述为“尽最大努力交付”,是一种不可靠服务。
3.3.2 可靠服务和不可靠服务
可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。
不可靠服务是指网络只是尽量让数据正确、可靠地传送到目的地,是一种尽力而为的服务。
3.3.3 有应答服务和无应答服务
有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。发送的应答可以是肯定应答也可以是否定应答,通常在收到数据有错误时发送否定应答。
无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。
结语
在今天的内容中我们介绍了计算机网络的协议、接口与服务的相关内容:
- 协议指的是计算机网络中数据交换的规则、标准与约定。由语法、语义与同步三部分组成。
- 接口是分层结构中,相邻层之间通信的通道。
- 服务是下层为紧邻的上层提供的功能调用。
今天的内容到这里就全部结束了,在下一篇内容中我们将介绍《OSI模型》,大家记得关注哦!
如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-22,如有侵权请联系 cloudcommunity@tencent 删除计算机网络接口网络协议服务计算机