第一章 计算机网络体系结构

#计算机网络 #应试笔记与八股

1.1 计算机网络概述

1.1.1 计算机网络的概念

定义:

  • 计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备线路(可以是无线线路)连接起来,由功能完善的软件实现资源共享信息传递的系统。
    Pasted image 20240131012214.png
    主要功能:
  • 资源共享:同一网络上的其他计算机可以使用某台计算机的计算机资源(硬件、软件、数据)的行为
  • 信息传递
  • 分布式处理:多台计算机各自承担同一工作的不同部分
  • 提高可靠性
  • 负载均衡

1.1.2 计算机网络的组成

计算机网络的组成可以按照划分的角度不同按照如下三种方式分类:
从组成部分上可分为:

  • 硬件:主机(终端系统)、通信链路(网线、光纤)、交换设备(路由器、交换机)、通信处理机(网卡)等
  • 软件:网络操作系统、FTP程序、邮件收发系统等
  • 协议

从工作方式上可分为:

  • 边缘部分(可理解为终端设备):通常可分为C/S方式和P2P方式两种
  • 核心部分
    Pasted image 20240131215832.png

1.1.3 计算机网络的功能

从功能组成上可分为:

  • 通信子网:实现数据通信
  • 资源子网:实现资源共享/数据处理
    例如对于七层模型:
    Pasted image 20240131220430.png

1.1.4 计算机网络的分类

按范围可以分为:

  • 广域网(WAN)
  • 城域网(MAN)
  • 局域网(LAN)
  • 个人区域网(PAN)
    以上技术的具体划分一般不以距离作为标准,而根据其使用的技术来划分(例如使用拨号上网和互联网技术,那就应当被划分为广域网)。广域网通常使用交换技术,局域网通常使用广播技术

按照使用者可以分为:

  • 公用网
  • 专用网

按照交换技术可以分为:

  • 电路交换(例如打电话,特点是占线使用)
  • 报文交换(将数据转化为报文,特点是存储并转发)
  • 分组交换(将报文分组管理就是分组交换,特点是存储并转发)

按照拓扑结构可分为:
Pasted image 20240131223838.png
其中,星型网络中,每N个节点需要N-1个链路;网状型是当前互联网常用结构

按传输技术可分为:

  • 广播式网络,一般共享公共通信信道
  • 点对点网络,使用分组存储转发路由选择机制

1.1.5 性能指标

速率

  • 数据率数据传输率比特率(bit/s)
  • 注:在形容带宽时,通常采用千进制,例如1Tb/s=1000Gb/s (T:太、G:吉);而在存储容量时通常采用1024进制,例如1KB=1024B。注意,1B=1Byte=8bit=8b。

带宽

  • 指网络通信线路传送数据的能力,即能通过该网线的最高比特率(原指在模拟信号中某个信号具有的频带宽度,即最高频率与最低频率之差,单位Hz)

吞吐量

  • 表示单位时间内通过某个网络或接口的数据量
  • 注:和速率的区别是研究对象不同,速率的对象是数据传输的速率,而吞吐量是指一个物理网络或一个物理设备的吞吐量,例:
    Pasted image 20240131230902.png
    时延
  • 指数据(报文、分组、比特流)从网络一端到另一端所需的时间(单向),也叫延迟迟延,单位为秒(s)
  • 时延主要可以分为以下四类
    • 发送时延(传输时延):从发送分组的第一个bit算起,直到最后一个bit发送完毕所需的时间
    • 传播时延:电磁波在链路上传播所需要的时间
    • 排队时延:等待输入、输出链路可用的时间
    • 处理时延:转发设备(如路由器)检错,处理的时间

时延带宽积

  • 单位:bit
  • 意义:以bit为单位的链路长度,或"某段链路现在有多少bit"
    Pasted image 20240131232718.png

往返时延RTT

  • 从发送方发送数据开始(从放第一个bit开始),到发送方收到接收方确认信息(到接收到第一个bit为止)为止总共经历的时延。
  • Windows和Linux等系统的ping命令返回数据即RTT
  • RTT越大,在收到确认之前,可以发送的数据越多
  • RTT包括:
    • 往返传播时延,即传播时延*2,不包括发送时延,排队时延,处理时延
    • 末端处理时间

利用率
利用率主要可以分为信道利用率和网络利用率两种:
信道利用率: 网络利用率:
信道利用率的加权平均值

时延和利用率的关系:
Pasted image 20240131233509.png

1.2 计算机网络体系结构与参考模型

1.2.1 计算机网络分层结构

分层的基本原则:
1. 各层之间相互独立,每层只实现一种相对独立的功能。
2. 每层之间界限自然清晰,易于理解,互相交流尽可能少。
3. 结构上可分隔开,每层都采用最合适的技术实现。
4. 保持下层对上层的独立性,上层单向使用所有下层提供的服务。
5. 分层结构应该能促进标准化工作。

定义:
计算机网络体系结构

  • 计算机网络体系结构是计算机网络各层及其协议的集合。
  • 计算机网络体系结构是抽象的,能提供该功能的硬件和软件是该体系结构的一种实现。

实体

  • 第n层网络中的活动元素称为n层实体,同一层的实体叫做对等实体

协议

  • 为每一对等实体中的数据交换而建立的规则或标准称为网络协议,是水平方向的协议。

接口

  • 上层使用下层服务的接口,上下两层之间通信的桥梁。
  • 只有相邻层之间才有接口,

服务

  • 下层为相邻上层提供的功能调用,是垂直方向的。
  • 下层在向上层所提供的服务包含更下层的功能,但是只有相邻两层之间才能提供服务,且为单向服务(可以理解为依赖和包装的关系)。

服务是垂直的,协议是水平的。

SDU服务数据单元

  • 为完成上一层任务所需要的功能而传送的数据,即上一层的PDU协议数据单元

PCI协议控制信息

  • 控制协议操作的信息,可以理解为控制信息

PDU协议数据单元

  • 对等层次之间传送的数据单位,PCI+SDU=PDU

SDU、PCI、PDU之间的关系如下图所示:
Pasted image 20240203014950.png

PDU越向下层越大
Pasted image 20240203022021.png

1.2.2 ISO/OSI参考模型和TCP/IP模型

计算机网络分层结构可以分为:

  • OSI/ISO 七层模型。该模型为国际标准化组织(ISO)提出的法定标准
  • TCP/IP 四层模型。该模型是美国国防部建立的实事标准
  • 五层考试模型,该模型是考试标准。

1.2.2.1 ISO/OSI参考模型

OSI为开放互联参考模型,但是理论成功,事实失败。
OSI七层模型如下:
Pasted image 20240204234121.png

各层详细定义:
应用层

  • 所有能和用户交互产生网络流量的程序,例如HTTP协议FTP协议、SMTP协议、DNS、DHCP、SSH等。
  • 应用层的详细笔记见第六章。

表示层

  • 用于处理在两个系统中交换信息的表示方式,主要负责语法和语义的转换、数据加密和解密、数据压缩和恢复等。例如json parser、jpeg编解码器、ASCII解码器等。
  • 在TCP/IP协议和五层协议中,表示层被纳入到应用层中

会话层

  • 向表示层实体/用户进程提供建立连接、数据传输、终止会话以及在通信时效时从校验点和同步点继续恢复通信实现数据同步的功能。例如socks。注意没有TCP、UDP,这两个是传输层的协议。
  • 在TCP/IP协议和五层协议中,会话层被纳入到应用层中

传输层

  • 负责主机中两个进程间的通信,是端到端(即端口)的通信。传输单位是报文段或用户数据段。
  • 是资源子网和通信子网的接口。
  • 主要功能有
    • 可提供可靠传输(TCP、SCTP等,基于确认机制)和不可靠传输(UDP、DCCP等)
    • 差错控制
    • 流量控制:控制发送接收速度、分包发送
    • 复用分用:
      • 复用:多个应用层进程可同时使用下面运输层的服务(多个端口的数据在这层打包并传输向网络层,端口是常用的复用方式)
      • 分用:运输层把收到的信息分别交付给上面应用层中相应的进程
  • 区分"端到端"、"点到点":
    • 端到端的通信主要是针对传输层来说的,点到点的通信是针对其下三层来说的。
    • 端到端是从发送端到接收端,发送端和接收端通常用主机+端口来进行区分;点到点是两个节点之间的通信,其主要基于MAC地址或IP地址进行。
  • 传输层详细笔记见第五章。

网络层

  • 负责把分组(packet)从源端传送到目的端,为分组(packet)交换网上的不同主机提供通信服务。主要协议有IP、IPX、ICMP、IGMP、ARP、RARP、OSPF等。
  • 传输单位是数据报。
  • 主要功能有:
    • 路由选择:
      • 例如源端和目的端间有多条通路时,网络层会负责选择较优路径传送:
        Pasted image 20240205002711.png
    • 流量控制
    • 差错控制:奇偶校验等
    • 拥塞控制:
      • 与路由选择的区别是,当所有节点都来不及接收分组而不得不丢弃大量分组(packet)的话,则此时网络就出于拥塞状态。而拥塞控制就是缓解这种拥塞(如全局降速等)。
  • 网络层详见第四章。

数据链路层

  • 负责把网络层传下来的数据报组装成帧,传输单位为帧。主要协议有PPP、SDLC、HDLC、STP。
  • 主要功能:
    • 成帧(定义帧的开始和结束)。
    • 差错控制。差错可分为帧错和位错,可以丢弃帧或纠错。
    • 流量控制。
    • 访问、接入控制,控制对信道的访问。例如对于独占式信道,可以控制其分时共享:
      Pasted image 20240205003447.png
  • 在TCP/IP协议和五层协议中,数据链路层和物理层被合并为网络接口层

物理层

  • 在物理介质上实现比特流的传输,单位为bit。主要协议有:Rj45、802.3
  • 功能:
    • 定义接口特性,例如使用8芯同轴电缆、光纤等。
    • 定义传输模式,例如单工、半双工、全双工。
    • 定义传输速率
    • 比特同步
    • 比特编码(什么样的电压表示1,什么样的电压表示0)
  • 在TCP/IP协议和五层协议中,数据链路层和物理层被合并为网络接口层

至此,则不难理解在OSI模型下,两台电脑间互相通信的过程图为:
Pasted image 20240205010846.png

其中:

  • 第二层数据链路层不止增加了头部H2,还增加了尾部L2
  • 路由器等中间系统至多涉足通信子网的内容,其上部四层近似于直接连接(虚线表示),是端到端的通信;而下三层是点到点的通信。

补充定义:
报文(message):

  • 位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。

报文段(segment):

  • 通常是指起始点和目的地都是传输层的信息单元。

分组/(packet):

  • 分组是在网络中传输的二进制格式的单元,为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层。

数据报(datagram):

  • 面向无连接的数据传输,其工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。通常是指起始点和目的地都使用无连接网络服务的网络层的信息单元。(指IP数据报)

(frame):

  • 帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。

数据单元(data unit):

  • 指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。

1.2.2.2 TCP/IP参考模型

TCP/IP主要有四层,其与OSI七层协议的主要区别及TCP/IP的协议栈如下图:
Pasted image 20240205011420.png
注:TCP/IP协议中不止包含TCP、IP两种协议

OSI模型和TCP模型的相同点:

  1. 都分层
  2. 都是基于独立的协议栈的概念
  3. 实现异构网络的互联(在早期各个厂家都规定了各自的网络协议,而OSI和TCP都可以将这些由不同协议组成的网络连接起来)

OSI模型和TCP模型的不同点:

OSI模型
TCP/IP模型
定义内容 OSI定义了服务、协议、接口
发明过程 先设计的模型再设计的协议,在设计时不偏向特定协议 先设计的协议在发明的模型,在设计时主要偏向TCP&IP协议,将IP作为设计的重要层次
网络层 支持无连接方式(IP)和面向链接方式 支持无连接方式
传输层 支持面向连接方式 支持无连接方式面向链接方式

面向连接方式

  • 面向连接主要分为三个阶段:建立连接-数据传输-释放连接(例如TCP)

无连接方式

  • 不需要链接直接进行数据传输的方式(例如UDP)

1.2.2.3 五层网络协议

把TCP/IP协议中的网络接口层重新拆回数据链路层和物理层即为五层参考模型,本身也是TCP/IP协议:
Pasted image 20240205012232.png

五层模型数据交换流程如下:
Pasted image 20240205013952.png

1.2.2.4 实验验证

1.2.2.4.1 验证HTTP与TCP的关系

在Windows下可以使用Powershell命令查询 www.baidu.com 的IP地址:

Resolve-DnsName www.baidu.com

随后会回复如下信息(节选):

Name                           Type   TTL   Section    NameHost
----                           ----   ---   -------    --------
www.baidu.com                  CNAME  99    Answer     www.a.shifen.com

Name       : www.a.shifen.com
QueryType  : A
TTL        : 81
Section    : Answer
IP4Address : 39.156.66.18

随后即可得到IP: 39.156.66.18

随后在Python中输入如下代码:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("39.156.66.18", 80))                           #本行填上一步获得的百度IP并建立TCP连接(当然可以直接填写百度的域名)
s.send("GET / HTTP/1.1\r\n\r\n".encode("utf-8"))
print(s.recv(10000))

即可打印出百度的html代码。
在上述步骤中,HTTP只是基于TCP的一个解析协议,本质还是建立了TCP连接,并通过TCP连接发送HTTP的GET请求命令。

本章Q&A

  1. 世界上最早的计算机网络是:

    答案 ARPnet
  2. 《王道》P8Pasted image 20240212185010.png

    答案 A
    示意图参见: [[第一章 计算机网络体系结构#^33v7if]]

应试笔记与八股

  1. 《王道》P7Pasted image 20240212184522.png

    答案 C
  2. 《王道》P7Pasted image 20240212184616.png

    答案 D、例如P2P传输下。(其实很多网络通信的需求不需要数据库)
  3. 《王道》P7Pasted image 20240212184744.png

    答案 C
  4. 《王道》P7Pasted image 20240212184838.png

    答案 B、广域网通常使用交换技术,局域网通常使用广播技术