计算机网络
# 网络层计算机网络
# 1.因特网概述
# 1.1网络、互连网(互联网)和因特网
- **网络(Network)由若干结点(Node)和连接这些结点的链路(Link)**组成。
- 多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)因此,互联网是“网络的网络(Network of Networks) "。
- **因特网(Internet)**是世界上最大的互连网络(用户数以亿计,互连的网络数以百万计)。
# 1.2互联网发展的阶段
因特网服务提供者ISP(Internet Service Provider)
基于ISP的三层结构的因特网
# 1.3因特网的标准化
# 1.4因特网的组成
- 边缘部分 由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
- 核心部分 由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
# 2.三种交换方式
# 电路交换
- 电话交换机接通电话线的方式称为电路交换;
- 从通信资源的分配角度来看,交换(Switching)就是按照某种方式动态地分配传输线路的资源;
- 电路交换的三个步骤:
- 建立连接(分配通信资源)
- 通话(一直占用通信资源)
- 释放连接(归还通信资源)
# 分组交换
# 对比
# 3.计算机网络的定义与分类
# 定义
计算机网络的精确定义并未统一
计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合。
互连是指计算机之间可以通过有线或无线的方式进行数据通信;
自治是指独立的计算机,它有自己的硬件和软件,可以单独运行使用;
集合是指至少需要两台计算机
计算机网络的较好的定义是:计算机网络主要是由一些通用的 可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,开能支持广泛的和日益增长的应用。
- 计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机等智能硬件。
- 计算机网络并非专门用来传送数据,而是能够支持很多种的应用(包括今后可能出现的各种应用)。
# 分类
# 4.计算机网络的性能指标
性能指标可以从不同的方面来度量计算机网络的性能。常用的计算机网络的性能指标有以下8个:
- 速率
- 带宽
- 吞吐量
- 时延
- 时延带宽积
- 往返时间
- 利用率
- 丢包率
# 速率
# 带宽
# 吞吐量
# 时延
# 时延带宽积
# 往返时间
# 利用率
# 丢包率
# 5.计算机网络体系结构
# OSI体系结构/TCP/IP体系结构
# 物理层
# 数据链路层
# 网络层
# 运输层
# 应用层
# 进程间的通信
# 实体
实体:任何可发送或接收信息的硬件或软件进程。 对等实体:收发双方相同层次中的实体。
# 协议
协议:控制两个对等实体进行逻辑通信的规则的集合。
协议的三要素:语法 语义 同步
语法:定义所交换信息的格式
语义:定义收发双方所要完成的操作
同步:定义收发双方的时序关系
# 服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。 协议是“水平的”,服务是“垂直的”。 实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是"透明"的。
协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元。
服务数据单元SDU:同一系统内,层与层之间交换的数据包称为服务数据单元。
多个SDU可以合成为一个PDU;一个SDU也可划分为几个PDU。
在osi参考模型中,自下而上第一个提供端到端服务的层次是传输层
# 物理层
- 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
- 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。
导引型传输媒体
- 双绞线
- 同轴电缆
- 光纤
非导引型传输媒体
- 微波通信(2~40GHz)
# 物理层协议的主要任务
- 机械特性
- 指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置。
- 电气特性
- 指明在接口电缆的各条线上出现的电压的范围。
- 功能特性
- 指明某条线上出现的某一电平的电压表示何种意义。
- 过程特性
- 指明对于不同功能的各种可能事件的出现顺序。
# 数据链路层
- **链路(Link)**就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
- **数据链路(Data Link)**是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
- 数据链路层以帧为单位传输和处理数据。
数据链路层的三个重要问题
封装成帧
差错检测
- 可靠传输
尽管误码是不能完全避兔的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。
# 封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
- 帧头和帧尾中包含有重要的控制信息。
- 帧头和帧尾的作用之一就是帧定界。
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
面向比特的物理链路使用比特填充的方法实现透明传输。
对于层传输过来的数据,会先扫描,如果里面包括帧定界,就加转义符
每5个1填充一个0(零比特填充法)
# 差错检测
- 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
- 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
# 奇偶校验
- 在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数
为奇数((奇校验)或偶数(偶校验)。
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
- 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);
# 循环冗余校验CRC(Cyclic Redundancy Check)
- 收发双方约定好一个生成多项式G(x);
- 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
- 接收方通过生成多项式来计算收到的数据是否产生了误码;
异或操作,发送信息后面补充的位数为多项式的最高次幂
- 检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
- 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
- 循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。
- 在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。
# 可靠传输
使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。
数据链路层向上层提供的服务类型
- 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
比特差错只是传输差错中的一种。 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。
# 可靠传输实现机制
停止-等待协议SW 回退N帧协议GBN 选择重传协议SR
这三个协议并不局限于数据链路层,可以应用到各层协议上去
# 停止等待协议
避免确认丢失或者确认迟到可以给确认的信息中加上分组编号
- 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组.
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1.
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
- 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
- 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
- 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。
# 停止等待协议信道利用率
- 当往返时延RTT远大于数据帧发送时延Tp时(例如使用卫星链路),信道利用率非常低。
- 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
- 为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。
# 回退N帧协议GBN
回退N帧协议的接收窗口尺寸WR只能等于1,因此接收方只能按序接收正确到达的数据分组。
一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
注意: 选择重传协议为了使发送方仅重传出现差错的分组接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!
# 选择重传协议SR
# 点对点协议PPP
- 点对点协议
PPP(Point-to-Point Protocol)
是目前使用最广泛的点对点数据链路层协议
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
对各种协议数据报的封装方法(封装成帧)
链路控制协议LCP 用于建立、配置以及测试数据链路的连接
一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议
# 封装成帧
**标志(Flag)**字段:PPP帧的定界符,取值为Ox7E
**地址(Address)**字段:取值为OxFF,预留(目前没有什么作用
**控制(Control)**字段:取值为Ox03,预留(目前没有什么作用)
**协议(Protocol)**字段:指明帧的数据部分送交哪个协议处理
- 取值0x0021表示:帧的数据部分为IP数据报
- 取值OxC021表示:帧的数据部分为LCP分组
- 取值0x8021表示:帧的数据部分为NCP分组
**帧检验序列(Frame Check Sequence)**字段:CRC计算出的校验位
# 透明传输
透明传输——面向字节的异步链路采用插入转义字符的字节填充法
透明传输 -面向比特的同步链路采用插入比特0的比特填充法
# 差错检测
# 工作状态
# 媒体接入控制
- 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
# 静态划分信道
信道复用
- 复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。
- 当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
频分复用FDM
时分复用TDM
波分复用WDM
码分复用CDM
# 共享式以太网
**以太网(Ethernet)**以曾经被假想的电磁波传播介质——以太(Ether)来命名。
以太网目前已经从传统的共享式以太网发展到交换式以太网。
# 网络适配器和MAC地址
# 网络适配器
要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。
在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的I/O总线以并行传输方式进行。
网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。
网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。
在确保网卡硬件正确的情况下,为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序。驱动程序负责驱动网卡发送和接收帧。
# MAC地址
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。
在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址。由于这类地址是用于媒体接入控制(Medium Access Control,MAC)的,因此被称为MAC地址。
MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址。MAC地址有时也被称为物理地址。属于数据链路层的范畴。
计算机中通常会包括两块网卡:接入有线局域网的以太网卡,接入无限局域网的Wi-Fi网卡。每块网卡都有一个全球唯一的MAC地址。
MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
单播MAC地址
广播MAC地址
多播MAC地址
网卡从网络上每收到一个帧,就检查帧首部中的目的MAC地址,按以下情况处理:
- 如果目的MAC地址是广播地址(FF-FF-FF-FF-FF-FF),则接受该帧。
- 如果目的MAC地址与网卡上固化的全球单播MAC地址相同,则接受该帧。
- 如果目的MAC地址是网卡支持的多播地址,则接受该帧。
- 除上述(1)、(2)和(3)情况外,丢弃该帧。
网卡还可被设置为一种特殊的工作方式:**混杂方式(Promiscuous Mode)。**工作在混杂方式的网卡,只要收到共享媒体上传来的帧就会收下,而不管帧的目的MAC地址是什么。
对于网络维护和管理人员,这种方式可以监视和分析局域网上的流量,以便找出提高网络性能的具体措施。
**嗅探器(Sniffer)**就是一种工作在混杂方式的网卡,再配合相应的工具软件(WireShark),就可以作为一种非常有用的网络工具来学习和分析网络。
混杂方式就像一把“双刃剑”,黑客常利用这种方式非法获取网络用户的口令。
用户应尽量确保自己拥有的全球单播MAC地址不被泄露。 为了避免用户设备连接Wi-Fi热点时MAC地址泄露的安全问题,目前大多数移动设备都已经采用了随机MAC地址技术。
# CSMA/CD协议
# CSMA/CD协议的基本原理
共享总线以太网具有天然的广播特性,即使总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各站点。
为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD,它是**载波监听多址接入/碰撞检测(Carrier Sense Multiple Access Collision Detection)**的英文缩写词。
载波监听检测到总线空闲,但总线并不一定空闲。
使用CSMA/CD协议的共享总线以太网上的各站点,只是尽量避免碰撞并在出现碰撞时做出退避后重发的处理,但不能完全避免碰撞。
在使用CSMA/CD协议时,由于正在发送帧的站点必须“边发送帧边检测碰撞”,因此站点不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信(双向交替通信)。
# 共享式以太网的争用期
使用CSMA/CD协议的共享总线以太网上的任意站点在发送帧的过程中都可能会遭遇碰撞。
# 共享式以太网的最小帧长和最大帧长
# 共享以太网的退避算法
# 共享以太网的信道利用率
# 物理层扩展以太网
共享总线以太网中两站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使CSMA/CD协议无法正常工作。
# 在数据链路层扩展以太网
网桥(bridge)工作在数据链路层(包含其下的物理层),因此网桥具备属于数据链路层范畴的相关能力。
网桥可以识别帧的结构。
网桥可以根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧。
网桥收到帧后进行登记(即自学习),登记的内容为帧的源MAC地址和进入网桥的接口号。
# 透明网桥的生成树协议STP
避免环路
# 交换式以太网
仅使用交换机(而不使用集线器)的以太网就是交换式以太网。
共享式以太网:
交换式以太网:
交换机的每个接口可以连接计算机,也可以连接集线器或另一个交换机。
当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像独占传输媒体那样,无碰撞地传输数据,这样就不需要使用CSMA/CD协议了。
当交换机的接口连接的是集线器时,该接口就只能使用CSMA/CD协议并只能工作在半双工方式。
# 共享式以太网和交换式以太网对比
# 以太网的MAC帧格式
# 虚拟局域网
# 虚拟局域网产生给的背景
将多个站点通过一个或多个以太网交换机连接起来就构建出了交换式以太网。交换式以太网中的所有站点都属于同一个广播域。随着交换式以太网规模的扩大,广播域也相应扩大。(广播风暴)
TCP/IP协议栈中的很多协议都会使用广播:
- 地址解析协议ARP
- 路由信息协议RIPv1
- 动态主机配置协议DHCP
分隔广播域的办法:
- 路由器隔离广播域(成本较高)
- 虚拟局域网技术
# 虚拟局域网VLAN
虚拟局域网(Virtual Local Area Network,VLAN)是一种将局域网内的站点划分成与物理位置无关的逻辑组的技术,一个逻辑组就是一个VLAN,VLAN中的各站点具有某些共同的应用需求。
属于同一VLAN的站点之间可以直接进行通信,而不同VLAN中的站点之间不能直接通信。
连接在同一交换机上的多个站点可以属于不同的VLAN,而属于同一VLAN的多个站点可以连接在不同的交换机上。
# 虚拟局域网VLAN的实现机制
常见的就是基于以太网交换机的接口来实现VLAN。
对以太网交换机的要求:
❶ 能够处理带有VLAN标记的帧,也就是IEEE 802.1Q帧。
❷ 交换机的各接口可以支持不同的接口类型,不同接口类型的接口对帧的处理方式有所不同。
IEEE 802.1Q帧也称为Dot One Q帧,它对以太网V2的MAC帧格式进行了扩展:在源地址字段和类型字段之间插入了4字节的VLAN标签(tag)字段。
VID是802.1Q帧所属VLAN的编号,设备利用VID来识别帧所属的VLAN。 广播帧只在同一VLAN内转发,这样就将广播域限制在了一个VLAN内。
# 无限局域网
无线局域网(Wireless Local Area Network,WLAN)
802.11无线局域网是目前应用最广泛的无线局域网之一,人们更多地将其简称为Wi-Fi(Wireless Fidelity,无线保真度)。
802.11无线局域网可分为以下两类:有固定基础设施和无固定基础设施
02.11无线局域网采用了另一种称为CSMA/CA的协议,也就是载波监听多址接入/碰撞避免(Carrier Sense Multiple Access/Collision Avoidance,CSMA/CA)。