前言

计算机网络核心知识系列博客分为上、中、下部分,此篇为(上)。
博客的内容是计算机网络的核心知识,但也仅仅限于求得“管中窥一豹之形体”,也就是说这是入门级别的博客,若想深入的话,还是得好好啃大部头。


文章目录

  • 前言
  • 1 计算机网络概述(上)
    • 1.1 计算机网络基本概念
      • 1.1.1 什么是计算机网络?
      • 1.1.2 通信系统模型
      • 1.1.3 定义:计算机网络就是`互连`的、`自治`的计算机集合。
      • 1.1.4 距离远、数量大如何保证互连?
      • 1.1.5 什么是Internet?-组成细节角度
      • 1.1.6 什么是Internet?-服务角度
      • 1.1.7问题
    • 1.2 计算机网络结构
      • 1.2.1 什么是网络协议?
      • 1.2.2 协议的三要素
    • 1.3 网络核心
      • 1.3.1 数据交换-电路交换
        • 多路复用
      • 1.3.2 数据交换-报文、分组交换(1)
        • 报文交换
        • 分组交换
      • 1.3.3 数据交换-报文、分组交换(2)
      • 1.3.4 数据交换-报文、分组交换(3)
  • 1 计算机网络概述(下)
    • 1.4 计算机网络性能
      • 1.4.1 速率
      • 1.4.2 带宽
      • 1.4.3 延迟/时延(delay或latency)
      • 1.4.4 四种分组延迟
      • 1.4.5 时延带宽积(单位:bits(比特))
      • 1.4.6 分组丢失(丢包)
      • 1.4.7 吞吐量/率(Throughput)
    • 1.5 计算机网络体系结构
      • 1.5.1 计算机网络体系结构概述
        • 复杂系统的分层结构
        • 为何采用分层结构?
        • 分层网络体系结构基本概念
      • 1.5.2 OSI参考模型(1)
        • OSI参考模型解释的通信过程
        • OSI参考模型数据封装与通信过程
        • 为什么需要数据封装?
      • 1.5.3 OSI参考模型(2)
        • 物理层功能
        • 数据链路层功能
        • 网络层功能
      • 1.5.4 OSI参考模型(3)
        • 传输层功能
        • 会话层功能
        • 表示层功能
        • 应用层功能
      • 1.5.5 TCP/IP参考模型
      • 1.5.6 "5层"参考模型
        • 5层模型的数据封装
    • 1.6 计算机网络发展历史
      • 1.6.1 "1961-1972": 早期分组交换原理的提出与应用
      • 1.6.2 "1972-1980": 网络互连,大量新型、私有网络的涌现
      • 1.6.3 "1980-1990": 新型网络协议与网络的激增
      • 1.6.4 "1990, 2000's": 商业化 , Web, 新应用
      • 1.6.5 "2005~今"
  • 2 应用层
    • 2.1 网络应用(层)内容概述
    • 2.2 网络应用的基本原理
      • 2.2.1 网络应用的体系结构
        • 客户机/服务器结构(Client-Server, C/S)
        • 点对点结构(Peer-to-peer, P2P)
        • 混合结构(Hybrid)
      • 2.2.2 网络应用进程通信
        • 网络应用的基础:进程间通信
        • 套接字: Socket
        • 如何寻址进程
        • 应用层协议
        • 应用层协议的内容
      • 2.2.3 网络应用需求
      • 2.2.4 Internet提供的传输(层)服务
    • 2.3 Web应用
      • 2.3.1 Web应用概述
        • Web与HTTP
        • HTTP协议概述
      • 2.3.2 HTTP连接类型
        • 非持久性连接(Nonpersistent HTTP)
        • 持久性连接(Persistent HTTP)
      • 2.3.3 HTTP消息格式
        • HTTP请求消息
        • HTTP请求消息的通用格式
        • 上传输入的方法
        • 方法的类型
        • HTTP响应消息
        • HTTP响应状态代码
        • 体验一下HTTP
      • 2.3.4 Cookie技术
        • 为什么需要Cookie?
        • Cookie技术
        • Cookie的原理
        • Cookie的作用
      • 2.3.5 Web缓存技术/代理服务器技术
        • 条件性GET方法
    • 2.4 Email应用
      • 2.4.1 Email应用概述
        • Email应用的构成
        • SMTP协议: RFC 2821
        • Email应用示例
        • SMTP交互示例
        • 动手尝试SMTP交互
        • SMTP协议
      • 2.4.2 Email消息格式和POP协议
        • Email消息格式
        • Email消息格式:多媒体扩展
        • 邮件访问协议
    • 2.5 DNS(域名解析系统)
      • 2.5.1 DNS概述
        • DNS:Domain Name System
        • DNS
        • 分布式层次式数据库
        • DNS记录缓存和更新
      • 2.5.2 DNS记录和消息格式
        • DNS记录
        • DNS协议和消息格式
        • 如何注册域名?
    • 2.6 P2P应用
      • 2.6.1 P2P应用:原理与文件分发
        • 文件分发:客户机/服务器vs. P2P ,到底谁快?
      • 2.6.2 文件分发:BitTorrent
        • BitTorrent 基本原理(1)
        • BitTorrent 基本原理(2)
      • 2.6.3 P2P应用:索引技术
        • P2P: 搜索信息
        • 集中式索引技术
        • 集中式索引的问题
      • 2.6.4 洪泛式查询索引技术:Query flooding
      • 2.6.5 层次式覆盖网络索引技术
        • 案例:Skype
    • 2.7 Socket编程
      • 2.7.1 Socket编程-应用编程接口(API)
        • 网络程序设计接口
        • 应用编程接口 API
        • 几种典型的应用编程接口
      • 2.7.2 Socket编程-Socket API概述
        • Socket API
        • 如何在服务器端找到想找的接口呢?
        • Socket抽象
        • Socket的结构
      • 2.7.3 Socket编程-Socket API函数(1)
        • Socket编程架构(以WinSock为例)
        • WSAStartup
        • WSACleanup
        • socket
        • Closesocket
        • bind
      • 2.7.4 Socket编程-Socket API函数(2)
        • listen
        • connect
        • accept
        • send, sendto
        • recv, recvfrom
        • setsockopt, getsockopt
      • 2.7.5 Socket API函数小结
      • 2.7.6 关于网络字节顺序
      • 2.7.7 网络应用的Socket API调用基本流程
      • 2.7.8 Socket编程-客户端软件设计
        • 解析服务器IP地址
        • 解析服务器(熟知)端口号
        • 解析协议号
        • TCP客户端软件流程
        • UDP客户端软件流程
        • 客户端软件的实现- `connectsock()`
        • 客户端软件的实现-UDP客户端
        • 客户端软件的实现-TCP客户端
        • 客户端软件的实现-异常处理
        • 例1:访问DAYTIME服务的客户端(TCP)
        • 例2:访问DAYTIME服务的客户端(UDP)
      • 2.7.9 Socket编程-服务器软件设计
        • 4种类型基本服务器
        • 循环无连接服务器基本流程
        • 数据发送
        • 获取客户端点地址
        • 循环面向连接服务器基本流程
        • 并发无连接服务器基本流程
        • 并发面向连接服务器基本流程
        • 服务器的实现
        • 服务器的实现-`passivesock() `
        • 服务器的实现-`passiveUDP() `
        • 服务器的实现-`passiveTCP() `
        • 例1:无连接循环DAYTIME服务器
        • 例2:面向连接并发DAYTIME服务器
  • 3 传输层(上)
    • 3.1 传输层服务
      • 3.1.1 本章学习内容概括
      • 3.1.2 传输层服务概述
      • 3.1.3 传输层 vs. 网络层
      • 3.1.4 Internet传输层协议
    • 3.2 复用和分用
      • 3.2.1 分用如何工作?
      • 3.2.2 无连接分用
      • 3.2.3 面向连接的分用
      • 3.2.4 面向连接的分用:多线程Web服务器
    • 3.3 无连接传输协议-UDP
      • 3.3.1 UDP校验和(checksum)
        • 校验和计算示例
    • 3.4 可靠数据传输的基本原理
      • 3.4.1 可靠数据传输概述
        • 可靠数据传输协议基本结构:接口
        • 可靠数据传输协议
      • 3.4.2 Rdt 1.0:可靠信道上的可靠数据传输
      • 3.4.3 Rdt 2.0:产生位错误的信道
        • FSM规约
          • 无错误场景
          • 有错误场景
      • 3.4.4 Rdt 2.1和2.2
        • Rdt 2.0有什么缺陷?
        • Rdt 2.1: 发送方, 应对ACK/NAK破坏
        • Rdt 2.1: 接收方, 应对ACK/NAK破坏
        • Rdt 2.1 vs. Rdt 2.0
      • 3.4.5 Rdt 2.2: 无NAK消息协议
        • FSM片段
      • 3.4.6 Rdt 3.0
        • Rdt 3.0发送方FS
        • Rdt 3.0示例(1)
        • Rdt 3.0示例(2)
        • Rdt 3.0性能分析
        • Rdt 3.0: 停等操作
      • 3.4.7 流水线机制与滑动窗口协议
        • 流水线协议
        • 滑动窗口协议
      • 3.4.8 Go-Back-N(GBN)协议
        • Go-Back-N(GBN)协议: 发送方
        • GBN: 发送方扩展FSM
        • Go-Back-N(GBN)协议: 接收方
        • GBN: 接收方扩展FSM
        • GBN示例
        • 练习题
      • 3.4.9 Selective Repeat(SR)协议
        • Selective Repeat:发送方/接收方窗口
        • SR协议运作方式示例
        • SR协议的“困境”
      • 3.4.10 可靠数据传输原理与协议回顾
  • 4 传输层(下)
    • 4.1 面向连接传输协议-TCP
      • 4.1.1 TCP概述
      • 4.1.2 TCP可靠数据传输
        • TCP可靠数据传输概述
        • TCP:RTT和超时
        • TCP发送方事件
        • TCP发送端程序的伪代码
        • TCP重传示例
        • TCP-各种需重传场景下ACK该如何生成
        • 快速重传机制
        • 快速重传算法
      • 4.1.3 TCP流量控制
        • TCP流量控制原理详述
      • 4.1.4 TCP连接管理
    • 4.2 拥塞控制原理
      • 4.2.1 拥塞控制原理(1)
        • 拥塞的成因和代价:场景1
        • 拥塞的成因和代价:场景2
        • 拥塞的成因和代价:场景3
      • 4.2.2 拥塞控制原理(2)
        • 拥塞控制的方法
        • 案例:ATM ABR拥塞控制
    • 4.3 TCP拥塞控制及TCP性能分析
      • 4.3.1 TCP拥塞控制
        • 加性增—乘性减: `AIMD`
        • TCP慢启动: `SS`
        • Threshold变量
        • Loss事件的处理
        • TCP拥塞控制: 总结
      • 4.3.2 TCP性能分析
        • TCP throughput: 吞吐率
        • 未来的TCP
        • TCP的公平性
    • 4.4 传输层总结

内容提纲:

1 计算机网络概述(上)

1.1 计算机网络基本概念

1.1.1 什么是计算机网络?

计算机网络=通信技术+计算机技术

计算机网络是通信技术计算机技术紧密结合的产物。

1.1.2 通信系统模型

  • 计算机网络就是一种通信网络

1.1.3 定义:计算机网络就是互连的、自治的计算机集合。

  • 自治:无主从关系
  • 互连:互联互通
  • 通信链路

1.1.4 距离远、数量大如何保证互连?

通过交换网络互连主机

1.1.5 什么是Internet?-组成细节角度

  • 全球最大的互联网络
  • ISP(Internet Service Provider)网络互连的“网络之网络

    • 数以百万计的互连的计算设备集合

      • 主机(hosts)=端系统(end systems)
      • 运行各种网络应用
    • 通信链路
      • 光纤、铜缆、无线电、卫星…
    • 分组交换:转发分组(数据包)
      • 路由器(routers)和交换机(switches)

1.1.6 什么是Internet?-服务角度

  • 为网络应用提供通信服务的通信基础设施:
    Web、VolP、Email、网络游戏、电子商务、社交网络…
  • 为网络应用提供应用编程借口(API):
    • 支持应用程序"连接"Internet,发送/接受数据
    • 提供类似于邮政系统的数据传输服务

1.1.7问题

仅有硬件(主机、链路、路由器...)连接,Internet能否顺畅运行?能保证应用数据有序交付吗?...
回答是不能。还需要协议

1.2 计算机网络结构

1.2.1 什么是网络协议?

网络协议(network protocol),简称协议,是为进行网络中的数据交换而建立的规则、标准或约定。协议规定了通信实体之间所交换的消息的格式意义顺序以及针对收到信息或发生的事件所采取的"动作(actions)"。
协议是计算机网络有序运行的重要保证。常见的协议有TCP,IP,HTTP,Skype,802.11等。

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

1.2.2 协议的三要素

  • 语法(Syntax)

    • 数据与控制信息的结构或格式
    • 信号电平
  • 语义(Semantics)
    • 需要发出何种控制信息
    • 完成何种动作以及做出何种相应
    • 差错控制
  • 时序(Timing)
    • 事件顺序
    • 速度匹配

协议规范了网络中所有信息发送和接收过程,是学习网络的重要内容之一。

  • Internet协议标准

    • RFC:Request for Comments
    • IETF:互联网工程任务组(Internet Engineering Task Force)。于此可获得关于协议的最新、最权威信息。
  • 硬件(主机、路由器、通信链路等)是计算机网络的基础
  • 计算机网络中的数据交换必须遵守事先约定好的规则
  • 如同交通系统
  • 任何通信或信息交换过程都需要规则

1.3 网络核心

互联的路由器网络。

1.3.1 数据交换-电路交换

数据交换:实现数据通过网络核心从源主机到达目的主机。

  • 为什么需要数据交换?

    • N2N^2N2链路问题
      如果计算机网络中有NNN台计算机,则每一台计算机需要有N−1N-1N−1条链路,这是不现实的。
    • 保持计算机网络的连通性
    • 适用于不同的网络规模
  • 什么是交换?
    • 动态转接
    • 动态分配传输资源
  • 数据交换的类型
    • 电路交换

      • 最典型电路交换网络:电话网络

      • 电路交换的三个阶段:

        • 建立连接(呼叫/电路建立)
        • 通信
        • 释放连接(拆除电路)
      • 独占资源

      • 电路交换网络如何共享中继线?
        多路复用(Multiplexing)

    • 报文交换
    • 分组交换

多路复用

多路复用(multiplexing),简称复用,是通信技术中的基本概念。

  • 什么是多路复用?
    链路/网络资源(如带宽)划分为“资源片”

    • 将资源片分配给各路“呼叫”(calls)
    • 每路呼叫独占分配到的资源片进行通信
    • 资源片可能“闲置”(idle) (无共享,因为是分配好的)
  • 典型多路复用方法
    • 频分多路复用( frequency division multiplexing-FDM )
    • 时分多路复用( time division multiplexing-TDM )
    • 波分多路复用(Wavelength division multiplexing-WDM)
    • 码分多路复用( Code division multiplexing-CDM )
  • 频分多路复用FDM
    将信号分为频率不同的几段。

    • 频分多路复用的各用户占用不同的带宽资源(请注意,这里的“带宽 ”是频率带宽(单位:Hz)而不是数据的发送速率)
    • 用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带

  • 时分多路复用TDM
    • 时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧),每个用户在每个TDM帧中占用固定序号的时隙
    • 每用户所占用的时隙是周期性出现(其周期就是TDM帧的长度)
    • 时分复用的所有用户是在不同的时间占用相同的频带宽度
  • 波分多路复用WDM
    • 波分复用就是光的频分复用 (准确来说是光的波长复用)

  • 码分多路复用CDM
    • 广泛应用于无线链路共享 (如蜂窝网,卫星通信等)
    • 每个用户分配一个唯一的 m bit码片序列(chipping sequence),其中“0”用“-1”表示、“1”用“+1”表 示,
      例如: S 站的码片序列:(–1 –1 –1 +1 +1 –1 +1 +1)
    • 各用户使用相同频率载波,利用各自码片序列编码数据
    • 编码信号=(原始数据)×××(码片序列)
      • 如发送比特 1(+1),则发送自己的 m bit 码片序列
      • 如发送比特 0(-1),则发送该码片序列的m bit 码片序列的反码
    • 各用户码片序列相互正交(orthogonal)
      1mSi⋅Sj={1,i=j0,i≠j1mSi⋅Sj‾={−1,i=j0,i≠j\frac{1}{m}S_i\cdot S_j =\begin {cases} 1,& i=j \\ 0,&i\not=j \end{cases} \quad \frac{1}{m}S_i\cdot \overline{S_j} =\begin {cases} -1,& i=j \\ 0,&i\not=j \end{cases}m1​Si​⋅Sj​={1,0,​i=ji​=j​m1​Si​⋅Sj​​={−1,0,​i=ji​=j​
    • 令{di}\{di\}{di}为原始数据序列,各用户的叠加向量为
    • 解码: 码片序列与编码信号的内积
      1mSi⋅P={1,Si∈P−1,Si‾∈P0,Si,Si‾∉P\frac{1}{m}S_i\cdot P=\begin{cases} 1, & S_i\in P \\ -1,& \overline{S_i}\in P \\ 0, & S_i,\overline{S_i}\notin P \end{cases}m1​Si​⋅P=⎩⎪⎨⎪⎧​1,−1,0,​Si​∈PSi​​∈PSi​,Si​​∈/​P​
    • 举例:单用户
    • 举例:多用户

1.3.2 数据交换-报文、分组交换(1)

报文交换

  • 报文:源(应用)发送信息整体 (比如:一个文件 )

分组交换

现代网络通信数据交换基本使用分组交换技术。

  • 分组:报文分拆出来的一系列相对较小的数据包
  • 分组交换需要报文的拆分重组
  • 产生额外开销


  • 分组交换:统计多路复用(Statistical Multiplexing)

    不同端分发的文件的分组同时进入链路。
    如图带宽为1.5Mb/s。
    带宽是不变的,极端情况例如A分发了文件,而B没有分发文件,则链路中A分发文件的分组占了1.5Mb/s带宽;
    若A与B都分发了文件,则他们分发文件的分组一共占1.5Mb/s带宽。
    由此可知统计多路复用技术不会有资源(链路带宽)闲置的情况出现。
  • 存储-转发(store-and-forward)交换方式

    • 报文交换分组交换均采用存储-转发交换方式
    • 区别:
      • 报文交换以完整报文进行“存储-转发”
      • 分组交换以较小的分组进行“存储-转发”
      • 问题:报文交换与分组交换孰优孰劣?下一节将回答这个问题。

1.3.3 数据交换-报文、分组交换(2)

衡量哪种交换方式更好的标准之一是分组交换的传输延迟的大小

  • 传输延迟
    发送主机:

    • 接收应用报文(消息)
    • 拆分为较小长度为 LLL bits的分组(packets)
    • 在传输速率为 RRR 的链路上传输分组

  • 举例说明报文交换和分组交换孰优孰劣

    • 报文交换


    • 分组交换





明显,分组交换优势更大。

分组交换的报文交付时间

例题:

1.3.4 数据交换-报文、分组交换(3)

  • 分组交换电路交换性能孰优孰劣?

    • 电路交换:单个用户会独占链路,造成资源浪费。
    • 分组交换:采用统计多路复用技术,允许更多用户同时使用网络,网络资源充分共享。
  • 分组交换绝对优于电路交换吗?
    • 分组交换适用于突发数据传输网络
      例如我们下载文件,有时候突然要下载,

      • 资源充分共享
      • 简单、无需呼叫建立(电路交换需要)
    • 分组交换可能产生拥塞(congestion):分组延迟和丢失
      • 需要协议处理可靠数据传输和拥塞控制
    • 问题:如何提供电路级性能保障?
      例如音视频应用所需的带宽保障。

1 计算机网络概述(下)

1.4 计算机网络性能

1.4.1 速率

速率数据率(data rate)或称数据传输速率比特率(bit rate) 。速率往往是指额定速率或标称速率 。

  • 单位时间(秒)传输信息(比特)量
  • 计算机网络中最重要的一个性能指标
  • 单位:b/s(或bps)、kb/s、Mb/s、Gb/s
  • k=10310^3103、M=10610^6106、G=10910^9109

1.4.2 带宽

  • 带宽”(bandwidth)原本指信号具有的频带宽度, 即最高频率与最低频率之差,单位是赫兹(Hz)
  • 网络的“带宽”通常是数字信道所能传送的“最高数据率”,单位:b/s (bps)
  • 常用的带宽单位:
    • kb/s (10310^3103 b/s)
    • Mb/s(10610^6106 b/s)
    • Gb/s(10910^9109 b/s)
    • Tb/s(101210^121012 b/s)

1.4.3 延迟/时延(delay或latency)

问题:分组交换为什么会发生丢包和时延?
回答:分组在路由器缓存中排队
那什么时候会出现分组排队的情况?

  • 分组到达速率超出输出链路容量时
  • 等待输出链路可用时

1.4.4 四种分组延迟

  • dprocd_{proc}dproc​: 结点处理延迟 (nodal processing delay)

    • 差错检测
    • 确定输出链路
    • 通常<msec(延迟时间为毫秒级)
  • dqueued_{queue}dqueue​: 排队延迟 (queueing delay)
    • 等待输出链路可用
    • 取决于路由器拥塞程度
    • R: 链路带宽(bps)
    • L: 分组长度 (bits)
    • a: 平均分组到达速率
    • 流量强度(traffic intensity)= La/R
      • La/R ~ 0: 平均排队延迟很小
      • La/R -> 1: 平均排队延迟很大
      • La/R > 1: 超出服务能力,平均排队延迟无限大!
  • dtransd_{trans}dtrans​: 传输延迟 (transmission delay)
    • L: 分组长度(bits)
    • R: 链路带宽 (bps)
    • dtransd_{trans}dtrans​ = L/R
  • dpropd_{prop}dprop​: 传播延迟(propagation delay)
    • d: 物理链路长度
    • s: 信号传播速度 (~2×108 m/sec)
    • dpropd_{prop}dprop​ = d/s

传输延迟和传播延迟的区别:

1.4.5 时延带宽积(单位:bits(比特))

链路的时延带宽积又称为以比特为单位的链路长度

1.4.6 分组丢失(丢包)

三大原因:

  • 队列缓存容量有限
  • 分组到达已满队列将被丢弃 (即丢包)
  • 丢弃分组可能由前序结点或源重发(也可能不重发)

1.4.7 吞吐量/率(Throughput)

吞吐量 :表示在发送端与接收端之间传送数据速率 (b/s)

  • 即时吞吐量: 给定时刻的速率
  • 平均吞吐量 : 一段时间的平均速率

讨论下面情况的吞吐量是多少

吞吐量是RsR_sRs​还是RcR_cRc​?

Internet场景的吞吐量

1.5 计算机网络体系结构

1.5.1 计算机网络体系结构概述

为什么需要计算机网络体系结构?
因为计算机网络是一个非常复杂的系统 , 涉及许多组成部分,需要一个抽象的体系概念将其统一起来。

之所以说计算机网络很复杂,是因为它牵涉到大量硬件和软件,例如:

  • 主机(hosts)
  • 路由器(routers)
  • 各种链路(links)
  • 应用(applications)
  • 协议(protocols)
  • 硬件、软件
  • ……

那么问题是:是否存在一种系统结构有效描述计算机网络呢?利用什么样的结构才适合呢?
答案:分层结构

复杂系统的分层结构

类比:航空旅行

  • 分层结构每层完成一种(类)特定服务/功能
    每层依赖底层提供的服务,通过层内动作完成相应功能。(底层提供的服务好比一个接口,其上层来说是透明的,只是给其使用而已。)
  • 网络体系结构是从功能上描述计算机网络结构
  • 计算机网络体系结构简称网络体系结构 (network architecture)
    分层结构
  • 每层遵循某个/些网络协议完成本层功能
    由此可以指导协议是按使用的。
  • 计算机网络体系结构是计算机网络的各层及其协议的集合
  • 体系结构是一个计算机网络的功能层次及其关系的定义
  • 体系结构是抽象的
    只是将计算机网络抽象出来,具体由硬件还是软件实现哪些功能不在考虑范围内。

为何采用分层结构?

  • 结构清晰,有利于识别复杂系统的部件及其关系
    分层的参考模型(reference model )
  • 模块化的分层易于系统更新维护
    • 任何一层服务实现的改变对于系统其它层都是透明的
    • 例如,登机过程的改变并不影响航空系统的其它部分(层)
  • 有利于标准化
    将某个分层模型定为一个框架。
  • 分层是否有不利之处?
    效率较低!例如办某种证件或是申请某些东西,需要一层一层批下来,非常慢!所以会出现“跨层实现”这种处理方式。

分层网络体系结构基本概念

  • 实体(entity) 表示任何可发送或接收信息的硬件或软件进程。
  • 协议是控制两个对等实体进行通信的规则的集合。协议是“水平的” 。
  • 任一层实体需要使用下层服务,并遵循本层协议,实现本层功能,向上层提供服务。服务是“垂直的”。
  • 下层协议的实现对上层的服务用户是透明的。
  • 同系统的相邻层实体间通过接口进行交互,通过服务访问点 SAP (Service Access Point),交换原语,指定请求的特定服务。

1.5.2 OSI参考模型(1)

开放系统互连 (OSI)参考模型是由国际标准化组织 (ISO) 于1984年提出的分层网络体系结构模型,目的是支持异构网络系统的互联互通 ,它是异构网络系统互连的国际标准,也是理解网络通信的最佳学习工具 (理论模型) (理论成功,市场失败 )。

7层(功能),每层完成特定的网络功能

层级 作用 包含的协议
应用层 为特定应用程序提供数据传输服务。 ( TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 对上层信息进行变换,保证一个主机应用层信息被另一个主机的应用程序理解,表示层的数据转换包括数据的加密、压缩、格式转换。 JPEG、ASCII、GIF、DES、 MPEG
会话层 管理主机之间的会话进程,即负责建立、管理、终止。 RPC、SQL、NFS
传输层 提供端对端的接口。 TCP,UDP
网络层 为数据包选择路由。 IP,ICMP,ARP,RARP)
数据链路层 传输有地址的帧,错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层 以二进制数据形式在物理媒体上传输数据。 ISO2110,IEEE802,IEEE802.2

OSI参考模型解释的通信过程

从主机A到主机B的传输过程(注意传输的方向),反之同理。

可以看到不同主机的同一层之间都有协议进行规范和约束,而且中间系统只有物理层数据链路层网络层,剩余的4层合称为端-端层(end-end)

OSI参考模型数据封装与通信过程

数据无论经过哪一层(除物理层数据链路层之外),都会被该层加一个“某某层头”,加“头”之后称为数据包,在OSI模型中称之为协议数据单元

为什么需要数据封装?

  • 增加控制信息
    构造协议数据单元 (PDU) 。“某某头”中包含有控制信息。
  • 控制信息主要包括:
    • 地址(Address): 标识发送端/接收端
    • 差错检测编码(Error-detecting code): 用于差错检测或纠正
    • 协议控制(Protocol control): 实现协议功能的附加信 息,如: 优先级(priority)、服务质量(QoS)、 安全控制等

1.5.3 OSI参考模型(2)

本节详细介绍物理层、数据链路层、网络层的功能。(只有数据链路层“加头又加尾”)

物理层功能

  • 接口特性
    机械特性、电气特性、功能特性、规程特性
  • 比特编码
    考虑该如何给数据编码进行传输。
  • 数据率
  • 比特同步
    在数据通信中最基本的同步方式就是“比特同步”(bit synchronization)或位同步。比特是数据传输的最小单位。比特同步是指接收端时钟已经调整到和发送端时钟完全一样,因此接收端收到比特流后,就能够在每一个比特的中间位置进行判决。比特同步的目的是为了将发送端发送的每一个比特都正确地接收下来。
  • 时钟同步
  • 传输模式
    • 单工(Simplex)
      数据只能单向传输。例如电视,只能接受电视台的信号。
    • 半双工(half-duplex)
      数据可以交替传输。例如对讲机。
    • 全双工(full-duplex)
      数据可以同时在双方之间传输。例如手机、微信通话。

数据链路层功能

数据链路层处理过的数据称为,并以其作为数据单位。

  • 负责结点-结点(node-to-node)数据传输
  • 组帧(Framing)
    通常来说就是给数据“加头加尾”。“头尾”中含有差错检测等信息,但信息会依协议的不同而有所不同。
  • 物理寻址(Physical addressing)
    在帧头中增加发送端和/或接收端的物理地址标识数据帧的发送端和/或接收端。

在数据中添加源物理地址和目的物理地址是非常重要的,否则可能无法准确发送数据。例如广播通信(所有主机连接在同一条链路上):

  • 流量控制(Flow control)
    避免淹没接收端。
  • 差错控制(Error control)
    检测并重传损坏或丢失帧,并避免重复帧 。
  • 访问(接入)控制(Access control)
    在任一给定时刻决定哪个设备拥有链路(物理介质)控制使用权 。

网络层功能

在同一个网络里,凭数据链路层的物理地址就可以传输数据,但如果要跨越多个网络进行数据传输则需要加上网络层的地址。

  • 路由(Routing)

    • 路由器(或网关)互连网络,并路由分组至最终目的主机
    • 路径选择
  • 分组转发

    其中红色英文字母代表网络层地址,蓝色数字代表数据链路层物理地址,经过这样的处理就可以进行跨网络数据传输了。

1.5.4 OSI参考模型(3)

本节详细介绍4个端-端层的功能。

传输层功能

负责源-目的(端-端) (进程间) 完整报文传输 。