计算机网络
1、计算机网络体系结构
1.1 计算机网络概述
计算机网络的概念:
- 广义观点:只要能实现远程信息处理,资源共享能力弱。
- 资源共享观点:目的是资源共享,由分布在不同位置的多台计算机组成,遵循网络协议。
- 用户透明性观点:用户使用网络就像使用一台计算机,未来的目标。
计算机网络的组成:
- 从组成部分:硬件、软件、协议
- 从工作方式:边缘部分(用户使用的主机)、核心部分(由路由器组成的网络)
- 从功能组成
- 通信子网:OSI低三层。实现计算机之间的通信,包括传输介质、通信设备、网络协议。如网桥、交换机、路由器
- 资源子网:OSI高三层。实现资源共享的设备和软件。如计算机系统、终端、各种软件资源
计算机网络的功能:数据通信、资源共享、分布式处理、提高可靠性、负载均衡
计算机网络的分类:
- 按分布范围:广域网(WAN)、城域网(MAN)、局域网(LAN)、个人区域网(PAN)。(若中央处理器距离非常近,则称为多处理器系统。)
- 按传输技术:广播式网络(局域网、卫星通信)、点对点网络(如果没有直连就要分组存储转发,路由选择)
- 按拓扑结构:总线形、星形、环形、网状
- 按使用者:公用网、专用网
- 按交换技术:电路交换网络、报文交换网络、分组交换网络
- 按传输介质:有线、无线
计算机网络的性能指标:
带宽:最高数据传输速率。单位比特/秒(b/s)。
速率(数据传输速率、数据发送速率、比特率):单位比特/秒(b/s),还有kb/s(\(10^3\)b/s)等。注意提高数据发送速率并不是提高链路上的传播速率(电磁波传播速率),而是提高向链路注入比特的数量。
时延
- 发送时延(传输时延):将分组推向链路的时间。等于分组长度/数据传输速率
- 传播时延:电磁波在信道的传播时间。等于信道长度/电磁波传播速度
- 处理时延:存储转发的时间
- 排队时延:路由器输入输出时排队的时间
时延带宽积:等于时延×带宽。代表一段链路容纳的比特数量。
往返时延(RTT):从发出到收到确认的时延。等于传播时延+处理时延、排队时延(不包括发送时延)
信道利用率:有数据通过的时间/总时间
1968年6月,世界上最早出现的计算机网络是ARPAnet。
1.2 计算机网络体系结构与参考模型
1.2.1 计算机网络分层结构
分层:定义的是各层的协议、之间的接口等。不定义具体功能执行的方法。
第n层元素称为第n层实体,不同机器的同一层为对等层,同一层实体为对等实体。
报文的组成:
数据部分:服务数据单元(SDU)
控制信息部分:协议控制信息(PCI)
共同组成:协议数据单元(PDU)
n-SDU + n-PCI = n-PDU = (n-1)-SDU
1.2.2 协议、接口、服务
协议:对等实体进行通信的规则集合。是水平的。不对等实体之间没有协议。由以下三部分组成:
- 语法:传输数据的格式
- 语义:功能(发出控制信息、完成动作、应答)
- 同步:条件、时序
接口:同一结点内相邻两层间交换信息的连接点。相邻两层实体通过服务访问点(SAP)进行交互。
服务:下层为上层提供的功能调用。是垂直的。下层的功能中上层看得见的才叫服务。
服务原语:上层使用下层的命令。包括以下四种:
- 请求:用户→服务提供者
- 指示:服务提供者→用户
- 响应:用户→服务提供者
- 证实:服务提供者→用户
有应答服务都包含,无应答服务只有前两种。
服务的分类
- 面向连接服务、无连接服务
- 可靠服务、不可靠服务:是否有纠错、检错、应答
- 有应答服务、无应答服务
1.2.3 ISO/OSI参考模型
中文:开放系统互连参考模型。
低三层叫通信子网,高三层叫资源子网,传输层承上启下。
- 物理层:定义电路接口、链路上的信号(物理媒体如双绞线不属于物理层)。物理层没有数据封装。接口标准(物理层规程)有EIA-232C、EIA/TIA RS-449、CCITT等。
- 数据链路层:成帧、差错控制、流量控制、传输管理(没有拥塞控制)。传输单位是帧。协议有:SDLC、HDLC、PPP、STP、帧中继等。
- 网络层:路由选择、差错控制、流量控制、拥塞控制、网际互连。传输单位是数据报/分组。支持无连接和面向连接的通信。协议有:IP、ICMP、IGMP、ARP、OSPF等。
- 传输层:差错控制、流量控制、拥塞控制、服务质量、数据传输管理。传输单位是报文段(TCP)或用户数据报(UDP)。仅有面向连接(此处是OSI的定义,要和TCP/IP模型区分)。端到端通信。协议有:TCP、UDP。
- 会话层:各进程(建立、管理、终止)会话,也叫建立同步。通信失效时可以从校验点恢复通信,实现同步。
- 表示层:交换信息的表示方式。如数据格式转换、数据压缩、加密解密。
- 应用层:协议有:FTP、SMTP、HTTP。
1.2.4 TCP/IP模型
- 网络接口层:类似OSI的物理层和数据链路层。
- 网际层:无连接。注意和OSI参考模型的不同。
- 传输层:面向连接(TCP)、无连接(UDP)。注意和OSI参考模型的不同。
- 应用层
2、物理层
2.1 通信基础
2.1.1 基本概念
数据就是传送的信息,信号是数据的电气表现。
模拟数据(模拟信号):连续变化的数据。
数字数据(数字信号):离散数值的数据。
码元:固定时长(码元宽度)的信号波形表示的一位k进制数(k进制码元)。如二进制码元就是比特。
信源:发送数据的源头。信宿:接收数据的终点。信道:逻辑的,如一条物理线路上可以有发送信道和接收信道。可以分为数字信道和模拟信道。
基带信号(基带传输):在数字信道上传输,01信号用不同的电压表示(方波)。
频带传输:将基带信号调制成模拟信号,在模拟信道上传输。
宽带信号(宽带传输):借助频带传输,将链路容量分解成两个或更多的信道(如频分复用),每个信道携带不同的信号。
单向通信、半双工通信(两个方向不能同时有数据)、全双工通信
速率
码元传输速率(波特率):单位时间传输码元的个数。单位:Baud。
信息传输速率(比特率):单位时间传输二进制码元(比特)的个数。单位:b/s。
两者的换算:若一个码元含n比特的信息,则
比特率=波特率×n
。如:信息传输速率为64kb/s,一个载波的码元有4个离散值(2比特),则波特率为32kBaud。一定注意要转换为比特数,不是信号的个数。
2.1.2 奈奎斯特定理与香农定理
奈奎斯特定理:在理想低通信道中(无噪声),为避免码间串扰,极限码元传输速率为2W波特,W是信道的带宽(频带宽度,最高频率与最低频率之差,Hz)。(用数据传输速率来表示就是\(2Wlog_2V\),V是一个码元的离散电平数)。
香农定理:信道的极限数据传输速率=\(Wlog_2(1+S/N)\),S是信号功率,N是噪声功率,S/N是信噪比(用分贝表示\(S/N=10log(S/N)\),单位dB。如30dB即S/N=1000)。
香农定理从侧面表明一个码元对应的二进制位数是有限的。如果两个公式都能用,按算出来的取最小速率。
2.1.3 编码与调制
调制:数据→模拟信号。编码:数据→数字信号。
- 数字数据编码为数字信号:即01用高低电平表示。用于基带传输。
- 归零编码(RZ):每个周期都会跳变到低电平。同步。
- 非归零编码(NRZ):最正常的表示。
- 反向非归零编码(NRZI):翻转代表0,不变表示1。
- 曼彻斯特编码:一个码元两个间隔。前高后低为1,前低后高为0,也可以相反。同步。以太网采用。每位数据需要两个电平表示,即两个码元表示一位,波特率是比特率的两倍。
- 差分曼彻斯特编码:一个码元两个间隔。前半个电平和上一个码元后半个电平相同为1,反之为0。同步。
- 4B/5B编码:用5个码元表示4位。波特率是比特率的1.25倍。
- 数字数据调制为模拟信号
- 幅移键控(ASK):振幅表示01。抗干扰差。
- 频移键控(FSK):频率表示01。抗干扰强,广泛使用。
- 相移键控(PSK):相位表示01。
- 正交振幅调制(QAM):结合ASK与PSK。
- 模拟数据编码为数字信号:如处理音频的脉冲编码调制(PCM)
- 采样:要不失真,采样频率必须大于等于模拟信号最大频率的两倍(采样定理)。
- 量化:将电平幅值转化为数字值。
- 编码:量化结果转为二进制。
- 模拟数据调制为模拟信号:如提高频率、将模拟数据加到载波上。可以使用频分复用(FDM)。
2.1.4 电路、报文、分组交换
电路交换:连接建立、数据传输、连接释放
- 优:时延小、有序
- 劣:建立连接时间长、独占、不能差错控制
报文交换:以报文为单位,存储转发
- 优:无须建立连接、线路动态分配、可靠、提高利用率
- 劣:存储转发时延、报文大小没有限制要求结点缓存空间足够
分组交换
- 优:无须建立连接、利用率高、简化存储、传输更快(流水线)、减少出错率和重发数据量
- 劣:存储转发时延、额外信息量、分组失序丢失重复
2.1.5 数据报和虚电路
它们是分组交换的两种方式。
数据报:没什么说的,就像路由器转发一样。
虚电路
- 虚电路建立:建立一条逻辑上的虚电路,一旦建立,就确定了物理路径。分配虚电路号。建立时发送呼叫请求分组和呼叫应答分组。
- 数据传输:携带虚电路号。
- 虚电路释放:发送释放请求分组和释放应答分组
两个结点之间的物理链路可能有多个虚电路通过,两个端系统之间可以有多条虚电路。
出错率高的传输系统中应采用数据报方式,因为如果虚电路中节点故障则需要重新建立连接。
虚电路包括:永久性虚电路(提前定义好)和交换型虚电路(临时连接)。
数据报 | 虚电路 | |
---|---|---|
携带 | 源地址、目的地址 | 虚电路号 |
路由 | 每个分组独立转发 | 物理路径确定 |
顺序性 | 无 | 有 |
可靠性(顺序、丢失) | 不可靠,只能由上层保证 | 可靠 |
差错处理和流量控制 | 无,只能由上层保证 | 有 |
2.2 传输介质
也称传输媒体,可以分为导向和非导向。不属于物理层,在物理层下面。
- 双绞线
- 屏蔽双绞线(STP)、非屏蔽双绞线(UTP)
- 通信距离:几千米~数十千米
- 远距离传输:模拟传输用放大器,数字传输用中继器
- 同轴线缆
- 50Ω同轴线缆(基带同轴电缆):传送基带信号,局域网
- 75Ω同轴线缆(宽带同轴线缆):传送宽带信号,有线电视系统
- 因为屏蔽性高、抗噪声性好,所以与双绞线比,传输速率高,传输距离远,贵
- 光纤
- 多模光纤:利用全反射,不同角度入射的光线在一根光纤传输。光源:发光二极管。近距离传输。
- 单模光纤:光纤的直径减小到只有一个光的波长,直线传播,无反射。光源:半导体激光器。衰减小,远距离传输。
- 无线传输介质
- 无线电波:向所有方向散播。
- 微波、红外线、激光:带宽高,方向性,视线介质。
- 卫星通信利用地球同步卫星中继微波信号,时延长,受气候影响大,保密差,误码率高。
物理层接口的特性
- 机械特性:接线器的形状尺寸、引脚数目排列……
- 电气特性:电压范围、传输距离……
- 功能特性:电压表示的意义
- 过程特性:各种事件的出现顺序
常用标准:EIA RS-232-C、ADSL、SONET/SDH
2.3 物理层设备
中继器
信号再生(不是简单放大)
5-4-3规则:串联的中继器不能超过4个,4个中继器串联5段通信介质只有3段可以接计算机。
中继器没有存储转发功能。在物理层连接两个网段,必须要物理层的协议相同(如数据传输速率相同),而数据链路层的协议对其没有影响(可以连接不同数据链路层协议的网段)。
集线器(Hub)
多端口中继器。拓扑结构是星形,逻辑上是总线网。半双工。
3、数据链路层
3.1 数据链路层的功能
为网络层提供服务
- 无确认的无连接服务
- 有确认的无连接服务
- 有确认的面向连接服务(面向连接就一定有确认)
链路管理:建立、维持、释放连接(用于面向连接)。
帧界定(确定帧的界限)、帧同步(接收方区分出帧的起始与终止)、透明传输(不管什么比特组合都能传输,数据中不包含帧界定符)
流量控制:控制发送速率,使其不超过接收速率。
差错控制
- 位错:CRC+ARQ
- 帧错:丢失(引入定时器)、重复/失序(引入编号)
3.2 组帧
- 字符计数法:第一个字节代表该帧的总字节数。如
51234
(每个数表示一个字节的值)。 - 字符填充法:帧的开始为控制字符SOH,结束为控制字符EOH,转义字符ESC。数据中出现这三个字符前面都加ESC。
- 零比特填充法:01111110表示帧的开始和结束,每连续的5个1后添一个0。
- 违规编码:不采用填充技术,利用冗余编码(如曼彻斯特编码的4种电平对只用了两种,其余的就可以用来定界)。
3.3 差错控制
此处仅讨论比特差错。
奇偶校验码(检错编码)
- 添加一位校验元,使得码字中1的个数为奇数(奇校验码)/偶数(偶校验码)
- 只能检测出奇数个比特出错的情况
循环冗余码(CRC)(检错编码)
- 事先商定一个多项式G(x),它的阶数为k-1,对应的串有k位。如\(G(x)=x^3+x^2+1\)阶数为3,对应的串是1101。
- 帧检验序列(FCS),位数k-1。原始帧加上FCS如果能被G(x)整除,则无差错。
- 计算FCS步骤:
- 在帧的低位加k-1个0。
- 用的是模2除法,即减法就是异或运算。
- CRC有纠错功能,但数据链路层只用了检错功能。
- 带r个校验位的多项式编码可以检测到所有长度小于等于r的突发性错误。
海明码(纠错编码)
- n为有效信息位数,k为校验位位数,要满足\(n+k\le2^k-1\)
- 海明距离:两个相同长度的比特串对应位不同的个数,如1010和1101海明距为3。
- 纠错d位,需要海明距2d+1;检错d位,只需d+1。
3.4 流量控制与可靠传输机制
流量控制:停止等待,滑动窗口(细节就不展开了)。
可靠传输机制:通过确认和超时重传来完成。
数据链路层的流量控制和可靠传输机制是交织在一起的。
自动重传请求(ARQ)分为:
- 停止-等待协议(停止等待ARQ协议)
- 单帧滑动窗口。相当于发送窗口为1,接收窗口为1的滑动窗口协议。
- 差错情况:
- 数据帧错误,接收方检出错误丢弃,发送方超时重传。
- 确认帧错误,发送方超时重发,接收方丢弃该重发的帧,再次发送确认帧。
- 后退N帧协议(后退N帧ARQ协议)(GBN,Go-Back-N)
- 多帧滑动窗口。相当于发送窗口大于1,接收窗口等于1的滑动窗口协议。
- 发送方可以连续发送,接收方按顺序接收,一旦收到一个错误的帧,发送方要重发从这个帧开始的所有帧。
- 累积确认。
- 若采用n比特编号,则窗口尺寸\(W_T\le2^n-1\)。假如3比特编号,\(W_T=8\),发送方发完0~7帧,接收方发送确认帧,以下两种情况无法分辨:
- 确认帧都送达,则应当发送新的0~7帧
- 确认帧全部丢失,则重传0~7帧
- 选择重传协议(选择重传ARQ协议)(SR,Selective
Repeat)
- 发送窗口和接收窗口一般相同(发送窗口长则溢出,接收窗口长则浪费)。
- 若采用n比特编号,则发送窗口和接收窗口尺寸\(W_T=W_R\le2^{n-1}\)。假如3比特编号,\(W_T=W_R=5\),发送方发送01234,以下两种情况无法分辨01是新帧还是旧帧:
- 接收方成功接收,接收窗口右移5位变为56701,收到新帧01
- 01的确认丢失了,重传01
- \(\text{发送窗口大小}W_T+\text{接收窗口大小}W_R\le2^n\)
信道利用率:有多少占比的时间在发送数据。
信道吞吐率:单位时间平均发送的数据。信道利用率×发送速率。
3.5 介质访问控制
介质访问控制(MAC)子层:决定广播信道中信道分配。
3.5.1 信道划分介质访问控制
- 频分多路复用(FDM):适合传输模拟信号
- 时分多路复用(TDM):适合传输数字信号
- 统计时分多路复用(STDM):动态地分配时隙。
- 波分多路复用(WDM):即光的频分多路复用。
- 码分多路复用(CDM),码分多址(CDMA):每个比特时间分成m个短的码片,每个站点有唯一的m位码片序列,各站点的码片序列相互正交(规格化内积为0)。发送1时,发送它的码片序列,发送0时,发送码片序列的反码。
- 规格化内积:两个码片内积的值/m
- 发送时,码片叠加;分离时,用该站点的码片与数据作规格化内积,结果为1则数据为1,结果为-1则数据为0。
正交频分复用:WLAN的信道复用技术。
3.5.2 随机访问介质访问控制
- ALOHA协议
- 纯ALOHA协议
- 不检查就发送,如果未收到确认,等待随机时间后再发送。
- 网络负载G:单位时间\(T_0\)内发送的总帧数。
- 吞吐量(或者理解为利用率):\(S=Ge^{-2G}\),当\(G=0.5\)时,\(S=0.184\)取最大。
- 时隙ALOHA协议
- 各站时间同步,将时间划分为等长的时隙(Slot),只能在时隙开始时发送帧。
- 吞吐量:\(S=Ge^{-G}\)
- 纯ALOHA协议
- CSMA协议(载波监听多路访问)
- 1-坚持CSMA:先监听信道,空闲则立刻发送;信道忙,继续监听,监听到信道空闲后,发送帧的概率为1
- 非坚持CSMA:先监听信道,空闲则立刻发送;信道忙则放弃监听,等待随机时间后重复。
- p-坚持CSMA:监听信道,忙则继续监听,如果信道空闲,以概率p发送数据,以概率p-1推迟到下一个时隙,直到发送成功或信道忙。
- CSMA/CD协议(载波监听多路访问/碰撞检测)
- 用于总线型、半双工;全双工不需要。通过电压来检测。
- 先听后发,边听边发,冲突停发,随机重发
- 争用期\(2\tau\)(冲突窗口、碰撞窗口):端到端时延的两倍。至多经过\(2\tau\)的时间就知道发送碰撞。
- 最短帧长:争用期可发送数据的长度。凡长度小于这个的帧无效。发送长度小的帧要填充。如10Mb/s以太网,争用期\(51.2\mu s\),最短帧长为512bit。
- 截断二进制指数退避算法
- 确定基本退避时间,一般为\(2\tau\)
- \(k=min\{\text{重传次数},10\}\),注意k不能大于10!!!
- 从集合\(\{0,1,2,3,\cdots,2^k-1\}\)中随机取一个数r(最大从0~1023随机取数),退避时间为\(r\times \text{基本退避时间(}2\tau\text{)}\)
- 如果重传16次不成功,则抛弃并向高层报错!!!
- CSMA/CA协议(载波监听多路访问/碰撞避免)
- 用于无线局域网。发送的同时不能检测信道。通过能量或载波来检测。
- 使用链路层确认重传方案,有确认帧
- 所有站发送完成后,必须等待一段很短的时间(帧间间隔IFS)
- 有三种IFS,从短到长依次为:SIFS、PIFS、DIFS
- 控制帧、确认帧用SIFS作为发送前等待时延
- 数据帧发送前等待DIFS,然后发送RTS
- 隐蔽站问题
- 请求发送控制帧(RTS):发送数据前预约信道
- 允许发送控制帧(CTS):给源站发送许可,让其他站点不要发送
3.5.3 轮询访问:令牌传递协议
发送完一帧后就释放令牌。物理拓扑不必是环,逻辑上是环。
过程:
- 空闲时只有令牌帧传递。
- 当有数据发送,将数据加到令牌中发送
- 数据帧沿环路传输,各站点转发数据,并查看自己的地址和目的地址是否相同,相同则复制数据。
- 数据帧一直沿环路传输直到源点,源点检验是否出错。
- 源点重新产生令牌,交出控制权。
3.6 局域网
3.6.1 局域网基本概念
拓扑结构:星形、环形、总线形、复合型
传输介质:双绞线、光纤……
三种局域网:
- 以太网:逻辑上是总线形
- 令牌环:逻辑是环形
- FDDI(光纤分布数字接口):逻辑环形,物理双环。
数据链路层的两个子层:
- 逻辑链路控制子层(LLC):建立释放链路层的逻辑连接、提供与高层的接口、差错控制、给帧加序号
- 介质访问控制子层(MAC):组帧拆帧、比特差错检验、寻址、竞争处理
3.6.2 以太网
以太网标准上指符合DIX Ethernet V2协议,和IEEE 802.3协议差不多,后者通常也叫以太网。
以太网参考模型一般只包括物理层和数据链路层。
半双工的以太网才需要CSMA/CD,全双工不需要。
无连接,不对数据帧编号;使用曼彻斯特编码。
广播域内所有主机都会收到其中一台主机发送的数据,包括它自己。
传输介质
BASE表示基带传输
10BASE-5 | 10BASE-2 | 10BASE-T | 10BASE-FL | |
---|---|---|---|---|
传输媒体 | 同轴电缆(粗) | 同轴电缆(细) | 非屏蔽双绞线(UTP) | 光纤对 |
拓扑 | 总线形 | 总线形 | 星形 | 点对点 |
最大段长(m) | 500 | 185 | 100 | 2000 |
最多节点数 | 100 | 30 | 2 | 2 |
网卡(网络适配器、网络接口卡):工作在物理层、数据链路层
MAC帧
MAC地址(物理地址):高24位厂商代码,低24位厂商分配
- 前导码
- 前同步码:7字节,1010……
- 帧开始定界符:10101011
- MAC帧
- 目的地址:6字节
- 源地址:6字节
- 类型/长度:2字节,DIX标准为类型(1501~65535),802.3标准为数据长度(1500以内)
- 数据:46~1500字节(最短帧长64,64-6-6-4-2=46,1500是规定)。不够的话要填充。
- 校验码(FCS):4字节,CRC,校验从目的地址到数据段
高速以太网
- 100BASE-T以太网:全/半双工。最大电缆长度100m(10M以太网是1000m)
- 吉比特以太网:全/半双工
- 10吉比特以太网:只能全双工。光纤。
3.6.3 无线局域网
IEEE 802.11:包括802.11a/b/g/n。星形拓扑。使用CSMA/CA。又称WiFi。
中心接入点(AP):有服务集标识符SSID(名字)。
无线局域网的最小构件:基本服务集(BSS)。BSS通过AP连接到分配系统(DS),再连接到另一个BSS,就构成了扩展服务集(ESS)。ESS可以通过Portal(门户)提供有线接入。
比较:
移动IP技术:使用多种方法接入因特网,使用那些路由选择协议。
自组网络:无线领域,有自己特定的路由选择协议,可以不连因特网。
MAC帧
首部30字节,前两个字节帧控制字段中有“去往AP”和“来自AP”,最重要的是3个MAC地址字段。
去往AP | 来自AP | 地址1(接收端) | 地址2(发送端) | 地址3(目的/源) |
---|---|---|---|---|
1 | 0 | AP地址 | 源地址 | 目的地址 |
0 | 1 | 目的地址 | AP地址 | 源地址 |
3.6.4 VLAN
较小的广播域。
在以太网帧中插入4字节VLAN标签(插在源地址和类型之间)
- 前两字节:0x8100表示802.1Q帧
- 后两字节:只有后面12位有效,表示VLAN标识符(VID)
划分VLAN的方法:
- 基于端口
- 基于MAC地址
- 基于IP地址:可以跨越路由器扩展VLAN
3.7 广域网
由节点交换机(和路由器类似,但只在单个网络中转发)及连接这些交换机的链路组成。
节点交换机:存储并转发分组。
3.7.1 PPP协议
组成部分:
- 链路控制协议(LCP):建立、配置、管理数据链路
- 网络控制协议(NCP):为多种网络层协议建立和配置逻辑连接
- 成帧方法:信息段长度为0~1500(点对点连接没有最短帧长)
特点:
- 提供差错检测但不纠错
- 无序号,无流量控制
- 只支持点对点,只支持全双工
- 两端可以运行不同的网络层协议
- 面向字节,异步链路中采用字节填充(默认),同步链路采用比特填充
3.7.2 HDLC协议
- 面向比特,零比特填充
- PPP帧比HDLC帧多一个2字节的协议字段
- PPP协议不使用序号和确认机制;HDLC使用了,可靠传输
3.8 数据链路层设备
3.8.1 网桥
连接不同网段。存储转发。
可以互连不同的物理层、不同的MAC子层、不同速率的以太网。
3.8.2 交换机
称局域网交换机或以太网交换机。多端口网桥。多个主机可以同时通信。
- 每个端口与主机或交换机相连(网桥的端口一般连一个网段)
- 一般是全双工:24个端口,每个端口10Mb/s(发送速率),则每个用户带宽都是10Mb/s,总容量240Mb/s
- 如果是半双工:24个端口,每个端口10Mb/s,则每个用户带宽都是10Mb/s,总容量是120Mb/s(半双工,只有一半的用户能发送,另一半只能接收)
- 独占媒体带宽
交换模式:
- 直通式交换机:只检测帧的目的地址(6字节)就传输,不存储
- 存储转发式交换机:检错,可以有多种速率的端口
自学习功能:没有目的地址表项时,向除源端口外的所有端口广播(即使其他的端口对应有MAC地址也要广播)
3.9 总结不同层的设备
如果某一设备实现了某一层的功能且具有存储转发功能,那么它就可以互连在该层使用不同协议的网络,而它上层的协议要相同(因为它处理不了)。
设备 | 实现的层 | 连接的协议/层 |
---|---|---|
中继器/集线器 | 物理层 | 没有存储转发功能,两边的物理层协议必须相同;(物理层协议相同则可以在物理层互连,)但并不保证能互连数据链路层,数据链路层协议也相同才行 |
网桥/交换机 | 物理层、数据链路层 | 互连不同的物理层、数据链路层(不同的MAC子层、不同速率的以太网);上层的协议要相同 |
路由器 | 物理层、数据链路层、网络层 | 互连不同的物理层、数据链路层、网络层(如ipv4和ipv6互连);上层的协议要相同 |
4、网络层
4.1 网络层的功能
软件定义网络(SDN):集中式控制平面、分布式数据平面
- 北向接口:提供的编程接口
- 南向接口:控制器和转发设备的会话接口
- 东西向接口:控制器之间的通信
拥塞控制:网络吞吐量小于正常吞吐量,轻度拥塞;吞吐量随负载增加而降低,拥塞;吞吐量为0,死锁。
- 流量控制:点对点的,抑制发送端的速率
- 拥塞控制:全局性的,主机、路由器等都参与
4.2 IPv4
4.2.1 IPv4分组
首部:固定20B
- 版本(4位)
- 首部长度(4位):以4B为单位,最大15×4B=60B
- 区分服务(8位)
- 总长度(16位):以1B为单位,最长65535B
- 标识(16位):分片时所有片的标识相同
- 标志(3位)
- 中间位DF(Don't Fragment):为0表示允许分片
- 最低位MF(More Fragment):为1表示后面还有分片,为0表示最后一个分片
- 片偏移(13位):以8B为单位,常见
(1500-20)/8=185
- 生存时间TTL(8位):每过一个路由器减一
- 协议(8位):6表示TCP,17表示UDP
- 首部校验和(16位)
- 源地址(32位)
- 目的地址(32位)
4.2.2 IP地址与NAT
A类(1~126):0xxx xxxx
B类(128~191):10xx xxxx
C类(192~223):110x xxxx
D类(224~239):1110 xxxx。多播
E类(240~255):1111 xxxx。保留今后使用
全0:本主机
全1:整个网络的广播地址,受限广播地址(由于路由器隔开广播域了,其实就相当于本网络的广播地址)
127.x.x.x:环回自检地址
主机号全0:本网络
主机号全1:广播
私有地址
- 10.0.0.0~10.255.255.255
- 172.16.0.0~172.31.255.255
- 192.168.0.0~192.168.255.255
NAT不多写了。普通路由器工作在网络层,NAT路由器需要用到传输层的端口号。
4.2.3 子网划分
无分类域间路由选择(CIDR)
路由聚合构成超网
最长前缀匹配
主机路由:a.b.c.d/32
默认路由:0.0.0.0/0
4.2.4 ARP、DHCP、ICMP
地址解析协议(ARP)
主机和路由器中有ARP表。
- ARP请求分组:广播(目的地址全F)
- ARP响应分组:单播
动态主机配置协议(DHCP)
应用层协议,基于UDP。客户/服务器模式。
- DHCP发现报文:客户端试图寻址服务器。源:0.0.0.0,目的:255.255.255.255
- DHCP提供报文:服务器提供IP。源:服务器IP,目的:255.255.255.255
- DHCP请求报文:客户端请求提供IP。源:0.0.0.0,目的:255.255.255.255
- DHCP确认报文:服务器确认分配。源:服务器IP,目的:255.255.255.255
网际控制报文协议(ICMP)
ICMP差错报告报文
- 终点不可达
- 源点抑制:由于拥塞,要求源点减慢发送速率
- 时间超过:TTL为0
- 参数问题
- 改变路由(重定向):下次给更好的路由发送
对差错报告报文不发送差错报告报文;只对第一个分片发送;组播不发送;特殊地址(环回、全0)不发送。
ICMP询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
- 地址掩码请求和回答报文
- 路由器询问和通告报文
ping工作在应用层,但直接使用的是ICMP。tracert工作在网络层。
4.2.5 易错点
一台主机有多个IP地址,每一个IP地址都应属于不同的网络。
NAT的表项需要由管理员添加,不会自动添加。
同一子网的IP可以局域网内直接通信,不同子网的需要通过路由器。
片偏移是8B的倍数!如果MTU=800,则最大数据部分不是780(除不尽8),而是776。
默认网关是离当前主机最近的路由器端口地址。
注意路由器的端口也要占IP,问还能给多少主机分配时记得看路由器是否占了IP。
4.3 IPv6
- 128位(16B)地址。
- 不允许分片(源节点才能分片,路由器不能分片)
- (基本)首部长度固定(40B),扩展首部在数据部分
- 首部长度是8B的整数倍(IPv4是4B的整数倍)
- 没有校验和字段,加快处理速度
- 目的地址:单播、多播(一对多)、任播(交付一组计算机中的一个)
- 缩写:冒号之间开头的0可以省略(:000A:→:A:),双冒号只能出现一次
- IPv4向IPv6过渡
- 双协议栈:一台设备同时装有IPv4和IPv6协议栈
- 隧道技术:IPv6报文作为IPv4报文的数据部分
4.4 路由协议
名词:自治系统(AS)、域内路由选择、域间路由选择
- 内部网关协议(IGP):RIP、OSPF
- 外部网关协议(EGP):BGP(或BGP-4)
4.4.1 路由信息协议(RIP)
每个路由器维护到每个网络的距离向量。最多只能有15跳,16表示不可达。
字段:目的网络、距离、下一跳
算法:
- 收到从相邻路由器X发来的报文,将所有项下一跳修改为X、距离+1
- 对每一项
- 原路由表没有目的网络N,添加
- 原路由表有N且下一跳为X,更新
- 原路由表有N且下一跳不为X,距离小则更新
- 180s没收到相邻路由器的报文,记为不可达(距离16)
4.4.2 开放最短路径优先协议(OSPF)
所有路由器最终都能建立相同的链路状态数据库。
可以设置代价,可以多路径负载平衡。
区域(Area):各区域都与主干区域连接,只在区域内用洪泛法交换链路状态信息。
几类路由器:区域内路由器、区域边界路由器(ABR)、主干路由器(主干区域的路由器)、自治系统边界路由器(ASBR)
分组:
- 问候分组(Hello):发现和维持可达性,通常每10s问候一次
- 数据库描述分组(DD):邻站之间发送链路状态数据库的摘要信息(就知道了自己比相邻节点缺少哪些)
- 链路状态请求分组(LSR):(知道自己少了哪些,就)请求对方发送某些链路状态的详细信息
- 链路状态更新分组(LSU):向对端发送其所需要的LSA,或泛洪自己更新的LSA
- 链路状态确认分组(LSAck):对LSU的确认
建立过程:
- 确定可达性:互相发Hello
- 达到数据库同步:互相发DD
- 新情况下同步:LSR、LSU、LSAck
4.4.3 边界网关协议(BGP)
每个AS至少一个BGP发言人,不同AS的BGP发言人之间交换路由信息,通过TCP连接。
交换的信息:到达某个网络所经过的AS路径。
报文:
- 打开报文(Open):与BGP发言人建立连接
- 更新报文(Update):发送路由信息以及撤销路由
- 保活报文(Keepalive)
- 通知报文(Notification):差错
4.4.4 路由协议比较
RIP | OSPF | BGP | |
---|---|---|---|
路由算法 | 距离向量 | 链路状态 | 路径向量 |
所属层和传输协议 | 应用层UDP | 网络层IP | 应用层TCP |
路径选择 | 跳数最少 | 代价最低 | 相对较好 |
交换节点 | 相邻节点 | 所有节点 | BGP发言人之间 |
交换内容 | 自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次交换整个路由表,之后交换有变化的部分 |
是否支持CIDR | RIP2才支持 | 支持 | 支持 |
交换时间 | 每30s | 有变化才交换 | 有变化才交换 |
4.5 IP组播
4.5.1 组播概念
一定是UDP。需要组播路由器的支持。
组播组:使用一个D类地址作为组的地址,一台主机可属于多个组。
IP数据报中协议字段值为2,表示使用IGMP(因特网组管理协议)。
4.5.2 组播地址
使用D类地址,开头是1110,范围224.0.0.0~239.255.255.255。并非所有D类地址都可以作为组播地址,有些保留给路由协议等使用了。
以太网组播地址范围:01-00-5E-00-00-00到01-00-5E-7F-FF-FF。
D类地址28位可供分配,以太网只有23位。因此28位中的前5位不作映射,32个IP组播地址映射成一个MAC地址。由于映射关系不唯一(多个IP地址对应同一个MAC组播地址),因此主机还要在IP层利用软件过滤。
4.5.3 IGMP
- 主机加入新的组播组时,主机向组播地址发送IGMP报文,本地组播路由器收到后,将组成员关系转发给其他组播路由器。
- 本地组播路由器周期性探询主机是否还属于某个组,如果没有响应则不再转发成员关系。
- 组播路由选择:找出以源主机为根结点的组播转发树。
4.6 移动IP
- 移动节点:具有永久地址(归属地址)
- 本地代理(归属代理):原始网络上的路由器
- 外地代理:新网络上的路由器
移动到外地网络时,外地代理向归属代理登记转交地址(新的地址),归属代理构建一条通往转交地址的隧道。发送数据时直接通过外地代理发送,接收数据时由本地代理通过隧道转发。
4.7 路由器
路由器组成:
- 路由选择部分(控制部分)
- 分组转发部分
- 交换结构
- 输入端口
- 输出端口
虽然一般不区别路由表和转发表,但是:
表项 | 目的 | 实现 | |
---|---|---|---|
路由表 | 目的IP、子网掩码、下一跳IP、接口…… | 使对网络拓扑变化的计算最优 | 软件 |
转发表 | 目的IP、下一跳MAC、接口…… | 使查找过程最优 | 软件/硬件 |
5、传输层
5.1 传输层提供的服务
进程间的逻辑通信,端到端。
复用(不同进程使用同一个传输层协议)和分用(接收方剥去首部后能正确交付给不同进程)
网络层的复用(不同协议都可以封装成IP数据报)和分用(接收方剥去首部后把数据交给相应的协议)
差错检测:对首部和数据
提供两种不同协议
服务访问点(SAP)
- 数据链路层SAP:MAC地址
- 网络层SAP:IP地址
- 传输层服务访问点(TSAP):端口
端口号
服务器端使用的端口
熟知端口号(0~1023)
应用程序 协议 端口 FTP 数据连接20,控制连接21 TELNET(远程登录) 23 SMTP 25 DNS UDP 53 TFTP(简单文件传输协议) UDP 69 HTTP 80 POP3 110 SNMP(简单网络管理协议) UDP 161 HTTPS 443 登记端口号(1024~49151)
客户端使用的端口(49152~65535)(短暂端口,临时端口)
套接字(Socket):IP地址:端口号
如果一个协议使用确认机制对传输的数据进行确认,那么认为它是可靠的协议
5.2 UDP协议
UDP支持一对一、一对多(广播、组播)、多对一(多个进程和一个进程通信,如中控)、多对多通信(多个进程互相通信,如聊天)。
UDP首部格式(共8B)
- 源端口:2B
- 目的端口:2B
- 长度:2B,首部和数据的长度,以1字节为单位,最小值为8
- 校验和:2B,首部和数据的校验和。可选,如果不用就置0
UDP校验
添加伪首部,伪首部只用于计算校验和,不发送,共12B。包括:源IP(4B)、目的IP(4B)、0(1B)、17(1B)、UDP长度(2B,和首部中的长度一样)。
如果UDP的数据部分不是偶数个字节,则末尾填充全0字节,仅用于计算而不发送。
二进制反码求和:从伪首部到首部到数据部分,每2B为一组,依次反码求和。依次两两相加,当前位有进位加到前一位,最高位有进位加到最低位。得到的结果取反就是校验和
校验:方法一样,如果求出来结果全1则正确
5.3 TCP协议
无差错、不丢失、不重复、有序;全双工。
5.3.1 TCP报文段
首部20B固定部分,后面有可选部分,长度为4B的倍数。
- 源端口、目的端口(各16位)
- 序号(32位):该报文发送的数据的第一个字节的序号
- 确认号(32位):期望收到对方下一个报文的第一个数据字节的序号
- 数据偏移(首部长度)(4位):和IP一样,以4B为单位,最大15,表示首部最长60B
- 保留(6位):今后使用,目前置0
- 几个标志位(6位)
- 紧急位URG
- 确认位ACK:ACK=1确认号才有效,TCP建立连接后所有传送的报文段都必须ACK置1
- 推送位PSH:尽快交付给接收进程
- 复位位RST:严重错误,必须释放连接重新建立
- 同步位SYN
- 终止位FIN
- 窗口(16位):即接收窗口
- 校验和(16位):校验伪首部(和UDP一样,只是协议字段改为6)、首部、数据
- 紧急指针:URG=1时有意义,指出本报文段紧急数据的字节数(紧急数据在数据的最前面)
- 选项:如MSS(最大报文段长度):数据字段的最大长度,默认536B,因此所有主机都能接收的报文段长度是536+20=556B
5.3.2 TCP连接管理
FIN报文即使不携带数据也消耗一个序号(言外之意就是FIN报文可以携带数据)
等待2MSL(最长报文寿命)原因:
- 防止最后一个报文丢失,可以重传
- 经过2MSL可以保证本连接的所有报文从网络中消失
两个进程都能提出释放连接的请求
(源IP,源端口,目的IP,目的端口),任何一个不同就是不同的连接。如果已经有了一个连接,那么再建立四元组同样的连接会失败。
为什么不两次握手?为了防止已失效的连接请求报文段突然又传送到服务器。(比如第一个连接请求迟迟没有收到回复,又发了一个连接请求,结果一会第一个连接请求又到了)
5.3.3 TCP可靠传输
- 校验
- 序号
- 确认
- 重传
- 超时:加权平均往返时间RTTs,超时重传时间略大于RTTs
- 冗余ACK:收到同一个报文段的3个冗余ACK时立刻重传(快重传)
5.3.4 TCP流量控制
发送窗口=min{接收窗口rwnd,拥塞窗口cwnd}
5.3.5 TCP拥塞控制
与流量控制的区别:
- 拥塞控制是全局性的过程,涉及所有主机、路由器、与降低网络传输性能有关的所有因素
- 流量控制是端到端的问题,抑制发送端的速率
相同点是:都通过控制发送端的发送频率
- 当cwnd=sshresh时,既可以使用慢开始算法,又可以使用拥塞避免算法(通常)。
- 慢开始阶段cwnd不能超过sshresh(如第二个图)
TCP面向字节,采用对报文段确认的机制
6、应用层
6.1 网络应用模型
- 客户/服务器模型(C/S)
- P2P模型:任意一对计算机称为对等方。每个结点都有下载、上传功能。多个客户机可以直接共享文档。
6.2 域名系统
UDP,端口53。包含以下三部分:
- 层次域名空间
- 顶级域
- 国家顶级域名:.cn
- 通用顶级域名:.com
- 基础结构域名(反向域名):只有一个.arpa,用于反向域名解析
- 二级域
- 三级域
- 顶级域
- 域名服务器:广泛使用高速缓存
- 根域名服务器:所有根域名服务器知道所有顶级域名服务器的IP
- 顶级域名服务器
- 授权域名服务器/权限域名服务器
- 本地域名服务器
- 域名解析(正向解析:域名→IP;反向解析:IP→域名)
- 递归查询:从主机到本地域名服务器都是递归查询
- 迭代查询
域名查询次数和域名级数有关:如查询www.abc.xyz.com
,需要查询根域名服务器、顶级域名服务器.com、权限域名服务器.xyz、权限域名服务器.abc,本地域名服务器共需要4次查询
多台主机可以映射到同一域名(如负载均衡);一台主机可以映射多个域名(如虚拟主机)
如果主机有域名缓存,就不同查本地域名服务器了
6.3 文件传输协议
C/S模式,TCP。允许客户指明文件类型与格式,允许文件具有存取权限。
- 控制连接(端口21):传输控制信息(连接请求、传送请求、中止传送……),保持打开
- 数据连接(端口20)
- 主动模式(PORT):客户端开放一个端口,服务器20号端口主动与客户端的端口连接
- 被动模式(PASV):客户端连接到服务器的随机端口(注意不是20号)
FTP修改文件时需要先下载下来,修改之后再上传;网络文件系统(NFS),可以直接远程修改。
匿名FTP访问通常使用anonymous作为用户名。
6.4 电子邮件
组成结构
- 用户代理:电子邮件客户端
- 邮件服务器:C/S模式,同时充当客户端和服务器。
- 邮件发送协议和读取协议
- 邮件发送协议:用户代理→邮件服务器,邮件服务器之间。
- STMP(简单邮件传输协议):TCP,端口25。以下是客户端的命令:
- HELLO:附发送方主机名
- MAIL:附发送方地址
- RCPT:一个或多个,收件人地址
- DATA:传输数据
- QUIT:发送完毕
- STMP(简单邮件传输协议):TCP,端口25。以下是客户端的命令:
- 邮件读取协议:用户代理从邮件服务器读取
- POP3:TCP,端口110。客户端可以选择两种工作方式:下载并保留、下载并删除。POP3也是基于ASCII码,如果要传输非ASCII码,得用MIME。明文传输密码。
- IMAP(因特网报文存取协议):复杂得多
- 邮件发送协议:用户代理→邮件服务器,邮件服务器之间。
电子邮件格式:
- To:必填,后加一个或多个电子邮件地址(收件人邮箱名@邮箱所在主机的域名)
- Subject:可选,主题
- From:必填,一般系统自动填入
- 首部和主体之间用空行分隔
多用途网际邮件扩充(MIME):STMP只能传送7比特ASCII码。MIME扩展了STMP,可以传送多种内容。
基于万维网的电子邮件,如Gmail等,从浏览器到邮件服务器之间发送接收使用的是HTTP,邮件服务器之间才是STMP
6.5 万维网
三个标准
统一资源定位符(URL):<协议>://<主机>:<端口>/<路径>
超文本传输协议(HTTP):TCP,端口80。但HTTP本身是无连接的(无需建立HTTP连接),无状态(常使用Cookie跟踪用户)
持久连接和非持久连接
- 非持久连接:每个元素对象(网页、图片……)单独建立一个TCP连接
- 持久连接:HTTP/1.1支持,HTTP/1.1默认持久连接。保持一条连接,传输所有元素都用这个
- 非流水线:客户收到一个响应才能发送下一个请求
- 流水线
Connection表示连接方式:Close非持续连接,keep-alive持续连接
报文结构
开始行:
- 请求报文的开始行叫请求行,包括:方法、URL、版本。空格分隔,结尾回车换行
- 响应报文的开始行叫状态行,包括:版本、状态码、短语。空格分隔,结尾回车换行
方法 意义 GET 请求读取URL标识的信息 HEAD 请求读取由URL标识的信息的首部。服务器会响应,但不会返回请求对象(常用于调试) POST 给服务器添加信息 首部行:说明一些信息。每行都是
首部字段名:值
的形式实体主体:请求报文一般无,响应报文也可能无
超文本标记语言(HTML)