计算机网络自顶向下方法4——详解协议层次及其服务模型

详解协议层次与服务模型:理解网络架构的基石

本文深入解析分层的网络体系结构,揭示如何通过分层与封装将复杂的通信问题变得可管理。

网络通信是一个极其复杂的问题。想象一下,为了用浏览器加载一个网页,需要同时处理:

  • 在电线/光纤/无线信号上传输比特流。

  • 在共享介质中准确地将数据帧送达目标设备。

  • 在全球范围内的无数网络中找到一条通往目的地的路径。

  • 确保数据完整、有序地从你的浏览器进程送达Web服务器进程。

  • 理解浏览器请求和服务器响应的具体含义。

分层模型 的核心思想就是:通过分而治之,将这个大问题分解为一系列更小、更易管理的子问题。

一、什么是协议层次?

1. 核心思想

每一层都建立在下一层服务之上,通过封装 为上一层提供新的、更高级的服务。

  • 服务 :某一层向它的上一层提供的功能。例如,网络层向传输层提供"将数据包从源主机发送到目的主机"的服务。

  • 接口:定义了下层如何向上层提供服务。上层只需要调用接口,而无需关心下层如何实现。

  • 协议:某一层内部,对等实体(比如你的电脑和服务器上的同层软件)之间通信时遵守的规则。

2. 一个生动的类比:公司内部的信件传递

假设公司A的市场部经理要给公司B的销售部经理写一封信。

  1. 经理(应用层)

    • 职责 :撰写信件的具体内容(数据)。他关心的是内容的含义(协议),比如使用中文和商务格式。

    • 服务:向经理提供了"与对等经理通信"的能力。

  2. 秘书(传输层)

    • 职责 :经理将信交给秘书。秘书将信装入信封,在信封上写明收件人部门和姓名 。这相当于添加了传输层首部,以确保信件能到达对方公司的正确进程

    • 服务:向经理提供了"端到端的进程间通信"服务。

  3. 收发室(网络层)

    • 职责 :秘书将信交给收发室。收发室将这个信封装入一个更大的快递袋,并在袋子上填写公司B的完整地址。这相当于添加了网络层首部(IP地址)。

    • 服务:向秘书提供了"将数据从任何源主机送到任何目的主机"的逻辑通信服务。

  4. 邮递员(链路层)

    • 职责 :收发室将快递袋交给邮递员。邮递员并不关心最终地址,他只关心下一站是哪里。他将快递袋贴上标签,写明"下一站:本地邮局分拣中心"。这相当于添加了链路层首部(MAC地址)。

    • 服务 :向收发室提供了在同一网络内将数据帧从一个节点送到下一个节点的服务。

  5. 运输队(物理层)

    • 职责 :将快递袋上的所有信息转换成物理信号,通过卡车、飞机等交通工具(比特通过电线、光纤)运输出去。

    • 服务:向邮递员提供了"传输原始比特流"的服务。

整个过程就是一次完美的封装:
[数据] -> [传输层首部 | 数据] -> [网络层首部 | 传输层首部 | 数据] -> [链路层首部 | 网络层首部 | 传输层首部 | 数据] -> 比特流


二、主要的参考模型

历史上主要有两个著名的分层模型:

1. OSI 七层参考模型(理论模型)

这是一个理论上的完美模型,由国际标准化组织提出,常作为教学工具。

层次 名称 功能简介 数据单位 比喻回扣
7 应用层 为用户应用程序提供网络服务 报文 经理:信件内容
6 表示层 数据格式转换、加密解密 报文 翻译/加密员:将中文翻译成英文
5 会话层 建立、管理和终止会话 报文 会议协调员:安排会议时间、维持会议秩序
4 传输层 端到端的可靠传输、流量控制 报文段 秘书:装信封,写部门/姓名
3 网络层 逻辑寻址、路由选择 数据包 收发室:装快递袋,写公司地址
2 链路层 介质访问、差错控制 邮递员:贴标签,写下一站地址
1 物理层 传输原始比特流 比特 运输队:将信息变成物理信号运输
2. TCP/IP 五层模型(现实标准)

这是当今互联网实际使用的、精简后的模型。它合并了OSI模型的上三层。

层次 对应协议 核心职责 类比
5. 应用层 HTTP, DNS, SMTP, FTP 支持具体的网络应用 经理 + 翻译 + 协调员
4. 传输层 TCP, UDP 进程间通信、可靠性、流量控制 秘书
3. 网络层 IP, ICMP 主机的逻辑寻址和路由 收发室
2. 链路层 Ethernet, WiFi, PPP 相邻节点间的帧传输 邮递员
1. 物理层 - 比特流的透明传输 运输队

网络应用程序通信流程

如下图,应用程序 A 要将数据"hello" 传给网络上另外一台主机上的应用程序 B, 数据"hello"从应用层发送给传输层后,传输层在数据前面加上 tcp 协议或 udp 协议的报头,将整条报文发给网络

层,网络层添加自己的 IP 报头,再将整条数据发送给数据链路层。数据链路层将数据封装成能在网络中独立传输的数据单元,即数据帧。封装好的数据帧通过网络传输到另一台主机,然后再从下

层依次拆包,将数据部分送往应用层。应用程序 B 就得到了数据 hello

三、服务模型:每一层提供了什么关键服务?

1. 应用层
  • 服务网络应用程序的应用进程之间的通信

  • 协议:定义了应用程序交换的报文类型、语法、语义和时序。

  • 例子:HTTP(请求网页)、SMTP(发送邮件)、DNS(解析域名)。

2. 传输层
  • 服务在主机内的应用程序进程之间传输应用层报文

  • 关键区别

    • TCP服务模型

      • 面向连接:通信前先建立连接。

      • 可靠传输:无差错、不丢失、不重复、按序到达。

      • 流量控制:发送方不会淹没接收方。

      • 拥塞控制:当网络拥堵时,抑制发送速率。

    • UDP服务模型

      • 无连接:直接发送。

      • 不可靠传输:尽最大努力交付,不保证。

  • 例子 :TCP像挂号信 ,UDP像普通平信

3. 网络层
  • 服务将数据报从源主机移动到目的主机

  • 核心功能

    • 转发:将分组从路由器的输入链路转移到合适的输出链路。

    • 路由:使用路由算法决定分组从源到目的所经过的路径。

  • 协议 :IP协议。IP是互联网的"粘合剂",所有网络都必须支持IP才能互联。

4. 链路层
  • 服务在相邻网络节点(如两台直接相连的路由器)之间移动数据帧

  • 核心功能

    • 成帧:将网络层数据报封装成帧。

    • 差错检测:检查帧在传输过程中是否出现比特错误。

    • 介质访问控制:在共享广播信道上决定谁下一个发送数据。

5. 物理层
  • 服务将帧中的每个比特从一个节点移动到下一个节点

  • 关心问题:电压大小、引脚数量、光脉冲特性、无线电频率等物理特性。

总结:分层架构的威力

  1. 模块化与清晰分工:各层职责明确,可以独立发展和改进。例如,从以太网升级到Wi-Fi,上层协议完全不受影响。

  2. 简化复杂度:应用开发者只需关心应用层协议,无需懂得物理信号如何调制。

  3. 促进互操作性:只要遵守层次接口和协议,不同厂商、不同技术的产品可以无缝协作。

通过分层,我们将"在全球范围内将数据从你的浏览器进程可靠地送达Web服务器进程"这一宏大而复杂的问题,分解成了在五个相对简单的层面上各自解决的问题。这正是计算机网络设计的精妙之处。

相关推荐
喜欢踢足球的老罗4 小时前
零依赖一键多端!用纯 Node.js 打造“IP 可访、角色隔离”的轻量化 Mock 服务器
服务器·tcp/ip·node.js
光影34154 小时前
专利撰写与申请核心要点简报
前端·数据库·php
应用市场4 小时前
PHP microtime()函数精度问题深度解析与解决方案
android·开发语言·php
阿沁QWQ4 小时前
Linux进程信号
linux·运维·服务器
没有故事、有酒5 小时前
Axios
开发语言·php
BingoGo5 小时前
Laravel 新项目避坑指南10 大基础设置让代码半年不崩
后端·php
风一样的美狼子5 小时前
仓颉语言核心数据结构-高性能与类型安全的工程实践
java·服务器·前端
报错小能手6 小时前
计算机网络自顶向下方法16——应用层 因特网视频 HTTP流和DASH
开发语言·计算机网络·php
错把套路当深情6 小时前
Kotlin Map扩展函数使用指南
服务器·前端·kotlin