当前位置: 首页 > news >正文

视频网站开发公司有哪些公司简洁大气摄影网站

视频网站开发公司有哪些公司,简洁大气摄影网站,php做大型网站,东莞建设工程交易网文章目录 计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题 计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题 物理层通信基础基本概念奈奎斯特定理与香农定… 文章目录 计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题 计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题 物理层通信基础基本概念奈奎斯特定理与香农定理编码与调制电路交换、报文交换、分组交换数据报与虚电路课后习题 传输介质双绞线、同轴电缆、光纤、无线传输介质物理层接口的特性课后习题 物理层设备中继器集线器总结 数据链路层数据链路层的功能为网络层提供的服务链路管理帧定界、帧同步与透明传输流量控制差错控制课后习题 组帧字符计数法字符填充的首尾定界符法零比特填充的首尾标志法违规编码法 差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制**单帧滑动窗口**与**停止-等待协议**多帧滑动窗口与后退N帧协议GBN多帧滑动窗口与选择重传协议SR 介质访问控制信道划分介质访问控制随机访问介质访问控制轮询访问介质访问控制: **令牌传递协议** 局域网局域网的基本概念和体系结构以太网与IEEE802.3IEEE 802.11令牌环网的基本原理 广域网广域网的基本概念PPP协议 **Point-to-Point Protocol**HDLC协议 **高级数据链路控制High-level Data Link ControlHDLC** 数据链路层设备网桥的概念及其基本原理局域网交换机及其工作原理 总结 网络层网络层的功能异构网络互联路由与转发拥塞控制 路由算法静态路由与动态路由距离-向量路由算法链路状态路由算法层次路由 IPv4IPv4分组IPv4地址与NAT子网划分与子网掩码、CIDRARP、DHCP、ICMP IPv6IPv6地址 路由协议自治系统 **Autonomous SystemAS**域内路由与域间路由路由信息协议**Routing Information ProtocolRIP**开放最短路径优先OSPF协议边界网关协议 **Border Gateway ProtocolBGP** IP组播组播的概念IP组播地址IGMP与组播路由算法 移动IP移动IP的概念移动IP通信过程 网络层设备路由器的组成和功能路由表与路由转发 传输层传输层提供的服务传输层的寻址与端口无连接服务与面向连接服务 UDP协议UDP数据报UDP校验 TCP协议TCP协议的特点TCP报文段TCP连接管理TCP可靠传输TCP流量控制TCP拥塞控制 应用层网络应用模型客户/服务器模型P2P模型 域名系统DNS层次域名空间域名服务器域名解析过程 文件传输协议FTPFTP的工作原理控制连接与数据连接 电子邮件电子邮件系统的组成结构SMTP和POP3 万维网WWWWWW的概念与组成结构超文本传输协议HTTP 计算机网络体系结构 计算机网络概述 计算机网络的组成 从组成部分上看主要由硬件、软件、协议组成从工作方式上看主要由边缘部分、核心部分组成从功能组成上看主要由通信子网、资源子网组成 计算机网络的功能 数据通信资源共享分布式处理提高可靠性负载均衡 计算机网络的分类 按分布范围 广域网WAN城域网MAN局域网LAN个人局域网PAN 若中央处理器之间的距离非常近如1m的数量级或更小则一般称为多处理器而非计算机网络 按传输技术 广播式网络 局域网基本上都采用广播式通信技术广域网中的无线、卫星通信网络也是 点对点网络 每条物理线路连接一对计算机若通信的两台主机之间没有直接连接的线路则它们之间的分组传输就要通过中间结点进行接收、存储、转发直至目的结点 是否采用分组存储转发与路由选择机制是点对点式网络与广播式网络的重要区别。广域网基本都属于点对点网络 按拓扑结构 总线形星形环形网状 按使用者 公用网专用网 按交换技术 电路交换网络 在源结点和目的结点之间建立一条专用的通路用于传送数据包括建立连接、传输数据、断开连接 报文交换网络 用户数据加上源地址、目的地址、校验码封装成报文整个报文传送到相邻结点全部存储后再转发给下一个站点重复这一过程直到目的结点每个报文可以单独选择到达目的结点的路径报文交换网络也称存储-转发网络 分组交换网络 也称包交换网络将数据分成较短的固定长度的数据块在每个数据块中加上目的地址、源地址组成分组包以存储-转发方式传输主要特点是单个分组整个报文的一部分传送到相邻结点 按传输介质 分为有线与无线 计算机网络的性能指标 带宽 时延 数据从网络一端传送到另一端所需要的总时间包括了发送时延、传播时延、处理时延、排队时延发送时延传输时延 结点将分组的所有比特推向链路所需的时间发送时延 分组长度 / 信道宽度 传播时延 电磁波在信道中传播一定的距离需要花费的时间传播时延 信道长度 / 电磁波在信道上的传播速率 处理时延 数据在交换结点为存储转发而进行的一些必要处理所花费的时间 排队时延 分组在进入路由器后要先在输入队列中排队等待处理。路由器确定转发端口后还要在输出队列中排队等待转发 排队时延和处理时延一般可忽略不计除非另有说明对于高速链路提高的仅是数据发送速率而非比特在链路上的传播速率。提高数据的发送速率只是为了减少数据的发送时延 时延带宽积 发送端发送的第一个比特即将到达终点时发送端已经发出了多少个比特又称以比特为单位的链路长度时延带宽积 传播时延 * 信道宽度 往返时延 Round-Trip TimeRTT 从发送端发出一个短分组到发送端收到来自接收端的确认接收端收到数据后立即发送确认总共经历的时延 吞吐量 单位时间内通过某个网络或信道、接口的数据量 速率数据传输速率、数据率、比特率 连接到计算机网络上的主机在数字信道上传送数据的速率 信道利用率 某一信道有百分之多少的时间是有数据通过的信道利用率 有数据通过时间 / 有无数据通过时间 课后习题 选择题4、10、11、16、17综合题全没有 计算机网络体系结构与参考模型 计算机网络协议、接口、服务的概念 协议接口同一结点内相邻两层间交换信息的连接点每层只能为紧邻的层次之间定义结点不能跨层定义接口服务 面向连接服务与无连接服务 面向连接服务通信前双方必须先建立连接分配资源传输结束后释放连接和资源面向无连接服务通信前不需要先建立连接需要发送数据时可直接发送。是一种不可靠服务常被描述为尽最大努力交付 可靠服务和不可靠服务 可靠服务指网络具有纠错、检错、应答机制能保证数据正确、可靠地传送到目的地不可靠服务指网络只是尽量正确、可靠地传送而不能保证数据正确、可靠地传送到目的地 有应答服务和无应答服务 有答应服务是接收方在收到数据后向发送方给出相应的应答该应答由传输系统内部自动实现而不由用户实现无答应服务是指接收方收到数据后不自动给出应答 ISO/OSI参考模型和TCP/IP模型 OSI参考模型有7层自下而上为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层低三层为通信子网高三层为资源子网 物理层 传输单位是比特任务是透明的传输比特流 主要定义数据终端设备和数据通信设备的物理与逻辑连接方法 数据链路层 传输单位是帧任务是将网络层传来的IP数据报组装成帧功能包括成帧、差错控制、流量控制、传输管理常用协议有SDLC、HDLC、PPP、STP、帧中继 网络层 传输单位是数据报任务是把网络层的协议数据单元分组从源端传送到目的端功能包括路由选择、流量控制、拥塞控制、差错控制、网际互联常用协议有IP、IPX、ICMP、IGMP、ARP、RARP、OSPF 传输层 传输单位是报文段TCP或用户数据报UDP任务是负责主机中两个进程之间的通信功能是为端到端连接提供可靠的传输服务数据链路层提供的是点到点的通信传输层提供的是端到端的通信常用协议有TCP、UDP 会话层 允许不同主机上的各个进程之间进行会话 表示层 主要处理在两个通信系统中交换信息的表示方式。不同机器采用的编码和表示方法不同使用的数据结构也不同 应用层 常用协议有FTP、SMTP、HTTP TCP/IP模型 从低到高依次为网络接口层对应OSI的物理层和数据链路层、网际层、传输层、应用层对应OSI的会话层、表示层、应用层。TCP/IP由于得到广泛应用而成为事实上的国际标准 传输层主要使用 传输控制协议TCP面向连接的数据传输的单位是报文段能够提供可靠交付用户数据报协议UDP是无连接的数据传输的单位是用户数据报不保证提供可靠的交付只能提供尽最大努力交付 课后习题 选择题1、3、7、8、9、12、13、15、16、18、19、23、24、27综合题全没有 物理层 通信基础 基本概念 数据、信号、码元 信号是数据的电气、电磁表现是数据在传输过程中的存在形式码元指用一个固定时长的信号波形表示一位k进制数字代表不同离散数值的基本波形 信源、信道、信宿 信道按传输信号形式的不同可分为模拟信道和数字信道。按传输介质的不同可分为无线信道和有线信道 信道上传送的信号由基带信号和宽带信号之分基带信号送到数字信道宽带信号送到模拟信道 速率、波特、带宽 速率也称数据传输速率表示单位时间内传输的数据量波特率也称码元传输速率表示单位时间内数字通信系统所传输的码元个数比特率也称信息传输速率表示单位时间内数字通信系统传输的二进制码元个数 奈奎斯特定理与香农定理 在理想低通没有噪声、带宽有限的信道中为了避免码间串扰极限码元传输速率为2W波特W是理想低通信道的带宽若用V表示每个码元离散电平的数目码元的离散电平数目是指有多少种不同的码元比如有16种不同的码元则需要4个二进制位则极限数据率为 理想低通信道下的极限数据传输速率 2 W l o g 2 V 2Wlog_2V 2Wlog2​V单位为b/s 对于奈氏准则可得 任何信道中码元传输速率是有上限的。若传输速率超过此上限就会出现严重的码间串扰问题使得接收端不可能完全正确识别码元信道的频带越宽即通过的信号高频分量多就可用更高的速率进行码元的有效传输奈氏准则给出了码元传输速率的限制但并未对信息传输速率给出限制即未对一个码元可以对应多少个二进制位给出限制 香农定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率当用此速率进行传输时可以做到不产生误差香农定理为 信道的极限数据传输速率 W l o g 2 ( 1 S / N ) Wlog_2(1S/N) Wlog2​(1S/N)单位为b/sW为信道的带宽S为信道所传输信号的平均功率N为信道内部的高斯噪声功率S/N可计算信噪比信噪比 10 l o g 10 ( S / N ) 10log_{10}(S/N) 10log10​(S/N)当S/N10信噪比为10当S/N1000信噪比为30对于香农定理可得 信道的带宽或信道中的信噪比越大信息的极限传输速率越高对一定的传输带宽和一定的信噪比信息传输速率的上限是确定的只要信息传输速率低于信道的极限传输速率就能找到某种方法来实现无差错的传输香农定理得出的是极限信息传输速率实际信道能达到的传输速率要比它低不少 奈氏准则只考虑了带宽与极限码元 传输速率的关系而香农定理考虑到带宽、信噪比这表明一个码元对应的二进制位数是有限的 编码与调制 把数据变换为模拟信号的过程称为调制把数据变换为数字信号的过程称为编码 数字数据编码为数字信号 归零编码高电平代表1低电平代表0每个时钟周期的中间均跳变到低电平 非归零编码与归零编码的区别是不用归零一个周期可以全部用来传输数据但无法传递时钟信号双方难以同步 反向非归零编码与非归零编码的区别是用信号的翻转代表0信号保持不变代表1。这种方式集成了前两种编码的优点USB2.0通信的编码方式即为此 曼彻斯特编码将一个码元分成两个相等的间隔前后为高电平 低电平表示10则相反。这种编码在每个码元的中间出现跳变以太网使用的编码方式就是曼彻斯特编码 差分曼彻斯特编码常用于局域网传输在每个码元的中间都有一次电平的跳转可以实现自同步且抗干扰性较好 4B/5B编码 归零编码与差分曼彻斯特编码会在中间跳变 数字数据调制为模拟信号 幅移键控ASK改变载波信号的振幅 频移键控FSK改变载波信号的频率 相移键控PSK改变载波信号的相位 正交振幅调制QAM 模拟数据编码为数字信号 采样对模拟信号进行周期性扫描把时间上连续的信号变成时间上离散的信号量化把采样取得的电平幅值按照一定的分级标度转化为对应的数字值并取整数即连续转化离散编码是把量化的结果转换为与之对应的二进制编码 模拟数据调制为模拟信号 为了实现传输的有效性可能需要较高的频率 电路交换、报文交换、分组交换 电路交换 进行数据传输前两个结点之间必须先建立一条专用双方独占 物理通信路径电路交换技术分为三个阶段连接建立、数据传输、连接释放优点 通信时延小有序传输没有冲突适用范围广实时性强控制简单 缺点 建立连接时间长线路独占灵活性差难以规格化 电路建立后除源节点和目的结点外电路上的任何结点都采取直通方式接收数据和发送数据即不会存在存储转发所耗费的时间 报文交换 数据交换的单位是报文报文携带有目标地址、源地址等信息报文交换在交换结点采用的是存储转发的传输方式优点 无须建立连接动态分配线路提高线路可靠性提高线路利用率提供多目标服务 缺点 由于数据进入交换结点后要经历存储、转发这一过程因此会引起转发时延包括接收报文、校验正确性、排队、发送时间报文交换对报文的大小没有限制 报文交换主要使用在早期现在较少使用通常被分组交换方式所取代 分组交换 同报文交换一样分组交换也采用存储转发方式但解决了报文交换中大报文传输的问题分组交换限制了每次传送的数据块大小的上限优点 无建立时延线路利用率高简化了存储管理加速传输减少了出错概率和重发数据量 缺点 存在传输时延需要传输额外的信息量当分组交换采用数据报服务时可能会出现失序、丢失、重复分组问题分组到达目的结点时要对分组按编号进行排序等工作。若采用虚电路服务虽无失序问题但有呼叫建立、数据传输、虚电路释放三个过程 数据报与虚电路 由网络层提供是分组交换的两种方式 数据报 在端系统中实现的高层协议先把报文拆成若干带有序号的数据单元并在网络层加上地址等控制信息后形成数据报分组即网络层的PDU 特点 发送分组前不需要建立连接。发送方可随时发送分组网络尽最大努力交付传输不保证可靠性所以可能丢失为每个分组独立地选择路由转发的路径可能不同因此分组不一定按序到达目的结点发送的分组中要包括发送端和接收端地完整地址以便可以独立传输分组在交换结点存储转发时需要排队等候处理会带来一定的时延网络具有冗余路径当某个交换结点或一条链路出现故障时可相应地更新转发表对故障地适应能力强存储转发延时一般较小提高了网络的吞吐量收发双方不独占某条链路资源利用率较高 虚电路 试图将数据报方式与电路交换方式结合起来在分组发送之前要求在发送方和接收方建立一条逻辑上相连的虚电路并且连接一旦建立就固定了虚电路所对应的物理路径 特点 通信链路的建立和拆除需要时间开销路由选择体现在连接建立阶段连接建立后就确定了传输路径提供了可靠的通信功能能保证每个分组正确且有序到达致命弱点是当网络中的某个结点或链路出现故障彻底失效时所有经过该结点或链路的虚电路将遭到破坏分组首部不包含目的地址包含的是虚电路标识符相对于数据报方式其开销小 数据报与虚电路服务的比较 数据报虚电路连接的建立不需要必须有目的地址每个分组都有完整地址仅在建立连接阶段使用之后每个分组使用长度较短的虚电路号路由选择每个分组独立地进行路由选择和转发属于同一条虚电路的分组按照同一路由转发分组顺序不保证分组的有序到达保证分组的有序到达可靠性不保证可靠通信可靠性由用户主机来保证可靠性由网络保证对网络故障的适应性出故障的结点丢失分组其它分组路径选择发生变化时可以正常传输所有经过故障结点的虚电路均不能正常工作差错处理和流量控制由用户主机进行流量控制不保证数据报的可靠性可由分组交换网负责也可由用户主机负责 课后习题 选择题1、4、6、9、10、11、12、14、18、20、25、27、32、33、34、35、36、37、38、40、41、42综合题全没有 传输介质 双绞线、同轴电缆、光纤、无线传输介质 传输介质可分为导向传输介质电磁波被导向沿着固体媒介传播和非导向传输介质空气、真空、海水 双绞线 绞合可以减少对相邻导线的电磁干扰为了进一步提高抗电磁干扰能力在外面再加上一层用金属丝编织的屏蔽层就是屏蔽双绞线STP 同轴电缆 由内导体、绝缘层、网状编织屏蔽层、塑料外层构成 光纤 利用光导纤维传递光脉冲来进行通信。有光脉冲表示1无光脉冲表示0主要由纤芯、包层构成 无线传输介质 无线电波 具有很强的穿透能力可以传输很长的距离 微波、红外线、激光 需要发送方和接收方之间存在一条视线通路 物理层接口的特性 物理层考虑的是如何在连接到各种计算机的传输媒体上传输数据比特流而不指具体的传输媒体主要任务 机械特性指明接口所用接线器的形状尺寸等电气特性指明在接口电缆的各条线上出现的电压的范围功能特性指明某条线上出现的某一电平的电压表示何种意义过程特性指明对于不同功能的各种可能事件的出现顺序 课后习题 选择题3、4、7、10、12综合题全没有 物理层设备 中继器 主要功能是将信号给整形并放大再转发出去以消除信号经过一长段电缆后而产生的失真、衰减使信号的波形、强度达到所需要的要求进而扩大网络传输的距离原理是信号再生不是简单地将衰减地信号放大如果某个网络设备具有存储转发的功能那么可以认为它能连接两个不同的协议如果该网络设备没有存储转发功能那么认为它不能连接两个不同的协议。中继器没有存储转发功能因此不能连接两个速率不同的网段中继器两端的网段一定要使用同一个协议放大器和中继器都起放大作用只不过放大器放大的是模拟信号原理是将衰减的信号放大而中继器放大的是数字信号原理是将衰减的信号整形再生 集线器 实质上是一个多端口的中继器 总结 奈氏准则和香农定理的主要区别是什么 奈氏准则指出码元传输的速率是受限的香农定理给出了信息传输速率的极限 数据链路层 数据链路层的功能 主要作用是加强物理层传输原始比特流的功能将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路使之对网络层表现为一条无差错的链路。 为网络层提供的服务 任务是将源机器中来自网络层的数据传输到目标机器的网络层 无确认的无连接服务** 源机器发送数据帧时不需先建立链路连接目的机器收到数据帧时不需发回确认。对丢失的帧数据链路层不负责重发而交给上层处理。适用于实时通信或误码率较低的通信信道如以太网 有确认的无连接服务** 源机器发送数据帧时不需先建立链路连接但目的机器收到数据帧时必须发回确认。源机器在所规定的时间内未收到确定信号时就重传丢失的帧以提高传输的可靠性。该服务适用于误码率较高的通信信道如无线通信 有确认的面向连接服务** 帧传输过程分为三个阶段建立数据链路、传输帧、释放数据链路。目的机器对收到的每一帧都要给出确认源机器收到确认后才能发送下一帧因而该服务的可靠性最高。该服务适用于通信要求可靠性、实时性较高的场合 有连接就一定要有确认即不存在无确认的面向连接的服务 链路管理 数据链路层连接的 建立、维持和释放过程 称为 链路管理主要用于 面向连接 的服务。链路两端的结点要进行通信必须首先确认对方已处于 就绪状态并交换一些必要的信息以 对帧序号 初始化然后才能 建立连接在传输过程中则要能 维持连接而在传输完毕后要 释放该连接。在多个站点共享同一物理信道的情况下如在局域网如何在要求通信的站点间分配和管理信道 也属于数据链路层管理。 帧定界、帧同步与透明传输 两台主机之间传输信息时必须将网络层的 分组封装成帧以 帧 的格式进行传送。将一段数据的前后分别添加 首部 和 尾部就构成了 帧。 帧长 数据部分的长度 首部长度 尾部长度 帧长 数据部分的长度 首部长度 尾部长度 帧长数据部分的长度首部长度尾部长度。首部 和 尾部 含有很多控制信息一个重要作用是 确定帧的界限即帧定界。 帧同步 指的是 接收方应能从接受到的二进制比特流中区分出帧的起始与终止。为了提高帧的传输速率应当使帧的数据部分的长度尽可能地大于首部和尾部的长度但每种数据链路层协议都规定了帧的数据部分的长度上限即 最大传输单元MTUMaximum Transmission Unit如果在数据中恰好出现 与帧定界符相同的比特组合 会误以为“传输结束”而丢弃后面的数据那么就要采取有效的措施解决这个问题即 透明传输。更确切地说透明传输就是不管所传数据是什么样的比特组合都应当能在链路上传送。 流量控制 限制发送方的数据流量使其发送速率不超过接收方的接收能力不是数据链路层特有的功能许多高层协议中也提供此功能只不过控制对象不同而已。对于 数据链路层控制的是 相邻两结点之间的数据链路上的流量对于 运输层 来说控制的是从 源端到目的端之间的流量在OSI体系结构中数据链路层具有流量控制的功能。而在TCP/IP体系结构中流量控制功能被移到了传输层 差错控制 用以使发送方确定接收方是否正确收到由其发送的数据的方法 位错 帧中某些位出现了差错。通常采用 循环冗余校验CRC方式发现位错通过自动重传请求Automatic Repeat RequestARQ方式来重传出错的帧。 ARQ法让发送方将要发送的数据帧附加一定的CRC冗余检错码一并发送接收方则根据检错码对数据帧进行错误检测若发现错误则丢弃发送方超时重传该数据帧。 ARQ法只需返回很少的控制信息就可有效地确认所发送数据帧是否被正确接收。 帧错 指帧的丢失、重复、或失序等错误 在数据链路层引入定时器和编号机制能保证每一帧最终都能有且仅有一次正确地交付给目的结点 课后习题 选择题2、7、8综合题全没有 组帧 把比特组合成 帧为单位传输是为了在出错时只重发出错的帧而不必重发全部数据从而提高效率。 为了使接收方能正确地接收并检查所传输的帧发送方必须依据一定的规则把网络层递交的分组封装成帧称为组帧。组帧 主要解决 帧定界、帧同步、透明传输 等问题。 组帧时要同时加首部和尾部这是因为在网络中信息是以帧为最小单位进行传输的。而分组即IP数据报仅是包含在帧中的数据部分所以不需要加尾部来界定 字符计数法 字符计数法在 帧头部 使用一个计数字段来 标明帧内字符数。目的结点的数据链路层收到字节计数值时就知道 后面跟随的字节数从而可以确定 帧结束的位置。计数字段提供的字节数包含自身所占用的一个字节。 最大的问题是如果计数字段出错即失去帧边界划分的依据那么接收方就无法判断帧的结束位和下一帧的开始位收发双方失去同步 字符填充的首尾定界符法 使用特定字符来定界 一帧的开始与结束。如图控制字符 SOH 放在 帧的最前面表示 帧的首部开始。控制字符EOT 表示 帧的结束。 为了使信息位中出现的特殊字符不被误判为帧的首尾定界符可在特殊字符前面填充一个转义字符(ESC)来加以区分 零比特填充的首尾标志法 允许数据帧包含任意个数的比特也允许每个字符的编码包含任意个数的比特。使用一个特定的 比特模式即 01111110 来标志一帧的开始和结束。 为了不使信息位中出现的比特流 01111110 被误判为帧的首尾标志发送方的数据链路层在信息位中遇到5个连续的“1”时将自动在其后面插入一个“0”而接收方每收到5个连续的“1”时自动删除后面紧跟的**“0”**以恢复原信息。 零比特填充法很容易由硬件来实现性能优于字符填充法 违规编码法 在物理层进行比特编码时通常采用 违规编码法。例如曼侧斯特编码方法将 数据比特“1”编码成“高-低”电平对将 数据比特“0”编码成“低-高”电平对而 “高-高”电平对 和 “低-低”电平对在数据比特中是 违规的即没有采用。可以借用这些违规编码序列来 定界帧的起始和终止。 局域网 IEEE 802标准就采用了这种方法 违规编码法不需要采用任何填充技术便能实现数据传输的 透明性但它只适用于 采用冗余编码 的特殊编码环境。 由于 字节计数法 中计数字段的脆弱性和字符填充法 实现上的复杂性与不兼容性目前较常用的组帧方法是 比特填充法 和 违规编码法。 差错控制 比特差错实际通信链路都不是理想的比特在传输过程中可能会产生差错1可能会变成0,0也可能会变成1 比特差错是传输差错的一种本节只讨论比特差错 利用编码技术进行差错控制 自动重传请求ARQAutomatic Repeat Request 接收端检测出差错时设法通知发送端重发直到接收到正确的码字为止 前向纠错FECForward Error Correction 接收端不但能发现差错而且能 确定比特串的错误位置从而 加以纠正。 因此差错控制又可分为 检错编码 和 纠错编码 检错编码 采用冗余编码技术。核心思想是有效数据信息位被发送前先按某种关系附加一定的冗余位构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时相应的冗余位也随之变化使得码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则来判断是否出错。常见的检错编码有 奇偶校验码 和 循环冗余码 奇偶校验码 最基本的检错码分为奇校验码 和 偶校验码。由 n-1位信息元和1位校验元组成 只能检测奇数位的出错情况但并不知道哪些位出错也不能发现偶数位的出错情况。意思是当有1个3个5个等奇数个位置上的码出错这样能被检测到。这是因为奇数奇数偶数偶数奇数奇数即奇数是扭转奇偶类型的数。 循环冗余码Cyclic Redundancy Code多项式码 ​ 任何一个由二进制数位串组成的代码都可以与一个只含有0和1两个系数的多项式建立一一对应关系。一个k位帧可以视为从** X k − 1 到 X 0 X^{k-1}到X^0 Xk−1到X0的k次多项式的系数序列这个多项式的阶数为k-1**高位是 X k − 1 X^{k-1} Xk−1项的系数下一位是 X k − 2 X^{k-2} Xk−2的系数以此类推。例如1110011有7位表示成多项式是 X 6 X 5 X 4 X 1 X^6X^5X^4X1 X6X5X4X1而多项式 X 5 X 4 X 2 X X^5X^4X^2X X5X4X2X对应的位串是110110。给定一个m bit的帧或报文发送器生成一个r bit的序列称为 帧检验序列FCS。这样形成的帧将由 mr 比特组成。发送方和接收方事先商定一个多项式G(x)【最高位和最低位必须是1】使这个带检验码的帧刚好能被预先确定的多项式**G(x)**整除。接收方用相同的多项式去除收到的帧如果无余数那么认为无差错。通过 循环冗余码CRC)的检错技术数据链路层做到了对帧的 无差错接收。也就是说凡是接收端数据链路层接收的帧我们都认为这些帧在传输过程中没有产生差错而接收端丢弃的帧虽然也收到了但最终因为有差错而被丢弃即未被接受。 循环冗余码CRC是具有纠错功能的只是数据链路层仅使用了它的检错功能检测到帧出错则直接丢弃 CRC计算步骤 展开多项式得到CRC除数 为避免出错从右往左写原数据末端加0 多项式最高是几次就加几个0从左往右按位异或 所得结果位数如果不够长前面的0不要漏了CRC校验和的长度等于除数的长度-1 纠错编码 在数据通信的过程中解决差错问题的一种方法是 在每个要发送的数据块上附加足够的冗余信息使接收方能够推导出发送方实际送出的应该是什么样的比特串。最常见的纠错编码是 海明码其实现原理是 在有效信息位中加入几个校验位形成海明码并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后就会引起有关的几个校验位的值发生变化这不但可以发现错位而且能指出错位的位置为自动纠错提供依据。 海明码的编码原理和过程举例以数据码1010 确定海明码的位数 设 n为有效信息的位数k为校验位的位数则信息位n和校验位k应满足 n k ≤ 2 k − 1 nk \le 2^k-1 nk≤2k−1 若要检测两位错则需再增加1位校验位即** k 1 k1 k1**位。 海明码位数为 n k 7 ≤ 2 3 − 1 nk7 \le 2^3-1 nk7≤23−1成立则nk有效。设信息位为 D 4 D 3 D 2 D 1 ( 1010 ) D_4D_3D_2D_1 (1010) D4​D3​D2​D1​(1010)共4位校验位为 P 3 P 2 P 1 P_3P_2P_1 P3​P2​P1​共3位。对应的海明码为 H 7 H 6 H 5 H 4 H 3 H 2 H 1 H_7H_6H_5H_4H_3H_2H_1 H7​H6​H5​H4​H3​H2​H1​。 确定校验位的分布 规定 校验位 P i P_i Pi​在海明位号为 2 i − 1 2^{i-1} 2i−1的位置上其余各位为信息位因此有 P 1 P_1 P1​的海明位号为 2 i − 1 2 0 1 2^{i-1}2^01 2i−1201即 H 1 为 P 1 H_1为P_1 H1​为P1​ P 2 P_2 P2​的海明位号为 2 i − 1 2 1 2 2^{i-1}2^12 2i−1212即 H 2 为 P 2 H_2为P_2 H2​为P2​ P 3 P_3 P3​的海明位号为 2 i − 1 2 2 4 2^{i-1}2^24 2i−1224即 H 4 为 P 3 H_4为P_3 H4​为P3​ 将信息位按原来的顺序插入则海明码各位的分布如下 H 7 H_7 H7​ H 6 H_6 H6​ H 5 H_5 H5​ H 4 H_4 H4​ H 3 H_3 H3​ H 2 H_2 H2​ H 1 H_1 H1​ D 4 D_4 D4​ D 3 D_3 D3​ D 2 D_2 D2​ P 3 P_3 P3​ D 1 D_1 D1​ P 2 P_2 P2​ P 1 P_1 P1​ 分组以形成校验关系 每个数据位用 多个校验位 进行校验但要满足条件 被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和即 H i H_i Hi​。 另外校验位不需要再被校验。分组校验形成的校验关系如下 校验位取值 校验位 P i P_i Pi​的值为第i组由该校验位校验的数据位所有位求异或。 根据3中的分组有 P 1 D 1 ⊕ D 2 ⊕ D 4 0 ⊕ 1 ⊕ 1 0 P 2 D 1 ⊕ D 3 ⊕ D 4 0 ⊕ 0 ⊕ 1 1 P 3 D 2 ⊕ D 3 ⊕ D 4 1 ⊕ 0 ⊕ 1 0 P_1D_1 \oplus D_2 \oplus D_40 \oplus 1 \oplus 1 0 \\ P_2D_1 \oplus D_3 \oplus D_40 \oplus 0 \oplus 1 1 \\ P_3D_2 \oplus D_3 \oplus D_4 1 \oplus 0 \oplus 1 0 P1​D1​⊕D2​⊕D4​0⊕1⊕10P2​D1​⊕D3​⊕D4​0⊕0⊕11P3​D2​⊕D3​⊕D4​1⊕0⊕10 所以1010对应的海明码为 101 0010 方框内为校验位其它为信息位 海明码的校验原理 每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查构成 k个校验方程 S 1 P 1 ⊕ D 1 ⊕ D 2 ⊕ D 4 S 2 p 2 ⊕ D 1 ⊕ D 3 ⊕ D 4 S 3 p 3 ⊕ D 2 ⊕ D 3 ⊕ D 4 S_1P_1 \oplus D_1 \oplus D_2 \oplus D_4 \\ S_2p_2 \oplus D_1 \oplus D_3 \oplus D_4 \\ S_3 p_3 \oplus D_2 \oplus D_3 \oplus D_4 S1​P1​⊕D1​⊕D2​⊕D4​S2​p2​⊕D1​⊕D3​⊕D4​S3​p3​⊕D2​⊕D3​⊕D4​ 若 S 3 S 2 S 1 S_3S_2S_1 S3​S2​S1​的值为 000则说明 无错否则说明 出错且这个数就是 错误位的位号如 S 3 S 2 S 1 S_3S_2S_1 S3​S2​S1​001说明第1位出错即 H 1 H_1 H1​出错直接将该位取反就达到了纠错的目的。 ** P i P_i Pi​**在发送前就算好了一并发送过去所以如果跟接收方收到的 D 3 、 D 2 、 D 1 D_3、D_2、D_1 D3​、D2​、D1​再计算出来的 P i P_i Pi​对不上的话就说明是 数据发生变化。 海明码纠错d位需要码距为 2 d 1 2d1 2d1的编码方案检错d位需要码距 d 1 d1 d1 流量控制与可靠传输机制 流量控制、可靠传输与滑动窗口机制 流量控制涉及对链路上的帧的发送速率的控制以使接收方有足够的缓冲空间来接收每个帧。基本方法是由接收方控制发送方发送数据的速率常见的方式有两种停止-等待协议和滑动窗口协议。 停止-等待流量控制基本原理 发送方每发送一帧都要等待接收方的应答信号之后才能发送下一帧接收方每接收一帧都要反馈一个应答信号表示可接收下一帧如果接收方不反馈应答信号那么发送方必须一直等待。每次只允许发送一帧然后就陷入等待接收方确认信息的过程中因而传输效率很低 滑动窗口流量控制基本原理 在任意时刻发送方都维持一组连续的允许发送的帧的序号称为发送窗口同时接收方也维持一组连续的允许接收帧的序号称为接收窗口。发送窗口用来对发送方进行流量控制而发送窗口的大小 W T W_T WT​代表还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。同理在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方只有收到的数据帧的序号落入接收窗口内时才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外则一律丢弃。 发送端每收到一个确认帧发送窗口就向前滑动一个帧的位置当发送窗口内没有可以发送的帧即窗口内的帧全部是已发送但未收到确认的帧时发送方就会停止发送直到收到接收方发送的确认帧使窗口移动窗口内有可以发送的帧后才开始继续发送 接收端收到数据帧后将窗口向前移一个位置并发回确认帧若收到的数据帧落在接收窗口之外则一律丢弃 滑动窗口有以下重要特性 只有接收窗口向前滑动同时接收方发送了确认帧时发送窗口才有可能只有发送方收到确认帧后才一定向前滑动从滑动窗口的概念看停止-等待协议、后退N帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有所差别。 停止-等待协议发送窗口大小1接收窗口大小1后退N帧协议发送窗口大小1接收窗口大小1选择重传协议发送窗口大小1接收窗口大小1 接收窗口的大小为1时可保证帧的有序接收数据链路层的滑动窗口协议中窗口的大小在传输过程中是固定的。与传输层的滑动窗口协议不同 可靠传输机制 数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。确认是一种无数据的控制帧这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。 有些情况下为了提高传输效率将确认捎带在一个回复帧中称为捎带确认。 超时重传是指发送方在发送某个数据帧后就开启一个计时器在一定时间内如果没有得到发送的数据帧的确认帧那么就重新发送该数据帧直到发送成功为止。 **自动重传请求Auto Repeat RequestARQ**通过接收方请求发送方重传出错的数据帧来恢复出错的帧是通信中用于处理信道所带来差错的方法之一。 传统自动重传请求分为三种即 停止-等待Stop-and-WaitARQ、后退N帧Go-Back-NARQ选择性重传Selective RepeatARQ。后两种协议是滑动窗口技术与请求重发技术的结合由于窗口尺寸开到足够大时帧在线路上可以连续的流动因此又称其为连续ARQ协议。 在数据链路层中流量控制机制和可靠传输机制是交织在一起的 现有的实际有线网络的数据链路层很少采用可靠传输不同于OSI参考模型的思路 单帧滑动窗口与停止-等待协议 在停止-等待协议中源站发送单个帧后必须等待确认在目的站的回答到达源站之前源站不能发送其他的数据帧。从滑动窗口机制的角度看停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。 在停止-等待协议中除数据帧丢失外还可能出现以下两种差错 到达目的站的帧可能已遭破坏接收站利用差错检测技术检出后简单地将该帧丢弃。为了对付这种可能发生的情况源站装备了计时器。在一个帧发送之后源站等待确认如果在计时器计满时仍未收到确认那么再次发送相同的帧。如此重复直到该数据帧无错误地到达为止。 数据帧正确而确认帧被破坏。此时接收方已经收到正确的数据帧但发送方收不到确认帧因此发送方会重传已被接收的数据帧接收方收到同样的数据帧时会丢弃该帧并重传一个该帧对应的确认帧。发送的帧交替地用0和1来标识肯定确认分别用ACK0和ACK1来表示收到的确认有误时重传已发送的帧。 对于停止-等待协议由于每发送一个数据帧就停止并等待因此用1bit来编号就已经足够。在停止-等待协议中若连续出现相同发送序号的数据帧表明发送端进行了超时重传。连续出现相同序号的确认帧时表明接收端收到了重复帧。 为了超时重发和判定重复帧的需要发送方和接收方都须设置一个帧缓冲区。发送端在发送完数据帧时必须在其发送缓冲中保留此数据帧的副本这样才能在出差错时进行重传。只有在收到对方发来的确认帧ACK时方可清除此副本。 由下图可知停止-等待协议通信信道的利用率很低。为了克服这一缺点就产生了另外两种协议即后退N帧协议和选择重传协议。 多帧滑动窗口与后退N帧协议GBN 在后退N帧式ARQ中发送方无须在收到上一个帧的ACK后才能开始发送下一帧而是可以连续发送帧。当接收方检测出失序的信息帧后要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧或者当发送方发送了N个帧后若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息则该帧被判为出错或丢失此时发送方就不得不重传该出错帧及随后的N个帧。换句话说接收方只允许按顺序接收帧(所以接收窗口大小为1)。 如下图源站向目的站发送数据帧。当源站发完0号帧后可以继续发送后续的1号帧2号帧等。源站每发送完一帧就要为该帧设置超时计时器。由于连续发送了许多帧所以确认帧必须要指明是对哪一帧进行确认。为了减少开销GBN协议还规定接收端不一定每收到一个正确的数据帧就必须立即发回一个确认帧而可以在连续收到好几个正确的数据帧后才对最后一个数据帧发确认信息或者可在自己有数据要发送时才将对以前正确收到的帧加以捎带确认。这就是说对某一数据帧的确认就表明该数据帧和此前所有的数据帧均已正确无误地收到 这就是累计确认即收到了0、5、6的确认帧则说明1~5号帧都已经收到了不需要重传 如下图ACKn表示对第n号帧的确认表示接收方已正确收到第n号帧及以前的所有帧下一次期望收到第n1号帧也可能是第0号帧。接收端值按序接收数据帧。虽然在有差错的2号帧之后接着又收到了正确的6个数据帧但接收端都必须将这些帧丢弃。接收端虽然丢弃了这些不按序的无差错帧但应重复发送已发送的最后一个确认帧ACK1这是为了防止已发送的确认帧ACK1丢失。 后退N帧协议的接收窗口为1可以保证按序接收数据帧。若采用n比特对帧编号则其发送窗口的尺寸 W T W_T WT​应满足** 1 ≤ W T ≤ 2 n − 1 1 \le W_T \le 2^n-1 1≤WT​≤2n−1。若发送窗口的尺寸大于 2 n − 1 2^n-1 2n−1则会造成接收方无法分辨新帧和旧帧**。 由上图可看出后退N帧协议一方面因连续发送数据帧而提高了信道的利用率另一方面在重传时又必须把原来已传送正确的数据帧进行重传仅因这些数据帧的前面有一个数据帧出了错这种做法又使传送效率降低。由此可见若信道的传输质量很差导致误码率较大时后退N帧协议不一定优于停止-等待协议。 多帧滑动窗口与选择重传协议SR 为进一步提高信道的利用率可设法只重传出现差错的数据帧或计时器超时的数据帧但此时必须加大接收窗口以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。 在选择重传协议中每个发送缓冲区对应一个计时器当计时器超时时缓冲区的帧就会重传。另外该协议使用了比上述其他协议更有效的差错处理策略即一旦接收方怀疑帧出错就会发一个否定帧NAK给发送方要求发送方对NAK中指定的帧进行重传如下图 选择重传协议的接收窗口尺寸 W R W_R WR​和发送窗口尺寸 W T W_T WT​都大于1一次可以发送或接收多个帧。若采用n比特对帧编号为了保证接收方向前移动窗口后新窗口序号与旧窗口序号没有重叠部分需要满足条件接收窗口 W R W_R WR​发送窗口 W T ≤ 2 n W_T \le 2^n WT​≤2n。假定仍然采用累计确认的方法并且接收窗口 W R W_R WR​显然不应超过发送窗口 W T W_T WT​否则无意义那么接收窗口尺寸不应超过序号范围的一半即** W R ≤ 2 n − 1 W_R \le 2^{n-1} WR​≤2n−1。接收窗为最大值时 W T m a x W R m a x 2 n − 1 \rm W_{Tmax}W_{Rmax}2^{n-1} WTmax​WRmax​2n−1**。 一般情况下在SR协议中接收窗口的大小和发送窗口的大小是相同的。 选择重传协议可以避免重复传送那些本已正确到达接收端的数据帧但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接收窗口下界以下或窗口上界以上的序号的帧因此所需缓冲区的数目等于窗口的大小而不是序号数目。 介质访问控制 任务 为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号以协调活动结点的传输。 内容 采取一定的措施使得两对结点之间的通信不会发生互相干扰的情况。 控制方法 信道划分介质访问控制 静态划分信道随机访问介质访问控制 动态分配信道轮询访问介质访问控制 动态分配信道 信道划分介质访问控制 将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来把时域和频域资源合理地分配给网络上的设备。 多路复用技术实现信道划分介质访问控制 当传输介质的带宽超过传输单个信号所需的带宽时人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率把多个信号组合在一条物理信道上进行传输使多个计算机或终端设备共享信道资源提高了信道的利用率可把多个输入通道的信息整合到一个复用通道中在接收端把收到的信息分离出来并传送到对应的输出通道 信道划分的实质就是通过分时、分频、分码等方法把原来的一条广播信道逻辑上分为几条用于两个结点之间通信的互不干扰的子信道实际上就是把广播信道转变为点对点信道。 频分多路复用FDMFrequency-division multiplexing 将多路基带信号调制到不同频率载波上再叠加形成一个复合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下可将该物理信道的总带宽分割成若干与传输单个信号带宽相同或略宽的子信道每个子信道传输一种信号 每个子信道分配的带宽可不相同但它们的总和必须不超过信道的总带宽。在实际应用中为了防止子信道之间的干扰相邻信道之间需要加入**“保护频带”** 频分多路复用的优点在于充分利用了传输介质的带宽系统效率较高由于技术比较成熟实现也较容易 时分多路复用TDMTime-division multiplexing 将一条物理信道按时间分成若干时间片轮流地分配给多个信号使用。每个时间片由复用的一个信号占用不像FDM那样同一时间同时发送多路信号。这样利用每个信号在时间上的交叉就可以在一条物理信道上传输多个信号。 由于计算机数据的突发性一个用户对已经分配到子信道的利用率一般不高。统计时分多路复用STDM异步时分多路复用Statistical-Time-division multiplexing是TDM的一种改进它采用STDM帧STDM帧并不固定分配时隙而按需动态地分配时隙当终端有数据要传送时才会分配到时间片因此可以提高线路的利用率。 波分多路复用WDMWavelength-division multiplexing 即光的频分多路复用在一根光纤中传输多种不同波长频率的光信号由于波长频率不同各路光信号互不干扰最后再用波长分解复用器将各路波长分解出来。 由于光波处于频谱的高频段有很高的带宽因而可以实现多路的波分复用 码分多路复用CDMCode-division multiplexing 采用不同的编码来区分各路原始信号的一种复用方式。与FDM和TDM不同它既共享信道的频率又共享时间 更常用的名词是码分多址Code Division Multiple AccessCDMA其原理是每个比特时间再划分成m个短的时间槽称为码片Chip通常m的值是64或128。 设m为8。每个站点被指派一个唯一的m位码片序列。发送1时站点发送它的码片序列发送0时站点发送该码片序列的反码。当两个或多个站点同时发送时各路数据在信道中线性相加。为从信道中分离出各路信号要求各个站点的码片序列相互正交。 CDMA的原理 假如站点A的码片序列被指派为00011011则A站发送00011011就表示发送比特1发送11100100就表示发送比特0。 为了方便按惯例将码片中的0写作**-1**将1写作**1** 因此A站的码片序列是**-1-1-111-111** 令向量S表示A站的码片向量令T表示B站的码片向量。两个不同站的码片序列正交即向量S和T的规格化内积为0 S ⋅ T ≡ 1 m ∑ i 0 m S i T i 0 S·T \equiv \frac{1}{m} \sum_{i0}^{m}S_iT_i0 S⋅T≡m1​i0∑m​Si​Ti​0 任何一个码片向量和该码片向量自身的规格化内积都是1任何一个码片向量和该码片反码的向量的规格化内积都是**-1** S ⋅ S 1 m ∑ i 1 m S i S i 1 m ∑ i 1 m S i 2 1 m ∑ i 1 m ( ± 1 ) 2 1 S·S\frac{1}{m} \sum_{i1}^{m}S_iS_i\frac{1}{m} \sum_{i1}^mS_i^2\frac1m\sum_{i1}^m(\pm1)^21 S⋅Sm1​i1∑m​Si​Si​m1​i1∑m​Si2​m1​i1∑m​(±1)21 令向量T为-1 -1 1 -1 1 1 1 -1当A站向C站发送数据1时就发送了向量-1 -1 1 -1 1 1 1 -1。当B站向C站发送数据0时就发送了向量1 1 -1 1 -1 -1 -1 1。两个向量到了公共信道上就进行叠加实际上就是线性相加得到 S − T ( 0 0 − 2 2 0 − 2 0 2 ) S-T(0 \quad 0 \quad -2 \quad 2 \quad 0 \quad -2 \quad 0 \quad 2) S−T(00−220−202) 到达C站后进行数据分离如果要得到来自A站的数据C站就必须知道A站的码片序列让S与S-T进行规格化内积。根据叠加原理其他站点的信号都在内积的结果中被过滤掉了内积的相关项都是0而只剩下A站发送的信号。得到 S ⋅ ( S − T ) 1 S·(S-T)1 S⋅(S−T)1 所以A站发出的数据是1。同理如果要得到来自B站的数据那么 T ⋅ ( S − T ) − 1 T·(S-T)-1 T⋅(S−T)−1 因此从B站发送过来的信号向量是一个反码向量代表0 码分多址复用技术具有频谱利用率高、抗干扰能力强、保密性强、语音质量好等优点还可以减少投资和降低运行成本主要用于无线通信系统特别是移动通信系统。 随机访问介质访问控制 随机访问协议 在随机访问协议中不采用集中控制方式解决发送信息的次序问题所有用户能根据自己的意愿随机地发送信息占用信道全部速率。 在总线形网络中当有两个或多个用户同时发送信息时就会产生帧的冲突碰撞即前面所说的相互干扰导致所有冲突用户的发送均已失败告终。 为了解决随机接入发生的碰撞每个用户需要按照一定的规则反复地重复传它的帧直到该帧无碰撞地通过。 常用的协议有ALOHA协议CSMA协议CSMA/CD协议和CSMA/CA协议等它们的核心思想是胜利者通过争用获得信道从而获得信息的发送权。因此随机访问介质控制协议又称为争用型协议。 如果介质访问控制采用信道划分机制那么结点之间的通信要么共享空间要么共享时间要么两者都共享而如果采用随机访问控制机制那么各结点之间的通信就可既不共享时间也不共享空间。所以随机介质访问控制实质上是一种将广播信道转为点到点信道的行为。 ALOHA协议Additive Link On-line HAwaii system 纯ALOHA协议 当网络中的任何一个站点需要发送数据时可以不进行任何检测就发送数据。如果在一段时间内未收到确认那么该站点就认为传输过程中发生了冲突。 发送站点需要等待一段时间后再发送数据直至发送成功。 假设网络负载 T 0 T_0 T0​时间内所有站点发送成功的和未成功而重传的帧数为G则纯ALOHA网络的吞吐量 T 0 T_0 T0​时间内成功发送的平均帧数为** S G e − 2 G SGe^{-2G} SGe−2G。当G0.5时S$0.5e^-1 \approx 0.184 $这是吞吐量S可能达到的极大值**。可见纯ALOHA网络的吞吐量很低。为了克服这一缺点人们在原始的纯ALOHA协议的基础上改进成时隙ALOHA协议。 时隙ALOHA协议 把所有各站在时间上同步起来并将时间划分为一段段等长的时隙Slot规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发送数据的随意性减少了数据产生冲突的可能性提高了信道的利用率。 时隙的长度 T 0 T_0 T0​使得每个帧正好在一个时隙内发送完毕。每个帧在到达后一般都要在缓存中等待一段小于 T 0 T_0 T0​的时间然后才能发送出去。在一个时隙内有两个或两个以上的帧到达时在下一个时隙将产生碰撞。碰撞后重传的策略与纯ALOHA的情况是相似的。 时隙ALOHA网络的吞吐量S与网络负载G的关系是** S G e − G SGe^{-G} SGe−G。当G1时 S e − 1 ≈ 0.368 Se^{-1} \approx 0.368 Se−1≈0.368。这是吞吐量S可能达到的极大值。可见时隙ALOHA的网络比纯ALOHA网络的吞吐量大了1倍**。 时隙ALOHA系统的效率虽然是纯ALOHA系统的两倍但每个站点都是随心所欲地发送数据的即使其他站点正在发送也照发不误因此发送碰撞的概率很大。 CSMA协议Carrier Sense Multiple Access 每个站点在发送前都先侦听一下共用信道发现信道空闲后再发送就会大大降低冲突的可能从而提高信道的利用率。 CSMA协议是在ALOHA协议基础上提出的一种改进协议它与ALOHA协议的主要区别是多了一个载波侦听装置 根据侦听方式和侦听到信道忙后的处理方式不同CSMA分为三种 1-坚持CSMA1-persistent CSMA 一个结点要发送数据时首先侦听信道如果信道空闲那么立即发送数据如果信道忙那么等待同时继续侦听直至信道空闲如果发生冲突那么随机等待一段时间后再重新开始侦听信道 1-坚持的含义是侦听到信道忙后继续坚持侦听信道侦听到信道空闲后发送帧的概率为1即立刻发送数据。 传播延迟对1-坚持CSMA协议的性能影响较大。结点A开始发送数据时结点B也正好有数据要发送但这时结点A发出数据的信号还未到达结点B结点B侦听到信道空闲于是立即发送数据结果必然导致冲突。即使不考虑延迟1-坚持CSMA协议也可能产生冲突。 结点A正在发送数据时结点B和C也准备发送数据侦听到信道忙于是坚持侦听结果当结点A一发送完毕结点B和C就会立即发送数据同样导致冲突。 非坚持CSMANon-persistent CSMA 一个结点要发送数据时首先侦听信道如果空闲立即发送数据如果忙放弃侦听等待一个随机的时间后再重复上述过程。侦听到信道忙后就放弃了侦听因此降低了多个结点等待信道空闲后同时发送数据导致冲突的概率但也会增加数据在网络中的平均延迟可见信道利用率的提高是以增加数据在网络中的延迟时间为代价的 p-坚持CSMAP-persistent CSMA 用于时分信道一个结点要发送数据时 首先侦听信道忙持续侦听直到信道空闲空闲以概览p发送数据以概览1-p推迟到下一个时隙如果在下一个时隙信道仍然空闲那么仍以概率p发送数据以概率1-p推迟到下一个时隙这个过程一直持续到数据发送成功或因其他结点发送数据而检测到信道忙为止若是后者则等待下一个时隙再重新开始侦听 p-坚持CSMA目的是降低1-坚持 CSMA协议中多个结点检测到信道空闲后同时发送数据的冲突概览。采用坚持侦听的目的是试图克服非坚持CSMA协议中由于随即等待而造成的延迟时间较长的缺点。p-坚持CSMA协议是非坚持CSMA协议和1-坚持CSMA协议的折中方案。 CSMA/CD协议Carrier Sense Multiple Access with Collision Detection载波侦听多路访问/碰撞检测 是CSMA协议的改进方案适用于总线形网络或半双工网络环境 发送前先侦听每个站在发送前先要检测一个总线上是否有其他站点正在发送数据若有则暂时不发送数据等待信道变为空闲时再发送。“碰撞检测”就是边发送边侦听即适配器边发送数据边检测信道上信号电压的变化情况以便判断自己在发送数据时其他站点是否也在发送数据 CSMA/CD的工作流程可简单概括为先听后发边听边发冲突停发随机重发 适配器从网络层获得一个分组封装成以太网帧放入适配器的缓存准备发送如果适配器侦听到信道空闲那么它开始发送该帧。如果适配器侦听到信道忙那么它持续侦听直至信道上没有信号能量然后开始发送该帧。在发送过程中适配器持续检测信道。若一直未检测到碰撞则顺利地把这个帧发送完毕。若检测到碰撞则中止数据的发送并发送一个拥塞信号以让所有用户知道。在中止发送后适配器就执行指数退避算法等待一段随机时间后返回到步骤2 电磁波在总线上的传播速率总是有限的因此当某个时刻发送站检测到信道空闲时此时信道不一定是空闲的。如下图可知CSMA/CD中的站不可能同时进行发送和接收因此采用CSMA/CD的协议的以太网只能进行半双工通信 由上图可知站A在发送帧后至多经过时间** 2 τ 2\tau 2τ 端到端传播时延的2倍就能知道所发送的帧有没有发生碰撞当 δ → 0 \delta \rightarrow 0 δ→0时。因此把以太网端到端往返时间 2 τ 2 \tau 2τ称为争用期又称冲突窗口或碰撞窗口。每个站在自己发送数据之后的一小段时间内存在发生碰撞的可能性只有经过争用期这段时间还未检测到碰撞时才能确定**这次发送不会发生碰撞。 为了确保发送站在发送数据的同时能检测到可能存在的碰撞需要在发送完帧之前就能收到自己发送出去的数据即帧的传输时延至少要两倍于信号在总线中的传播时延所以CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。 任何站点收到帧长小于最小帧长的帧时就把它当作无效帧立即丢弃。 最小帧长 总线传播时延 × 数据传输速率 × 2 最小帧长总线传播时延 \times 数据传输速率 \times 2 最小帧长总线传播时延×数据传输速率×2 除检测冲突外, CSMA/CD还能从冲突中恢复, 一旦发生了冲突, 参与冲突的两个站点紧接着再次发送是没有意义的, 如果它们这样做, 那么将会导致无休止的冲突, CSMA/CD采用二进制指数退避算法来解决碰撞问题, 算法精髓如下 确定基本退避时间, 一般取两倍的总线端到端传播时延** 2 τ 2 \tau 2τ** (即争用期)定义参数k, 它等于重传次数, 但k不超过10, 即kmin[重传次数, 10]从离散的整数集合[0, 1, …, 2 k − 1 2^k-1 2k−1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间, 即** 2 r τ 2r\tau 2rτ**当重传达16次仍不能成功时, 说明网络太拥挤, 认为此帧永远无法正确发出, 抛弃此帧并向高层报告出错 使用二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大, (也称动态退避), 因而能降低发生碰撞的概率, 有利于整个系统的稳定 CSMA/CA协议 CSMA/CD协议已成功应用于使用有线连接的局域网, 但在无线局域网环境下, 却不能简单地搬用CSMA/CD协议, 特别是碰撞检测部分, 主要原因有二 接收信号的强度往往会远小于发送信号的强度, 且在无限介质上信号强度的动态变化范围很大, 因此若要实现碰撞检测, 则在硬件上的花费就会过大在无线通信中, 并非所有的站点都能够听见对方, 即存在隐蔽站问题 为此, 802.11标准定义了广泛应用于无线局域网的CSMA/CA协议, 它对CSMA/CD协议进行修改, 把碰撞检测改为碰撞避免 (Collision Avoidance, CA), 碰撞避免并不是指协议可以完全避免碰撞, 而是指协议的设计要尽量降低碰撞发生的概率. 由于802.11无线局域网不使用碰撞检测, 一旦站点开始发送一个帧, 就会完全地发送该帧, 但碰撞存在时仍然发送整个数据帧(尤其是长数据帧)会严重降低网络的效率, 因此要采用碰撞避免技术降低碰撞的可能性 由于无线信道的通信质量远不如有线信道, 802.11使用链路层**确认/重传 (ARQ)**方案, 即站点每通过无线局域网发送完一帧, 就要在收到对方的确认帧后才能继续发送下一帧 为了尽量避免碰撞, 802.11规定, 所有的站完成发送后, 必须再等待一段很短的时间( 继续监听) 才能发送下一帧. 这段时间称为帧间间隔(InterFrame Space, IFS). 帧间间隔的长短取决于该站要发送的帧的类型, 802.11使用了3种IFS SIFS (短IFS) 最短的IFS, 用来分隔属于一次对话的各帧, 使用SIFS的帧类型有ACK帧, CTS帧, 分片后的数据帧, 以及所有回答AP探询的帧等 PIFS (点协调IFS) 中等长度的IFS, 在PCF操作中使用 DIFS (分布式协调IFS) 最长的IFS, 用于异步帧竞争访问的时延 CSMA/CA的退避算法和CSMA/CD稍有不同, 信道从忙态变为空闲态时, 任何一个站要发送数据帧, 不仅都要等待一个时间间隔, 而且要进入争用窗口, 计算随机退避时间以便再次试图接入信道, 因此降低了碰撞发生的概率. 当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时, 才不使用退避算法, 其他所有情况都必须使用退避算法, 具体为 在发送第一个帧前检测到信道忙每次重传每次成功发送后要发送下一帧 CSMA/CA算法归纳如下 若站点最初有数据要发送 (而不是发送不成功再进行重传), 且检测到信道空闲, 在等待时间DIFS后, 就发送整个数据帧否则, 站点执行CSMA/CA退避算法, 选取一个随机回退值. 一旦检测到信道忙, 退避计时器就保持不变. 只要信道空闲, 退避计时器就进行倒计时当退避计时器减到0时 (这时信道只可能是空闲的) , 站点就发送整个帧并等待确认发送站若收到确认, 就知道已发送的帧被目的站正确接收, 这时如果要发送第二帧, 就要从步骤2开始 若发送站在规定时间内没有收到确认帧ACK (由重传计时器控制), 就必须重传该帧, 再次使用CSMA/CA协议争用该信道, 直到收到确认, 或经过若干次重传失败后放弃发送 处理隐蔽站问题, RTS 和 CTS 如下图, 站A和B都在AP的覆盖范围内, 但A和B相距较远, 彼此都听不见对方. 当A和B检测到信道空闲时, 都向AP发送数据, 导致碰撞的发生, 这就是隐蔽站问题 为了避免该问题, 802.11允许发送站对信道进行预约, 源站要发送数据帧之前先广播一个短请求发送RTS控制帧, 它包括源地址, 目的地址, 这次通信(含相应的确认帧) 所持续的时间, 该帧能被其范围内包括AP在内的所有站点听到. 若信道空闲, 则AP广播一个允许发送CTS控制帧, 它包括这次通信所需的持续时间(从RTS帧复制), 该帧也能被其范围内包括A和B在内的所有站点听到. B和其他站听到CTS后, 在CTS帧中指明的时间内将抑制发送 CTS帧有两个目的 给源站明确的发送许可指示其他站点在预约期内不要发送 CSMA/CD与CSMA/CA主要有如下区别 CSMA/CD可以检测冲突, 但无法避免, CSMA/CA发送数据的同时不能检测信道上有无冲突, 本结点处没有冲突并不意味着在接收结点处就没有冲突, 只能尽量避免 传输介质不同 CSMA/CD用于总线形以太网, CSMA/CA用于无线局域网802.11a/b/g/n等 检测方式不同 CSMA/CD通过电缆中的电压变化来检测 而CSMA/CA采用能见检测, 载波检测和能量载波混合检测三种检测信道空闲的方式 轮询访问介质访问控制: 令牌传递协议 用户不能随机地发送信息, 而是要通过一个集中控制地监控站, 以循环方式轮询每个结点, 再决定信道的分配. 当某结点使用信道时, 其他结点都不能使用信道. 典型的轮询访问介质访问控制协议是令牌传递协议, 主要用在令牌局域网中 一个令牌在各结点间以某个固定的次序交换. 令牌是由一组特殊的比特组合而成的帧. 当环上的一个站希望传送帧时, 必须等待令牌. 一旦收到令牌, 站点便可启动发送帧. 帧中包括目的站的地址, 以标识哪个站应接收此帧帧在环上传送时, 不管该帧是否是发给本站点的, 所有站点都进行转发, 直到该帧回到它的始发站, 并由该始发站撤销该帧帧的目的站除转发帧外, 应针对该帧维持一个副本, 并通过在帧的尾部设置响应比特来指示已收到此副本站点在发送完一帧后, 应释放令牌, 以便让其他站使用 当计算机都不需要发送数据时, 令牌就在环形网上游荡, 而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧, 因此不会发生冲突 (因为令牌只有一个) 在令牌传递网络中, 传输介质的物理拓扑不必是一个环, 但是为了把对介质访问的许可从一个设备传递到另一个设备, 令牌在设备间的传递通路逻辑上必须是一个环 轮询介质访问控制非常适合负载很高的广播信道(指多个结点在同一时刻发送数据概率很大的信道), 可以想象, 如果这样的广播信道采用随机介质访问控制, 那么发生冲突的概率很大, 而采用轮询介质访问控制则可以很好地满足各结点间的通信需求 轮询介质访问控制既不共享时间, 也不共享空间, 它实际上是在随机介质访问控制的基础上, 限定了有权力发送数据的结点只能有一个 即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道, 所以说数据链路层研究的是点到点之间的通信 局域网 局域网的基本概念和体系结构 主要特点 为一个单位所拥有, 且地理范围和站点数目均有限所有站点共享较高的总带宽(即较高的数据传输速率)较低的时延和较低的误码率各站为平等关系而非主从关系能进行广播和组播 局域网的特性主要由三个要素决定, 拓扑结构, 传输介质, 介质访问控制方式, 其中最重要的是介质访问控制方式, 它决定着局域网的技术特性 常见的局域网拓扑结构主要有以下4大类 星形结构环形结构总线形结构星形和总线形结合的复合型结构 局域网可以使用双绞线, 铜缆, 光纤等多种传输介质, 其中双绞线为主流传输介质 局域网的介质访问控制方式主要有CSMA/CD, 令牌总线, 令牌环 前两种方法主要用于总线形局域网令牌环主要用于环形局域网 三种特殊的局域网拓扑实现如下 以太网 目前使用范围最广的局域网, 逻辑拓扑是总线形结构, 物理拓扑是星形或拓展星形结构 令牌环 (Token Ring, IEEE 802.5) 逻辑拓扑是环形结构, 物理拓扑是星形结构 FDDI (光纤分布数字接口, IEEE 802.8) 逻辑拓扑是环形结构, 物理拓扑是双环结构 IEEE802标准定义的局域网参考模型只对应于OSI参考模型的数据链路层和物理层, 并将数据链路层拆分为两个子层: 逻辑链路控制(LLC)子层和媒体接入控制(MAC)子层, 与接入传输媒体有关的内容都放在MAC子层, 它向上层屏蔽对物理层访问的各种差异, 提供对物理层的统一访问接口, 主要功能包括: 组帧和拆卸帧, 比特传输差错检测, 透明传输. LLC子层与传输媒体无关, 它向网络层提供无确认无连接, 面向连接, 带确认无连接, 高速传送共4种不同的连接服务类型 由于以太网在局域网市场中取得垄断地位, 几乎成为局域网的代名词, 而802委员会制定的LLC子层作用已经不大, 因此现在很多网卡仅装有MAC协议而没有LLC协议 以太网与IEEE802.3 该标准是一种基带总线形的局域网标准, 它描述物理层和数据链路层的MAC子层的实现方法 以太网逻辑上采用总线形拓扑结构, 以太网中所有计算机共享同一条总线, 信息以广播方式发送. 为了保证数据通信的方便性和可靠性, 以太网简化了通信流程并使用了CSMA/CD方式对总线进行访问控制 严格来说, 以太网应当是指符合DIX Ethernet V2标准的局域网, 但DIX Ethernet V2标准与IEEE 802.3标准只有很小的差别, 因此通常将802.3局域网简称为以太网 以太网采用两项措施以简化通信 采用无连接的工作方式, 不对发送的数据帧编号, 也不要求接收方发送确认, 即以太网尽最大努力交付数据, 提供的是不可靠服务, 对于差错的纠正则由高层完成发送的数据都使用曼彻斯特编码的信号, 每个码元的中间出现一次电压转换, 接收端利用这种电压转换方便地把位同步信号提取出来 以太网的传输介质与网卡 常用的传输介质有4种, 粗缆, 细缆, 双绞线, 光纤, 各种传输介质的适用情况如下 参数10 BASE 510 BASE 210 BASE-T10 BASE-FL传输媒体基带同轴电缆(粗缆)基带同轴电缆(细缆)非屏蔽双绞线光纤对(850nm)编码曼彻斯特编码曼彻斯特编码曼彻斯特编码曼彻斯特编码拓扑结构总线形总线形星形点对点最大段长500m185m100m2000m最多结点数目1003022 10 BASE-T 非屏蔽双绞线以太网拓扑结构为星形网, 星形网中心为集线器, 但使用集线器的以太网在逻辑上仍然是一个总线网, 属于一个冲突域 计算机与外界局域网的连接时通过网络接口板(网络适配器 Adapter)或(网络接口卡 Network Interface Card, NIC)实现的. 网卡上装有处理器, 存储器, 是工作在数据链路层的网络组件. 网卡和局域网的通信是通过电缆或双绞线以串行方式进行的, 而网卡和计算机的通信则是通过计算机主板上的I/O总线以并行方式进行的. 因此, 网卡的重要功能就是进行数据的串并转换. 网卡不仅实现与局域网传输介质之间的物理连接和电信号匹配还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码、数据缓存功能。 全世界的每块网卡在出厂时都有一个唯一的代码称为介质访问控制地址MAC这个地址用于控制主机在网络上的数据通信。数据链路层设备网桥交换机等都使用各个网卡的MAC地址。另外网卡控制着主机对介质的访问因此网卡也工作在物理层因为它只关注比特而不关注任何地址信息和高层协议信息。 以太网的MAC帧 每块网卡中的MAC地址也称为物理地址MAC地址长6字节一般用连字符或冒号分隔的12个十六进制数表示如02-60-8c-e4-b1-21。高24位为厂商代码低24位为厂商自行分配的网卡序列号严格来讲局域网的地址应是每个站的名字或标识符 由于总线上使用的是广播通信因此网卡从网络上每收到一个MAC帧首先要用硬件检查MAC帧中的MAC地址。如果是发往本站的帧那么就收下否则丢弃 以太网MAC帧格式有两种标准DIX Ethernet V2标准即以太网V2标准和IEEE 802.3标准 以太网V2标准 前导码 使接收端与发送端时钟同步。在帧前面插入的8字节可再分为两个字段 第一个字段共7字节是前同步码用来快速实现MAC帧的比特同步第二个字段是帧开始定界符表示后面的信息就是MAC帧 MAC帧并不需要帧结束符因为以太网在传送帧时各帧之间必须有一定的间隙。因此接收端只要找到帧开始定界符其后面连续到达的比特流就属于同一个MAC帧所以上图只有帧开始定界符但不要误以为以太网MAC帧不需要尾部在数据链路层上帧即要加首部也要加尾部 地址 通常使用6字节48bit地址MAC地址 类型 2字节指出数据域中携带的数据应交给哪个协议实体处理 数据 461500字节包含高层的协议消息。由于CSMA/CD算法的限制以太网帧必须满足最小长度要求64字节数据较少时必须加以填充046字节 46和1500是怎么来的首先由CSMA/CD算法可知以太网帧的最短帧长为64B而MAC帧的首部和尾部的长度为18字节所以数据字段最短为64 - 18 46字节。其次最大的1500字节是规定的没有为什么。 填充 0~46字节当帧长太短时填充帧使之达到64字节的最小长度 校验码FCS 4字节校验范围从目的地址段到数据段的末尾算法采用32位循环冗余码CRC不但需要校验MAC帧的数据部分还要检验目的地址、源地址、类型字段但不校验前导码802.3帧格式与DIX以太帧格式的不同之处在于用长度域替代了DIX帧中的类型域指出数据域的长度。在实践中前述长度/类型两种机制可以并存由于IEEE 802.3数据段的最大字节数是1500所以长度段的最大值是1500因此从1501到65535的值可用于类型段标识符 高速以太网 速率达到或超过100Mb/s的以太网称为高速以太网100BASE-T以太网 在双绞线上传送100Mb/s基带信号的星形拓扑结构以太网它使用CSMA/CD协议这种以太网支持全双工方式、半双工方式可在全双工方式下工作而无冲突发生 因此在全双工方式下不使用CSMA/CD协议 MAC帧格式仍然是802.3标准规定的。保持最短帧长不变但将一个网段的最大电缆长度减小到100m。帧间时间间隔从原来的9.6us改为现在的0.96us 吉比特以太网 千兆以太网 允许在1Gb/s下用全双工、半双工两种方式工作。使用802.3协议规定的帧格式。在半双工方式下使用CSMA/CD协议全双工方式不需要使用CSMA/CD协议。与10BASE-T和100BASE-T技术向后兼容 10吉比特以太网 与10Mb/s、100Mb/s、1Gb/s以太网的帧格式完全相同还保留了802.3标准规定的以太网最小和最大帧长便于升级。不再使用铜线而只使用光纤作为传输媒体只工作在全双工方式因此没有争用问题也不使用CSMA/CD协议 IEEE 802.11 有固定基础设施无线局域网 IEEE制定了无线局域网的802.11系列协议标准包括802.11 a/b/g/n 等。802.11使用星形拓扑其中心称为接入点Access PointAP在MAC层使用CSMA/CA协议使用802.11系列协议的局域网又称WIFI 802.11标准规定无线局域网的最小构件是基本服务集BSSBasic Service SetBSS一个基本服务集包括一个基站、若干移动站。所有的站在本BSS内都可以直接通信但在和本BSS外的站通信时都必须通过本BSS的基站。 AP就是基本服务集中的基站base station。安装AP时必须为该AP分配一个不超过32字节的服务集标识符Service Set IDentifierSSID和一个信道。一个基本服务集覆盖的地理范围称为一个基本服务区Basic Service AreaBSA无线局域网的基本服务区的直径一般不超过100m 一个基本服务集可以是孤立的也可通过AP连接到一个分配系统Distribution SystemDS然后连接到另一个基本服务集构成一个扩展的服务集Extended Service SetESSESS还可以通过一种Portal门桥的设备为无线用户提供到有线连接的以太网的接入。门桥的作用相当于一个网桥。 无固定基础设施移动自组织网络自组网络ad hoc network 没有基本服务集中的AP而是由一些平等状态的移动站相互通信组成的临时网络。各结点之间地位平等中间结点都为转发结点因此都具有路由器功能 自组网络通常这样组成 一些可移动设备发现在它们附近还有其他可移动设备并且要求和其他移动设备进行通信。自组网络中的每个移动站都要参与网络中其他移动站的路由的发现和维护同时由移动站构成的网络拓扑可能随时间变化得很快因此在固定网络中行之有效的一些路由选择协议对移动自组网络已不适用需引起特别关注 自组网络和移动IP并不相同 移动IP技术使漫游的主机可以用多种方法连接到因特网其核心网络功能仍然是基于固定网络中一直使用的各种路由选择协议自组网络是把移动性扩展到无线领域中的自治系统具有自己特定的路由选择协议并且可以不和因特网相连。 令牌环网的基本原理 令牌环网的每一站通过电缆与**环接口干线耦合器TCU**相连。TCU的主要作用是传递所有经过的帧为接入站发送和接收数据提供接口。与此对应TCU的状态也有两个收听状态、发送状态。数据总是在某个特定的方向上从一个TCU到下一个TCU逐比特地依次传送每个TCU重新产生并重新传输每一比特。 令牌环网地媒体接入控制机制采用的是分布式控制模式的循环方法。在令牌环网中有一个令牌Token沿着环形总线在入网结点计算机间依次传递令牌实际上是一个特殊格式的MAC控制帧它本身并不包含信息仅控制信道的使用确保在同一时刻只有一个结点能够独占信道 站点只有取得令牌后才能发送数据帧因此令牌环网不会发生碰撞。由于令牌在环网上是按顺序依次传递的因此对所有入网计算机而言访问权是公平的 令牌环网中令牌、数据的传递过程如下 网络空闲时环路中只有令牌帧在循环传递令牌传递到有数据要发送的站点时该站点就修改令牌中的一个标志位并在令牌中附加自己需要传输的数据将令牌变成一个数据帧然后将这个数据帧发送出去数据帧沿着环路传输接收到的站点一边转发数据一边查看帧的目的地址。如果目的地址和自己的地址相同那么接收站就复制该数据帧以便进一步处理数据帧沿着环路传输直到到达该帧的源站点源站点接收到自己发出去的数据帧后便不再进行转发。同时发送方可以通过检验返回的数据帧来查看数据传输过程中是否有错若有错则重传该帧源站点传送完数据后重新产生一个令牌并将令牌传递给下一个站点以交出对媒体的访问权限 令牌环网在物理上采用星形拓扑结构但逻辑上仍是环形拓扑结构其标准由IEEE 802.5定义 广域网 广域网的基本概念 指覆盖范围很广远超一个城市的范围的长距离网络。是因特网的核心部分其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路它可以长达几千千米的光缆线路也可以是几万千米的点对点卫星链路 因此广域网首要考虑通信容量必须足够大 不等于互联网互联网可以连接不同类型的网络局域网或广域网通常使用路由器来连接 由一些结点交换机及连接这些交换机的链路组成。结点交换机的功能是将分组存储并转发。结点之间都是点到点连接但为了提高网络的可靠性通常一个结点交换机往往与多个结点交换机相连。 结点交换机不是路由器它和路由器都用来转发分组他们的工作原理也类似。结点交换机在单个网络中转发分组而路由器在多个网络构成的互联网中转发分组 从层次上考虑广域网和局域网的区别很大因为局域网使用的协议主要在数据链路层还有少量在物理层而广域网使用的协议主要在网络层 如果网络中的两个结点要进行数据交换那么结点除要给出的数据外还要给数据包装上一层控制信息用于实现检错纠错等功能。如果这层控制信息是数据链路层协议的控制信息那么就称使用了数据链路层协议如果这层控制信息是网络层的控制信息那么就称使用了网络层协议 广域网和局域网的区别联系 广域网局域网覆盖范围很广通常跨区域较小通常在一个区域内连接方式结点之间都是点到点连接但为了提高网络的可靠性一个节点交换机往往与多个结点交换机相连普通采用多点接入技术OSI参考模型层次三层物理层数据链路层网络层两层物理层数据链路层联系与相似点1广域网和局域网都是互联网的重要组成构件从互联网角度上看二者平等不是包含关系2连接到一个广域网或一个局域网上的主机在该网内进行通信时只需要使用其网络的物理地址同左着重点强调资源共享强调数据传输 广域网中一个重要问题是路由选择和分组转发。路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由以便构造路由表然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的 PPP、HDLC协议是目前最常用的两种广域网数据链路层控制协议 PPP协议 Point-to-Point Protocol 使用串行线路通信的面向字节的协议该协议应用在直接连接两个结点的链路上设计的目的主要是用来通过拨号或专线方式建立点对点连接发送数据使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。 PPP协议是在SLIP协议的基础上发展而来的可以在异步线路、同步线路上使用不仅用于Modem链路也用于租用的路由器到路由器的线路 SLIP主要完成数据报的传送但没有寻址、数据校验、分组类型识别、数据压缩等功能只能传送IP分组。如果上层不是IP协议那么无法传输并且此协议对一些高层应用也不支持但实现比较简单。为了改进SLIP的缺点于是制定了点对点协议PPP PPP协议有三个组成部分 链路控制协议LCP 一种扩展链路控制协议用于建立、配置、测试和管理数据链路 网络控制协议NCP PPP协议允许同时采用多种网络层协议每个不同的网络层要用一个相应的NCP来配置为网络层协议建立和配置逻辑连接 一个将IP数据报封装到串行链路的方法 IP数据报在PPP帧中就是其信息部分这个信息部分的长度受**最大传送单元MTU**的限制 如下图PPP帧的前3个字段和最后2个字段与HDLC帧是一样的标志字段F仍为7E01111110前后各占1字节若它出现在信息字段中就必须做字节填充使用的控制转义字节是7D01111101。但在PPP中地址字段A占1字节规定为0xFF控制字段C占1字节规定为0x03两者的内容始终是固定不变的。PPP是面向字节的因而所有PPP帧的长度都是整数个字节 第4个字段是协议段占2字节在HDLC中没有该字段它是说明信息段中运载的是什么种类的分组。以比特0开始的是诸如IP、IPX、AppleTalk这样的网络层协议以比特1开始的被用来协商其他协议包括LCP及每个支持的网络层协议的一个不同的NCP 第5段信息段的长度是可变的大于等于0且小于等于1500B。为了实现透明传输当信息段中出现和标识字段一样的比特组合时必须采用一些措施来改进 因为PPP是点对点的并不是总线形所以无需采用CSMA/CD协议自然就没有最短帧所以信息段占01500字节而不是461500字节。另外当数据部分出现和标志位一样的比特组合时就需要采用一些措施来实现透明传输。 第6个字段是帧校验序列FCS占2字节即循环冗余码校验中的冗余码。校验区包括地址字段、控制字段、协议字段、信息字段 下图为PPP链路建立、使用、撤销所经历的状态图 当线路处于静止状态时不存在物理层连接 当线路检测到载波信号时建立物理连接线路变为建立状态 LCP开始选项商定商定成功后就进入身份验证状态 双发身份验证通过后进入网络状态。这时采用NCP配置网络层配置成功后进入打开状态然后就可进行数据传输。当数据传输完成后线路转为终止状态。载波停止后则回到静止状态 PPP提供差错检测但不提供纠错功能只保证无差错接收通过硬件进行CRC检验。它是不可靠的传输协议因此也不使用序号、确认机制它仅支持点对点的链路通信不支持多点线路PPP只支持全双工链路PPP的两端可以运行不同的网络层协议但仍然可以使用同一个PPP进行通信PPP是面向字节的当信息字段出现和标识字段一致的比特组合时PPP有两种不同的处理方法 若PPP用在异步线路默认则采用字节填充法若PPP用在SONET/SDH等同步线路则协议规定采用硬件来完成比特填充和HDLC的做法一样 HDLC协议 高级数据链路控制High-level Data Link ControlHDLC 是ISO制定的面向比特PPP协议面向字节的数据链路层协议。该协议不依赖于任何一种字符编码集 数据报文可透明传输用于实现透明传输的0比特插入法易于硬件实现 全双工通信有较高的数据链路传输效率 所有帧采用CRC检验对信息帧进行顺序编号可防止漏收或重发传输可靠性高 传输控制功能与处理功能分离具有较大的灵活性 适用于链路的两种基本配置 非平衡配置 由一个主站控制整个链路的工作 平衡配置 链路两端的两个站都是复合站每个复合站都可以平等地发起数据传输而不需要得到对方复合站的允许 站 主站 负责控制链路的操作主站发出的帧称为命令帧 从站 受控于主站按主站的命令进行操作发出的帧称为响应帧 复合站 同时拥有主站、从站功能可以发出命令帧、响应帧 数据操作方式 正常响应方式 非平衡结构操作方式即主站向从站传输数据从站响应传输但从站只有在收到主站的许可后才可进行响应 异步平衡方式 平衡结构操作方式每个复合站都可以进行对另一站的数据传输 异步响应方式 非平衡结构操作方式从站即使未受到主站的允许也可进行传输 HDLC帧 帧格式如下所示由**标志、地址、控制、信息、帧校验序列FCS**等字段构成 标志字段F为01111110 在接收端只要找到标志字段就可确定一个帧的位置。HDLC协议采用比特填充的首尾标志法实现透明传输在发送端当一串比特流数据中有5个连续的1时就立即在其后填入一个0接收帧时先找到F字段以确定帧的边界接着对比特流进行扫描每当发现5个连续的1时就将其后的一个0删除以还原成原来的比特流 地址字段A共8位 使用非平衡方式传送数据时站地址字段总是写入从站的地址使用平衡方式传送数据时站地址字段填入的是应答站的地址 控制字段C共8位 最复杂的字段HDLC的许多重要功能都靠控制字段来实现根据其第1位或第1、2位的取值可将HDLC帧划分三类 信息帧I 第1位为0用来传输数据信息或使用捎带技术对数据进行确认 监督帧S 第1、2位分别为1、0用于流量控制和差错控制执行对信息帧的确认、请求重发和请求暂停发送等功能 无编号帧U 第1、2位均为1用于提供对链路的建立、拆除等多种控制功能 PPP帧和HDLC帧的格式很相似区别如下 PPP协议面向字节HDLC协议面向比特PPP帧比HDLC帧多一个2字节的协议字段。当协议字段值为0x0021时表示信息字段是IP数据报PPP协议不使用序号和确认机制只保证无差错接收通过硬件进行CRC检验而端到端差错检测由高层协议负责。HDLC协议的信息帧使用了编号和确认机制能够提供可靠传输 数据链路层设备 网桥的概念及其基本原理 两个或多个以太网通过网桥连接后就成为一个覆盖范围更大的以太网而原来的每个以太网就称为一个网段。网桥工作在链路层的MAC子层可以使以太网各网段成为隔离开的碰撞域。如果把网桥换成工作在物理层的转发器那么就没有这种过滤通信量的功能。由于各网段相对独立因此一个网段的故障不会影响到另一个网段的运行 网桥处理数据的对象是帧所以它是工作在数据链路层的设备中继器、放大器处理数据的对象是信号所以它是工作在物理层的设备 如下图设每个网段的数据率都是10Mb/s那么三个网段合起来的最大吞吐量就变成30Mb/s。如果把两个网桥换成集线器或转发器那么整个网络仍然是一个碰撞域即冲突域当A和B通信时所有其他站点都不能通信整个碰撞域的最大吞吐量仍然是10Mb/s 网桥的优点 能过滤通信量扩大了物理范围可使用不同的物理层可互联不同类型的局域网提高了可靠性性能得到改善 网桥的缺点 增大了时延MAC子层没有流量控制功能流量控制需要用到编号机制编号机制的实现在LLC子层不同MAC子层的网段桥接在一起时需要进行帧格式的转换网桥只适合于用户数不多和通信量不大的局域网否则有时还会因传播过多的广播信息而产生网络拥塞即广播风暴 网桥必须具有路径选择的功能接收到帧后要决定正确的路径将该帧转送到相应的目的局域网站点。根据路径选择算法的不同可将网桥分为透明网桥和源路由网桥 透明网桥选择的不是最佳路由 以混杂方式工作接收与之连接的所有LAN传送的每一帧。到达帧的路由选择过程取决于源LAN和目的LAN 如果源LAN和目的LAN相同那么丢弃该帧如果源LAN和目的LAN不同那么转发该帧如果目的LAN未知那么扩散该帧 当网桥刚连接到以太网时其转发表是空的网桥按照自学习算法处理收到的帧。该算法的基本思想是 若从站A发出的帧从某端口进入网桥那么从这个端口出发沿相反方向一定可把一个帧传送到站A所以网桥每收到一个帧就记下其源地址和进入网桥的端口作为转发表中的一个项目源地址、进入的接口、时间建立转发表时把帧首部中的源地址写在地址一栏下面转发帧时根据收到的帧首部中的目的地址来转发 这时就把在地址栏下面已经记下的源地址当作目的地址而把记下的进入端口当作转发端口 网桥就是在这样的转发过程中逐渐将其转发表建立起来 为了避免转发的帧在网络中不断地兜圈子透明网桥使用了一种生成树算法五环以确保每个源到每个目的地只有唯一的路径。生成树使得整个扩展局域网在逻辑上形成树形结构所以工作时逻辑上没有环路但生成树一般不是最佳路由 源路由网桥 选择的是最佳路由 在源路由网桥中路由选择由发送数据帧的源站负责网桥只根据数据真正的路由信息对帧进行接收和转发源路由网桥对主机是不透明的主机必须直到网桥的标识及连接到哪个网段上。路由选择由发送帧的源站负责 为了找到最佳的路由源站以广播方式向目的站发送一个**发现帧Discovery Frame**作为探测之用源路由的生成过程是 在未知路径前源站要先发送一个发现帧途中的每个网桥都转发此帧最终该发现帧可能从多个途径到达目的站目的站也将一一发送应答帧每个应答帧将通过原路径返回途径的网桥把自己的标志记录在应答帧中源站选出一个最佳路由 以后凡是从这个源站向该目的站发送的帧的首部都必须携带这一路由信息 发送帧还可以帮助源站确定整个网络可以通过的帧的最大长度由于发现帧的数量指数式增加可能会使网络严重拥塞 两种网桥的比较 使用源路由网桥可以利用最佳路由。若在两个以太网之间使用并联的源路由网桥则还可使通信量较平均地分配给每个网桥 采用透明网桥时只能使用生成树而使用生成树一般并不能保证所用的路由是最佳的也不能在不同的链路中进行负载均衡 透明网桥和源路由网桥中提到的最佳路由并不是经过路由器最少的路由而可以是发送帧往返时间最短的路由这样才能真正地进行负载平衡因为往返时间长说明中间某个路由器可能超载了所以不走这条路换个往返时间短的路走 局域网交换机及其工作原理 局域网交换机 桥接器的主要限制是在任一时刻通常只能执行一个帧的转发操作于是出现了局域网交换机又称以太网交换机。从本质上说以太网交换机是一个多端口的网桥它工作在数据链路层。交换机能经济地将网络分成小的冲突域为每个工作站提供更高的带宽以太网交换机对工作站是透明的因此管理开销低廉简化了网络结点的增加、移动和网络变化的操作利用以太网交换机还可以方便地实现虚拟局域网Virtual LANVLANVLAN可以隔离冲突域广播域 原理 它检测从以太端口来的数据帧的源和目的地的MAC介质访问层地址然后与系统内部的动态查找表进行比较若数据帧的MAC地址不在查找表中则将该地址加入查找表并将数据帧发送给相应的目的端口 特点 每个端口都直接与单台主机相连普通网桥的端口往往连接到以太网的一个网段并且一般都工作在全双工方式能同时连通许多对端口使每对相互通信的主机都能像独占通信媒体那样无碰撞地传输数据也是一种即插即用设备和透明网桥一样其内部的帧的转发表也是通过自学习算法自动地逐渐建立起来的由于使用了专用的交换结构芯片因此交换速率较高独占传输媒体的带宽 两种交换模式 直通式 只检查帧的目的地址这使得帧在接收后几乎能马上被传出去优点是速度快缺点是缺乏智能性和安全性也无法支持具有不同速率的端口的交换 存储转发式 先将接收到的帧缓存到高速缓存器中并检查数据是否正确确认无误后通过查找表转换成输出端口将该帧发送出去。如果发现帧有错那么就将其丢弃。优点是可靠性高并能支持不同速率端口间的转换缺点是延迟较大 总结 冗余编码 所用符号数或信号码元数比表示信息所必需的数目多的代码应用了冗余加密技术即利用了纠错码的编码原理 信道的效率 也称信道利用率从时间角度定义信道效率是对发送方而言的指发送方在一个发送周期的时间内有效地发送数据所需要的时间占整个发送周期的比率 发送方从开始发送数据到收到第一个确认帧为止称为一个发送周期设为T发送方在这个周期内共发送L比特的数据发送方的数据传输速率为C则发送方用于发送有效数据的时间为L/C在这种情况下信道的利用率为**(L/C)/T**。 简单理解信道利用率就是实际发送的数据速度跟信道速度之比。但是实际发送的数据速度是**发送的数据量不包括确认帧对整个发送周期包括发送和接收确认帧**的比值。 信道吞吐率 信道利用率 * 发送方的发送效率 由其注意题目中说的忽略确认帧的传输时延传输时延和传播时延有所区别传输时延也叫发送时延跟传播时延不同。 连续ARQ后退N帧 ARQ选择性重传ARQ协议中接收方一般采用累计确认的方式即接收方对按序到达的最后一个分组发送确认。 规格化内积 向量的内积结果再除以向量的维数 网络层 网络层的功能 异构网络互联 指将两个以上的计算机网络通过一定的方法用一种或多种通信处理设备即中间设备相互连接起来以构成更大的网络系统。中间设备又称为中间系统或中继系统。根据所在的层次中继系统分为以下4种 物理层中继系统 中继器集线器Hub 数据链路层中继系统 网桥或交换机 网络层中继系统 路由器 网络层以上的中继系统 网关 使用物理层或数据链路层的中继系统时只是把一个网络扩大了而从网络层的角度看它仍然是同一个网络一般并不称为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择。路由器是一台专用计算机用于在互联网中进行路由选择 由于历史原因许多有关TCP/IP的文献也把网络层的路由器称为网关 TCP/IP体系在网络互联上采用的做法是在**网络层即IP层**采用标准化协议但相互连接的网络可以是异构的。下图a表示用许多计算机网络通过一些路由器进行互联。由于参加互联的计算机网络都使用相同的网际协议Internet ProtocolIP因此可以把互联后的计算机网络视为图b的一个虚拟IP网络 虚拟互联网络即逻辑互联网络即互联起来的各种物理网络的异构性本来是客观存在的但是通过IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP的虚拟互联网络简称IP网络 使用虚拟互联网络的好处是当互联网上的主机进行通信时就好像在一个网络上通信一样而看不见互联网的具体的网络异构细节 如具体的编址方案、路由选择协议等 路由与转发 路由器主要完成两个功能路由选择确定哪一条路径和分组转发当一个分组到达时所采取的动作。前者是根据特定的路由选择协议构造出路由表同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流关键操作是转发表查询、转发及相关的队列管理和任务调度等 路由选择 按照复杂的分布式算法根据从各相邻路由器所得到的关于整个网络拓扑的变化情况动态地改变所选择的路由 分组转发 指路由器根据转发表将用户的IP数据报从合适的端口转发出去。 路由表是根据路由选择算法得出的转发表是从路由表得出的。转发表的结构应当使查找过程最优化路由表则需要对网络拓扑变化的计算最优化。 在讨论路由选择的原理时往往不去区分转发表和路由表而是笼统地使用路由表一词 拥塞控制 在通信子网中因出现过量的分组而引起网络性能下降的现象称为拥塞 如下图当分组到达路由器的速率接近于R时平均时延急剧增加并且会有大量的分组被丢弃路由器端口的缓冲区是有限的整个网络的吞吐量会骤降源与目的地之间的平均时延也会变得近乎无穷大 判断网络是否进入拥塞状态的方法是 观察网络的吞吐量与网络负载的关系 如果随着网络负载的增加网络的吞吐量明显小于正常的吞吐量那么网络就可能已进入轻度拥塞状态如果网络的吞吐量随着网络负载的增大而下降那么网络就可能已进入拥塞状态如果网络的负载继续增大而网络的吞吐量下降到零那么网络就可能已进入死锁状态 为避免拥塞现象的出现要采用能防止拥塞的一系列方法对子网进行拥塞控制。拥塞控制主要解决的问题是如何获取网络中发生拥塞的信息从而利用这些信息进行控制以避免由于拥塞而出现分组丢失以及严重拥塞而产生网络死锁的现象 拥塞控制的作用是确保子网能够承载所达到的流量这是一个全局性的过程 主机、路由器、路由器内部的转发处理等单一地增加资源并不能解决拥塞 流量控制VS拥塞控制 流量控制往往是指在发送端和接收端之间的点对点通信量的控制流量控制所要做的是抑制发送端发送数据的速率以便使接收端来得及接收拥塞控制必须确保通信子网络能够传送待传送的数据是一个全局性的问题涉及网络中所有的主机、路由器、网络传输能力下降的所有因素 拥塞控制的方法 开环控制 设计网络时事先将有关发生拥塞的因素考虑周到力求网络在工作时不产生拥塞这是一种静态的预防方法一旦整个系统启动运行中途就不再需要修改开环控制手段如下 确定何时可接收新流量确定何时可丢弃分组及丢弃哪些分组确定何种调度策略这些手段的共性是在做决定时不考虑当前网络状态 闭环控制 事先不考虑有关发生拥塞的各种因素采用检测网络系统去监视及时检测哪里发生了拥塞然后将拥塞信息传到合适的地方以便调整网络系统的运行并解决出现的问题闭环控制是基于反馈环路的概念是一种动态的方法 路由算法 静态路由与动态路由 路由器转发分组是通过路由表转发的而路由表是通过各种算法得到的从能否随网络的通信量或拓扑自适应地进行调整变化来划分 静态路由算法非自适应路由算法 由网络管理员手工配置的路由信息当网络的拓扑结构或链路的状态发生变化时网络管理员需要手工去修改路由表中相关的静态路由信息不能及时适应网络状态的变化对于简单的小型网络可以采用静态路由 动态路由算法自适应路由算法 路由器上的路由表项是通过相互连接的路由器之间彼此交换信息然后按照一定的算法优化出来的而这些路由信息会在一定时间间隙里不断更新以适应不断变化的网络随时获得最优的寻路效果 静态路由算法的特点是简便、开销较小在拓扑变化不大的小网络中运行效果很好动态路由算法能改善网络的性能并有助于流量控制但算法复杂会增加网络负担有时因对动态变化的反应太快而引起振荡或反应太慢而影响网络路由的一致性 距离-向量路由算法链路状态路由算法 距离-向量路由算法 所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点这种路由表包含 每条路径的目的地 另一结点 路径的代价 距离 这里的距离是一个抽象概念如RIP将距离定义为跳数跳数指从源端口到达目的端口所经过的路由器个数每经过一个路由器跳数加1 这种算法中所有结点都必须参与距离向量交换以保证路由的有效性和一致性也就是说所有的结点都监听从其他结点传来的路由选择更新信息并在下列情况下更新它们的路由选择表 被通告一条新的路由该路由在本结点的路由表中不存在此时本地系统加入这条新的路由发来的路由信息中有一条到达某个目的地的路由该路由与当前使用的路由相比有较短的距离较小的代价。此种情况下就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由 距离-向量路由算法的实质是迭代计算一条路由中的站段数或延迟时间从而得到到达一个目标的最短最小代价通路。 它要求每个结点在每次更新时都将它的全部路由表发送给所有相邻的结点显然更新报文的大小与通信子网的结点个数成正比大的通信子网将导致很大的更新报文由于更新报文发给直接邻接的结点所以所有结点都将参加路由选择信息交换基于这些原因在通信子网上传送的路由选择信息的数量很容易变得非常大 最常见的距离-向量路由算法是RIP算法它采用跳数作为距离的度量 链路状态路由算法 要求每个参与该算法的结点都具有完全的网络拓扑信息它们执行以下两项任务 主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点它们连接到同一条链路或者连接到同一广播型物理网络定期地将链路状态传播给所有其他结点或称路由结点典型的链路状态算法是OSPF算法 在一个链路状态路由选择中一个结点检查所有直接链路的状态并将所得的状态信息发送给网上的所有其他结点而不是仅送给那些直接相连的结点。每个结点都用这种方式从网上所有其他的结点接收包含直接链路状态的路由选择信息 每当链路状态报文到达时路由结点便使用这些状态信息去更新自己的网络拓扑和状态视野图一旦链路状态发生变化结点就对更新的网络图利用Dijkstra最短路径算法重新计算路由从单一的源出发计算到达所有目的结点的最短路径 链路状态路由算法主要有三个特征 向本自治系统中的所有路由器发送信息这里使用的方法是泛洪法即路由器通过所有端口向所有相邻的路由器发送信息。而每个相邻路由器又将此信息发往其所有相邻路由器 不再发送给刚刚发来信息的那个路由器 发送的信息是与路由器相邻的所有路由器的链路状态但这只是路由器所知道的部分信息。所谓链路状态是指说明本路由器与哪些路由器相邻及该链路的度量。对于OSPF算法链路状态的度量主要用来表示费用、距离、时延、带宽等 只有当链路状态发生变化时路由器才向所有路由器发送此信息 由于一个路由器的链路状态只涉及相邻路由器的连通状态而与整个互联网的规模并无直接关系因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境 链路状态路由算法的主要优点是 每个路由结点都使用同样的原始状态数据独立地计算路径而不依赖中间结点的计算链路状态报文不加改变地传播因此采用该算法易于查找故障当一个结点从所有其他结点接收到报文时它可以在本地立即算计正确的通路保证一步汇聚最后由于链路状态报文仅运载来自单个结点关于直接链路的信息其大小与网络中的路由结点数目无关因此链路状态算法比距离-向量算法有更好的规模可伸展性 距离-向量路由算法VS链路状态路由算法 距离-向量路由算法中每个结点仅与它的直接邻居交谈它为它的邻居提供从自己到网络中所有其他结点的最低费用估计链路状态路由算法中每个结点通过广播的方式与其他结点交谈但它仅告诉它们与它直接相连的链路的费用相较之下距离-向量路由算法有可能遇到路由环路等问题 层次路由 当网络规模扩大时路由器的路由表成比例的增大。这不仅会消耗越来越多的路由器缓冲区空间而且需要用更多的CPU时间来扫描路由表用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行因特网将整个互联网划分为许多较小的自治系统一个自治系统包含很多局域网每个自治系统有权自主地决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。因此因特网把路由选择协议划分两大类 一个自治系统内部所使用的路由选择协议称为内部网关协议IGP也称域内路由选择具体的协议有RIP、OSPF等自治系统之间所使用的路由选择协议称为外部网关协议EGP也称域间路由选择用在不同自治系统的路由器之间交换路由信息并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP 使用层次路由时OSPF将一个自治系统再划分为若干区域Area)每个路由器都知道在本区域内如何把分组路由到目的地的细节但不用知道其他区域的内部结构采用分层次划分区域的方法虽然会使交换信息的种类增多但也会使OSPF协议更加复杂但这样做却能使每个区域内部交换路由信息的通信量大大减小因而使OSPF协议能够用于规模很大的自治系统中 IPv4 IPv4分组 IPv4即现在普遍使用的IP版本4。IP定义数据传送的基本单元——IP分组及其确切的数据格式。IP也包括一套规则指明分组如何处理、错误怎样控制。特别是IP还包含非可靠投递的思想以及与此关联的分组路由选择的思想。 IPv4分组的格式 一个IP分组由首部和数据部分组成。首部前一部分的长度固定共20B是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段其长度可变用来提供错误检测及安全等机制 IP数据包的格式如下 IP首部的部分重要字段含义如下 版本 IP的版本目前广泛使用的是4 首部长度 占4位可以表示的最大十进制数是15以32位为单位最大值为60B15*4B。最常用的首部长度是20B此时不使用任何选项即可选字段 总长度 占16位指首部和数据之和的长度单位为字节因此数据报的最大长度为** 216 − 1 65535 B 2{16}-165535B 216−165535B**以太网帧的最大传送单元MTU为1500B因此当一个IP数据报封装成帧时数据报的总长度首部加数据一定不能超过下面的数据链路层的MTU值 标识 占16位是一个计数器每产生一个数据报就加1并赋值给标识字段不是序号因为IP是无连接服务当一个数据报的长度超过网络的MTU时必须分片此时每个数据报片都复制一次标识号以便能正确重装成原来的数据报 标志 占3位标志字段的最低位为MFMF1表示后面还有分片MF0表示最后一个分片。标志字段中间的一位是DF只有当DF0时才允许分片 片偏移 占13位它指出较长的分组在分片后某片在原分组中的相对位置片偏移以8个字节为偏移单位即每个分片的长度一定是**8B64位**的整数倍 生存时间TTL 占8位数据报在网络中可通过的路由器数的最大值标识分组在网络中的寿命以确保分组不会永远在网络中循环路由器在转发分组前先把TTL减少1若TTL被减为0则该分组必须丢弃 协议 占8位指出此分组携带的数据使用何种协议即分组的数据部分应交给哪个传输层协议 如TCP、UDP等值为6表示TCP为17表示UDP 首部校验和 占16位IP数据报的首部校验和只校验分组的首部而不校验数据部分 源地址字段 占4B标识发送方的IP地址 目的地址字段 占4B标识接收方的IP地址 在IP数据报首部中有三个关于长度的标记 首部长度基本单位为4B总长度基本单位为1B片偏移基本单位为8B IP数据报分片 一个数据链路层数据报能承载的最大数据量称为最大传送单元MTU。因为IP数据报被封装在数据链路层数据报中因此数据链路层的MTU严格地限制着IP数据报的长度而且在IP数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议有不同的MTU 当IP数据报的总长度大于链路MTU时就需要将IP数据报中的数据分装在两个或多个较小的IP数据报中这些较小的数据报称为片 片在目的地的网络层被重新组装。目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组 创建一个IP数据报时源主机为该数据报加上一个标识号 当一个路由器需要将一个数据报分片时形成的每个数据报即片都具有原始数据报的标识号当目的主机收到来自同一发送主机的一批数据报时它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片 IP首部中的标志位有3比特但只有后2比特有意义分别是MF位More Fragment和DF位Don’t Fragment 只有当DF0时该IP数据报才可以被分片MF则用来告知目的主机该IP数据报是否为原始数据报的最后一个片 当MF1时表示相应的原始数据报还有后续的片当MF0时表示该数据报是相应原始数据报的最后一个片 目的主机在对片进行重组时使用片偏移字段来确定片应放在原始IP数据报的哪个位置 IP分片涉及一定的计算 一个长4000B的IP数据报首部20B数据部分3980B到达一个路由器需要转发到一条MTU为1500B的链路上。这意味着原始数据报中的3980B数据必须被分配到3个独立的片中每片也是一个IP数据报。假定原始数据报的标识号为777那么分成的3片如下图 可以看出由于偏移值的单位是8B所以除了最后一个片外其他的所有片中的有效数据载荷都是8的倍数 网络层转发分组的流程 网络层的路由器执行的分组转发算法如下 从数据报的首部提取目的主机的IP地址D得出目的网络地址N若网络N与此路由器直接相连则把数据报直接交付给目的主机D这称为路由器的直接交付否则是间接交付执行步骤3若路由表中有目的地址为D的特定主机路由对特定的目的主机指明一个特定的路由通常是为了控制或测试网络或出于安全考虑才采用的则把数据报传送给路由表中所指明的下一跳路由器否则执行步骤4若路由表中有到达网络N的路由则把数据报传送给路由表指明的下一跳路由器否则执行步骤5若路由表中有一个默认路由则把数据报传送给路由表中所指明的默认路由器否则执行步骤6报告转发分组出错 得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报而是将该IP地址转换成MAC地址通过ARP将其放到MAC帧首部中然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时MAC帧中的源地址和目的地址要发送变化但是网桥在转发帧时不改变帧的源地址请注意区分 IPv4地址与NAT IPv4地址 连接到因特网上的每台主机或路由器都分配一个32比特的全球唯一标识符即IP地址。传统的IP地址是分类的地址分为A、B、C、D、E五类 无论哪类IP地址都由网络号和主机号两部分组成。即IP地址::{网络号, 主机号}。其中网络号标志主机或路由器所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机或路由器。一台主机号在它前面的网络号所指明的网络范围必须是唯一的。由此可见一个IP地址在整个因特网范围内是唯一的。 分类的IP地址如下 在各类IP地址中有些IP地址具有特殊用途不用做主机的IP地址 主机号全为0表示本网络本身如 202.98.174.0主机号全为1表示本网络的广播地址又称直接广播地址如 202.98.174.255127.0.0.0保留为**环回自检Loopback Test**地址此地址表示任意主机本身目的地址为环回地址的IP数据报永远不会出现在任何网络上32位全为0即0.0.0.0表示本网络上的本主机32位全为1即255.255.255.255表示整个TCP/IP网络的广播地址又称受限广播地址。实际使用时由于路由器对广播域的隔离255.255.255.255等效为本网络的广播地址 常用的三种类别IP地址的使用范围如下 网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号每个网络中的最大主机数A2^7 - 211262^24 - 2B2^14 - 2128.1191.2552^16 - 2C2^21 - 1192.0.1223.255.2552^8 - 2 A类地址可用的网络数减2的原因 网络号字段全为0的IP地址是保留地址意思是本网络网络号为127的IP地址是环回自检地址 B类地址可用的网络数减1的原因 128.0这个网络号是不可指派的 C类地址可用的网络数减1的原因 网络号为192.0.0的网络是不可指派的 IP地址有以下重要特点 每个IP地址都由网络号和主机号两部分组成因此IP地址是一种分等级的地址结构 分等级的好处是 IP地址管理机构在分配IP地址时只分配了网络号第一级而主机号第二级则由得到该网络的单位自行分配方便了IP地址的管理路由器仅根据目的主机所连接的网络号来转发分组而不考虑目标主机号从而减少了路由表所占的存储空间 IP地址是标志一台主机或路由器和一条链路的接口。当一台主机同时连接到两个网络时该主机就必须同时具有两个相应的IP地址每个IP地址的网络号必须与所在网络的网络号相同且这两个IP地址的网络号是不同的。因此IP网络上的一个路由器必然至少应具有两个IP地址路由器每个端口必须至少分配一个IP地址用转发器或桥接器网桥等连接的若干LAN仍然是同一个网络同一个广播域因此该LAN中所有主机的IP地址的网络号必须相同但主机号必须不同在IP地址中所有分配到网络号的网络无论是LAN还是WAN都是平等的在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个或两个以上的IP地址路由器的每个端口都有一个不同网络号的IP地址 网络地址转换NAT 指通过将专用网络地址如Intranet转换为公用地址如Internet从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通由于专用网本地IP地址是可重用的所以NAT大大节省了IP地址的消耗。同时它隐藏了内部网络结构从而降低了内部网络受到攻击的风险。 此外为了网络安全划出了部分IP地址为私有IP地址。私有IP地址只用于LAN不用于WAN连接因此私有IP地址不能直接用于Internet必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet并且允许私有IP地址被LAN重复使用。这有效地解决了IP地址不足的问题。 私有IP地址网段如下 A类1个A类网段即 10.0.0.0 ~ 10.255.255.255B类16个B类网段即172.16.0.0 ~ 172.31.255.255C类256个C类网段即192.168.0 ~ 192.168.255.255 在因特网中的所有路由器对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址 使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时NAT路由器使用NAT转换表将本地地址转换成全球地址或将全球地址转换成本地地址。NAT转换表中存放着**{本地IP地址端口}到{全球IP地址端口}的映射。通过{IP地址端口}这样的映射方式可让多个私有IP地址映射到同一个全球IP地址** 普通路由器在转发IP数据报时不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时一定要更换其IP地址转换源IP地址或目的IP地址。普通路由器仅工作在网络层而NAT路由器转发数据报时需要查看和转换传输层的端口号 子网划分与子网掩码、CIDR 子网划分 两级IP地址的缺点 IP地址空间的利用率有时很低给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏两级的IP地址不够灵活 1985年起IP地址中增加一个子网号字段使两级IP地址变成了三级IP地址。这种做法称为子网划分。子网划分已经成为因特网的正式标准协议 子网划分的基本思路如下 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络从主机号借用若干比特作为子网号当然主机号也就相应减少了相同的比特。三级IP地址的结构如下 IP地址{网络号, 子网号, 主机号} 凡是从其他网络发送给本单位某台主机的IP数据报仍然是根据IP数据报的目的网络号先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机 划分子网只是把IP地址的主机号这部分进行再划分而不改变IP地址原来的网络号。因此从一个IP地址本身或IP数据报的首部无法判断源主机或目的主机所连接的网络是否进行了子网划分RFC 950规定对分类的IPv4地址进行子网划分时子网号不能全为1或全为0。但随着CIDR的广泛使用现在全1和全0的子网号也可使用但一定要谨慎使用要弄清你的路由器所用的路由选择软件是否支持全1或全0的子网号不论是分类的IPv4地址还是CIDR其子网中的主机号为全0或全1的地址都不能被指派。子网中主机号全0的地址为子网的网络号主机号全1的地址为子网的广播地址 子网掩码 为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分使用子网掩码来表达对原网络中主机号的借位子网掩码是一个与IP地址相对应的、长32bit的二进制串它由一串1和跟随的一串0组成。其中1对应于IP地址中的网络号及子网号而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位与就可得出相应子网的网络地址现在的因特网标准规定所有的网络都必须使用子网掩码如果一个网络未划分子网那么就采用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0由于子网掩码是一个网络或一个子网的重要属性所以路由器在相互之间交换路由信息时必须把自己所在网络或子网的子网掩码告诉对方。路由表中的每个条目除要给出目的网络地址和下一跳地址外还要同时给出该目的网络的子网掩码使用子网掩码的情况下 一台主机在设置IP地址信息的同时必须设置子网掩码同属于一个子网的所有主机及路由器的相应端口必须设置相同的子网掩码路由器的路由表中所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址 使用子网掩码时路由器的分组转发算法如下 从收到的分组的首部提取目的IP地址记为D先判断是否为直接交付。对路由器直接相连的网络逐个进行检查 用各网络的子网掩码和D逐位相与看结果是否和相应的网络地址匹配若匹配则将分组直接交付否则间接交付执行步骤3 若路由表中有目的地址为D的特定主机路由则将分组传送给路由表中所指明的下一跳路由器否则执行4对路由器中的每一行目的网络地址、子网掩码、下一跳地址中的子网掩码和D逐位相与其结果为N。若N与该行的目的网络地址匹配则将分组传送给该行指明的下一跳路由器否则执行步骤5若路由表中有一个默认路由则将分组传送给路由表中所指明的默认路由器否则执行步骤6报告转发分组出错 无分类域间路由选择CIDR 是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分并且可以在软件的支持下实现超网构造的一种IP地址的划分方法CIDR的主要特点如下 消除了传统A、B、C类地址及划分子网的概念因而可以更有效地分配IPv4的地址空间CIDR使用网络前缀的概念代替了子网络的概念 因此IP地址的无分类两级编址为IP::{网络前缀, 主机号} CIDR使用斜线记法或称CIDR记法即IP地址/网络前缀所占比特数 网络前缀所占比特数对应于网络号的部分等效于子网掩码中连续1的部分 CIDR虽然不使用子网但仍然使用掩码一词 CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的组织仍可以在本组织内根据需要划分出一些子网 某组织分配到地址块/20就可以再继续划分为8个子网从主机号中借用3位来划分子网这时候每个子网的网络前缀就变成了23位。全0和全1的主机号地址一般不用 将网络前缀都相同的连续IP地址组成CIDR地址块。一个CIDR地址块可以表示很多地址这种地址的聚合称为路由聚合或称构成超网。路由聚合使得路由表的一个项目可以表示多个原来传统分类地址的路由有利于减少路由器之间的路由选择信息的交换从而提高网络性能 CIDR地址块中的地址数一定是2的整数次幂实际可指派的地址数通常为** 2 N − 2 2^N-2 2N−2N表示主机号的位数**主机号全0代表网络号主机号全1为广播地址。网络前缀越短其地址块所包含的地址数就越多。而在三级结构的IP地址中划分子网使网络前缀变长CIDR的优点在于网络前缀长度的灵活性。由于上层网络的前缀长度较短因此相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网最长前缀匹配最佳匹配 使用CIDR时路由表中的每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。此时应当从匹配结果中选择具有最长网络前缀的路由因为网络前缀越长其地址块就越小因而路由就越具体 CIDR查找路由表的方法 为了更加有效地查找最长前缀匹配通常将无分类编址的路由表存在放一种层次式数据结构中然后自上而下地按层次进行查找。 这里最常用的数据结构就是二叉线索 ARP、DHCP、ICMP IP地址与硬件地址 IP地址是网络层使用的地址它是分层次等级的。 硬件地址是数据链路层使用的地址它是平面式的 在网络层及网络层之上使用IP地址IP地址放在IP数据报的首部而MAC地址放在MAC帧的首部。通过数据封装把IP数据报分组封装为MAC帧后数据链路层看不见数据报分组中的IP地址 由于路由器的隔离IP网络中无法通过广播方式依靠MAC地址来完成跨网络的寻址因此在IP网络的网络层只使用IP地址来完成寻址。 寻址时每个路由器依据其路由表依靠静态路由或动态路由协议生成选择到目标网络即主机号全为0的网络地址需要转发到的下一跳路由器的物理端口号或下一网络地址而IP分组通过多次路由转发到达目标网络后改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址这样可以提高路由选择的效率。 在IP层抽象的互联网上只能看到IP数据报虽然在IP数据报首部中有完整的源IP地址和目的IP地址但路由器只根据目的IP地址的网络号进行路由选择在局域网的数据链路层只能看见MAC帧。而通过路由器转发IP分组时此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时其数据链路层封装所使用的MAC地址是不断改变的。这也决定了无法使用MAC地址跨网络通信。尽管互联在一起的网络的硬件地址体系各不相同但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信 路由器由于互联多个网络因此它不仅有多个IP地址也有多个硬件地址 地址解析协议ARP 无论网络层使用什么协议在实际网络的链路上传送数据帧时最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射这就是地址解析协议Address Resolution Protocol, ARP。每台主机都设有一个ARP高速缓存用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表称ARP表。使用ARP来动态维护此ARP表。 ARP工作在网络层其工作原理如下 主机A欲向本局域网上的某台主机B发送IP数据报时先在其ARP高速缓存中查看有无主机B的IP地址 有就可查出其对应的硬件地址再将此硬件地址写入MAC帧然后通过局域网将该MAC帧发往此硬件地址没有就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组使同一个局域网里的所有主机收到ARP请求 主机B收到该ARP请求后向主机A发出响应ARP分组分组中包含主机B的IP与MAC地址的映射关系主机A在收到后将此映射写入ARP缓存然后按查询到的硬件地址发送MAC帧ARP由于看到了IP地址所以它工作在网络层而NAT路由器由于看到了端口所以它工作在传输层。对于某个协议工作在哪个层次读者应该能通过协议的工作原理进行猜测 ARP用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址然后把分组发送给这个路由器让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做尽管ARP请求分组是广播发送的但ARP相应分组是普通的单播即从一个源地址发送到一个目的地址 ARP的4种典型情况如下 发送方是主机时要把IP数据报发送到本网络上的另一台主机。这时用ARP找到目的主机的硬件地址发送方是主机时要把IP数据报发送到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址剩下的工作由这个路由器来完成发送方是路由器时要把IP数据报转发到本网络上的一台主机。这时用ARP找到目的主机的硬件地址发送方是路由器时要把IP数据报转发到另一个网络上的一台主机。这时用ARP找到本网络上的一个路由器的硬件地址剩下的工作由找到这个路由器完成 从IP地址到硬件地址的解析是自动进行的主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信ARP就会自动将这个IP地址解析为数据链路层所需要的硬件地址 动态主机配置协议Dynamic Host Configuration ProtocolDHCP 常用于给主机动态地分配IP地址它提供了即插即用的联网机制这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与 是应用层协议基于UDP 工作原理如下 使用客户/服务器方式 需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文这时该主机就成为DHCP客户 本地网络上所有主机都能收到此广播报文但只有DHCP服务器才回答此广播报文 DHCP服务器先在其数据库中查找该计算机的配置信息 若找到则返回找到的信息若找不到则从服务器的IP地址池中取一个地址分配给该计算机 DHCP服务器的回答报文称为提供报文 DHCP服务器聚合DHCP客户端的交换过程如下 DHCP客户机广播DHCP发现消息试图找到网络中的DHCP服务器以便从DHCP服务器获得一个IP地址DHCP服务器收到DHCP发现消息后向网络中广播DHCP提供消息其中包括提供DHCP客户机的IP地址和相关配置信息DHCP客户机收到DHCP提供消息如果接收DHCP服务器所提供的相关参数那么通过广播DHCP请求消息向DHCP服务器请求提供IP地址DHCP服务器广播DHCP确认消息将IP地址分配给DHCP客户机 DHCP允许网络上配置多台DHCP服务器当DHCP客户机发出DHCP请求时有可能收到多个应答消息。这时DHCP客户机只会挑选其中的一个通常挑选最先到达的 DHCP服务器分配给DHCP客户的IP地址是临时的因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定DHCP客户也可在自己发送的报文中提出对租用期的要求 DHCP是应用层协议因为它是通过客户/服务器方式工作的DHCP客户端向DHCP服务器请求服务。 应用层协议有两种工作方式 客户/服务器方式P2P方式 其他层次的协议是没有这两种工作方式的 DHCP的客户端和服务器端需要通过广播方式来进行交互原因是在DHCP执行初期客户端不知道服务器端的IP地址而在执行中间客户端并未被分配IP地址从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显TCP需要建立连接如果连对方的IP地址都不知道那么更不可能通过双方的套接字建立连接 网际控制报文协议Internet Control Message ProtocolICMP 为了提高IP数据报交付成功的机会在网络层使用了ICMP来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据加上数据报的首部组成IP数据报发送出去。 ICMP是IP层协议 ICMP报文的种类有两种 ICMP差错报告报文 用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况共有5种类型 终点不可达 当路由器或主机不能交付数据报时就向源点发送终点不可达报文 源点抑制 当路由器或主机由于拥塞而丢弃数据报时就向源点发送源点抑制报文使源点知道应当把数据报的发送速率放慢 时间超过 当路由器收到生存时间TTL为零的数据报时除丢弃该数据报外还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时就把已收到的数据报片都丢弃并向源点发送时间超过报文 参数问题 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时就丢弃该数据报并向源点发送参数问题报文 改变路由重定向 路由器把改变路由报文发送给主机让主机知道下次应将数据报发送给另外的路由器可通过更好的路由 不应发送ICMP差错报告报文的几种情况如下 对ICMP差错报告报文不再发送ICMP差错报告报文对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文对具有组播地址的数据报都不发送ICMP差错报告报文对具有**特殊地址如127.0.0.1或0.0.0.0**的数据报不发送ICMP差错报告报文 ICMP询问报文 回送请求和回答报文时间戳请求和回答报文掩码地址请求和回答报文路由器询问和通告报文前两类最常用 ICMP的两个常见应用是分组网间探测PING用来测试两台主机之间的连通性和TracerouteUNIX中的名字在Windows中是Tracert可以用来跟踪分组经过的路由 PING使用了ICMP回送请求和回答报文工作在应用层直接使用网络层的ICMP而未使用传输层的TCP或UDPTraceroute使用了ICMP时间超过报文工作在网络层 IPv6 解决IP地址耗尽的措施有以下三种 采用无类别编址CIDR使IP地址的分配更加合理采用网络地址转换NAT方法以节省全球IP地址采用具有更大地址空间的新版本IPv6 IPv6的主要特点 更大的地址空间IPv6将地址从IPv4的32位增大到了128位IPv6的字节数16B是IPv4字节数4B的平方扩展的地址层次结构灵活的首部格式改进的选项允许协议继续扩充支持即插即用即自动配置支持资源的预分配IPv6只有在包的源结点才能分片是端到端的传输路径中的路由器不能分片所以从一般意义上说IPv6不允许分片不允许类似IPv4的路由分片IPv6的首部长度必须是8B的整数倍而IPv4的首部是4B的整数倍增大了安全性。身份验证和保密功能是IPv6的关键特征 虽然IPv6与IPv4不兼容但总体而言它与所有其他的因特网协议兼容包括TCP、UDP、ICMP、IGMP、OSPF、BGP、DNS只是在少数地方做了必要的修改大部分是为了处理长的地址。IPv6相当好地满足了预定的目标主要体现在 IPv6有比IPv4长得多的地址简化了IP分组头包含8个域IPv4是12个域。这一改变使得路由器能够更快地处理分组从而可以改善吞吐率更好地支持选项。这一改变对新的分组首部很重要因为一些从前必要的段现在变成了可选段。此外表示选项的方式的改变还能加快分组的处理速度 IPv6地址 IPv6数据报的目的地址可以是以下三种基本类型地址之一 单播 传统的点对点通信 多播 一对多的通信分组被交付到一组计算机的每台计算机 任播 IPv6新增的一种类型任播的目的站是一组计算机但数据报在交付时只交付其中的一台计算机通常是距离最近的一台计算机 IPv4地址通常使用点分十进制表示法。如果IPv6也采用这种表示法那么地址写起来将会想当长。在IPv6标准中指定了一种比较紧凑的表示法把地址中的每4位用一个十六进制数表示并用冒号分割每16位。 如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170 通常可以把IPv6地址缩写成更紧凑的形式。当16位域的开头有一些0时可以采用一种缩写表示法但在域中必须至少有一个数字 例如可以把地址 4BF5:0000:0000:BA5F…缩写为4BF5:0:0:BA5F 当有相继的0值域时还可以进一步缩写。这些域可以用双冒号缩写。双冒号表示法在一个地址中仅能出现一次因为0值域的个数没有编码需要从指定的总的域的个数来推算这样一来前述地址可以缩写成4BF5::BA5F…IPv6扩展了IPv4地址的分级概念它使用以下3个等级。主要是为了使路由器能够更快地查找路由 第一级顶级指明全球都知道的公共拓扑第二级场点级指明单个场点第三级指明单个网络接口 IPv4向IPv6过渡可以采用双协议栈和隧道技术两种策略 双协议栈技术是指在一台设备上同时装有IPv4和IPv6协议栈那么这台设备能与IPv4和IPv6网络通信 如果这台设备是路由器那么在路由器的不同接口上分别配置了IPv4和IPv6地址并很可能分别连接了IPv4和IPv6网络如果这台设备是计算机那么它将同时拥有IPv4和IPv6地址并具备同时处理这两个协议地址的功能 隧道技术是将整个IPv6数据报封装到IPv4数据报的数据部分使得IPv6数据报可以在IPv4网络的隧道中传输 路由协议 自治系统 Autonomous SystemAS 单一技术管理下的一组路由器这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由一个自治系统内的所有网络都由一个行政单位管辖一个自治系统的所有路由器在本自治系统内都必须是连通的 域内路由与域间路由 自治系统内部的路由选择称为域内路由选择自治系统之间的路由选择称为域间路由选择因特网有两大类路由选择协议 内部网关协议Interior Gateway ProtocolIGP 在一个自治系统内部使用的路由选择协议它与互联网中其他自治系统选用什么路由选择协议无关目前这类路由选择协议使用得最多 如RIP、OSPF 外部网关协议External Gateway ProtocolEGP 若源点和目的站处在不同的自治系统中当数据报传到一个自治系统的边界时两个自治系统可能使用不同的IGP就需要使用一种协议将路由选择信息传递到另一个自治系统中目前使用最多的外部网关协议是BGP-4 路由信息协议Routing Information ProtocolRIP 是内部网关协议IGP中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议其最大优点是简单RIP规定 网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录因此这是一组距离称为距离向量距离也称跳数Hop Count规定从一个路由器到直接连接网络的距离跳数为1。而每经过一个路由器距离跳数加1RIP认为好的路由就是它通过的路由器的数目最少即优先选择跳数少的路径RIP允许一条路径最多只能包含15个路由器即最多允许15跳。因此距离等于16时它表示网络不可达。可见RIP只适用于小型互联网。距离向量路由可能会出现环路的情况规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上减少网络拥塞的可能性RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息以便自动建立并维护路由表动态维护在RIP中不支持子网掩码的RIP广播所以RIP中每个网络的子网掩码必须相同。但在新的RIP2中支持变长子网掩码和CIDR RIP的特点注意对比OSPF的特点 仅和相邻路由器交换信息路由器交换的信息是当前路由器所知道的全部信息即自己的路由表按固定的时间间隔交换路由信息如每隔30秒 RIP通过距离向量算法来完成路由表的更新。最初每个路由器只知道与自己直接相连的网络。通过每30秒的RIP广播相邻两个路由器相互将自己的路由表发给对方。 于是经过第一次RIP广播每个路由器就知道了与自己相邻的路由器的路由表即知道了距离自己跳数为1的网络的路由同理经过第二次RIP广播每个路由器就知道了距离自己跳数为2的网络的路由因此经过若干RIP广播后所有路由器都最终知道了整个IP网络的路由表成为RIP最终是收敛的通过RIP收敛后每个路由器到每个目标网络的路由都是距离最短的即跳数最少最短路由哪怕还存在另一条高速低时延但路由器较多的路由 距离向量算法 每个路由表项目都有三个关键数据目的网络N距离d下一跳路由器地址X。对于每个相邻路由器发送过来的RIP报文执行如下步骤 对地址为X的相邻路由器发来的RIP报文先修改此报文中的所有项目 把下一跳字段中的地址都改为X并把所有距离字段的值加1 对修改后的RIP报文中的每个项目执行如下步骤 当原来的路由表中没有目的网络N时把该项目添加到路由表中当原来的路由表中有目的网络N且下一跳路由器的地址是X时用收到的项目替换原路由表中的项目当原来的路由表中有目的网络N且下一跳路由器的地址不是X时 如果收到的项目中的距离d小于路由表中的距离那么就用收到的项目替换原路由表中的项目否则什么也不做 如果180秒RIP默认超过时间为180秒还没有收到相邻路由器的更新路由表那么把此相邻路由器记为不可达路由器即把距离设置为16距离为16表示不可达返回 RIP最大的优点是实现简单、开销小、收敛过程较快RIP的缺点如下 RIP限制了网络的规模它能使用的最大距离为1516表示不可达路由器之间交换的是路由器中的完整路由表因此网络规模越大开销也越大网络出现故障时会出现慢收敛现象即需要较长时间才能将此信息传送到所有路由器俗称坏消息传得慢使更新过程的收敛时间长 RIP是应用层协议它使用UDP传送数据端口520RIP选择的路由不一定是时间最短的但一定是具有最少路由器的路径因为它是根据最少跳数进行路径选择的 开放最短路径优先OSPF协议 OSPF协议的基本特点对比RIP OSPF向本自治系统中的所有路由器发送信息这里使用的方法是洪泛法。而RIP仅向自己相邻的几个路由器发送信息发送的信息是与本路由器相邻的所有路由器的链路状态但这只是路由器所知道的部分信息 链路状态说明本路由器和哪些路由器相邻及该链路的度量而在RIP中发送的信息是本路由器所知道的全部信息即整个路由表 只有当链路状态发生变化时路由器才用洪泛法向所有路由器发送此信息并且更新过程收敛得快不会出现RIP坏消息传得慢的问题。而在RIP中不管网络拓扑是否发生变化路由器之间都会定期交换路由表的信息OSPF是网络层协议它不使用UDP或TCP而直接用IP数据报传送其IP数据报首部的协议字段为89。而RIP是应用层协议它在传输层使用UDP。 OSPF的其他特点 OSPF对不同的链路可根据IP分组的不同服务类型TOS而设置成不同的代价因此OSPF对于不同类型的业务可计算出不同的路由十分灵活如果到同一个目的网络有多条相同代价的路径那么可以将通信量分配给这几条路径。这称为多路径间的负载平衡所有在OSPF路由器之间交换的分组都具有鉴别功能因而保证了仅在可信赖的路由器之间交换链路状态信息支持可变长度的子网划分和无分类编址CIDR每个链路状态都带上一个32位的序号序号越大状态就越新 OSPF的基本工作原理 由于各路由器之间频繁地交换链路状态信息因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结构图它在全网范围内是一致的称为链路状态数据库的同步。 然后每个路由器根据这个全网拓扑结构图使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径以此构造自己的路由表。此后当链路状态发生变化时每个路由器重新计算到各目的网络的最优路径构造新的路由表 虽然使用了Dijkstra算法能计算出完整的最优路径但路由表中不会存储完整路径而只存储下一跳只有到了下一跳路由器才能知道再下一跳应当怎样走 为使OSPF能够用于规模很大的网络OSPF将一个自治系统再划分为若干更小的范围称为区域。划分区域的好处是将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑而不知道其他区域的网络拓扑情况。这些情况也有层次之分。处在上层的域称为主干区域负责连通其他下层的区域并且还连接其他自治域。 OSPF的五种分组类型 问候分组 用来发现和维持邻站的可达性 数据库描述分组 向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息 链路状态请求分组 向对方请求发送某些链路状态项目的详细信息 链路状态更新分组 用洪泛法对全网更新链路状态 链路状态确认分组 对链路更新分组的确认 通常每隔10秒每两个相邻路由器要交换一次问候分组以便知道哪些站可达 在路由器刚开始工作时OSPF让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息 然后路由器使用链路状态请求分组向对方请求发送自己所缺少的某些链路状态项目的详细信息 经过一系列的这种分组交换就建立了全网同步的链路数据库 如下图所示 在网络运行中只要一个路由器的链路状态发生变化该路由器就要使用链路状态更新分组用洪泛法向全网更新链路状态。其他路由器在更新后发送链路状态确认分组对更新分组进行确认 为了确保链路状态数据库与全网的状态保持一致OSPF还规定每隔一段时间如30分钟就刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态因而与整个互联网的规模并无直接关系。因此当互联网规模很大时OSPF要比RIP好得多而且OSPF协议没有坏消息传播得慢的问题 教材上说OSPF协议不使用UDP数据报传送而是直接使用IP数据报传送 用UDP传送是指将该信息作为UDP报文的数据部分RIP报文是作为UDP数据报的数据部分直接使用IP数据报传送是指将该信息直接作为IP数据报的数据部分 边界网关协议 Border Gateway ProtocolBGP 不同自治系统的路由器之间交换路由信息的协议是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够到达的地址及到达每个路由器的路径的跳数 内部网关协议主要设法使数据报在一个AS中尽可能有效地从源站传送到目的站。在一个AS内部不需要考虑其他方面的策略。然而BGP使用的环境却不同主要原因如下 因特网的规模太大使得自治系统之间路由选择非常困难对于自治系统之间的路由选择要寻找最佳路由是很不现实的自治系统之间的路由选择必须考虑有关策略 BGP只能力求寻找一条能够到达目的网络且比较好的路由不能兜圈子而并非寻找一条最佳路由。BGP采用的是路径向量路由选择协议它与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议它是基于TCP的。 BGP的工作原理如下 每个自治系统的管理员要选择至少一个路由器可以有多个作为该自治系统的BGP发言人一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息就要先建立TCP连接 BGP报文是通过TCP传送的也就是说BGP报文是TCP报文的数据部分 然后在此连接上交换BGP报文以建立BGP会话再利用BGP会话交换路由信息当所有BGP发言人都相互交换网络可达性的信息后各BGP发言人就可找出到达各个自治系统的较好路由 每个BGP发言人除必须运行BGP外还必须运行该AS所用的内部网关协议如OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络用网络前缀表示所要经过的一系列AS 下图是BGP发言人交换路径向量的例子 BGP的特点如下 BGP交换路由信息的结点数量级是自治系统的数量级要比这些自治系统中的网络数少很多每个自治系统中BGP发言人或边界路由器的数目是很少的这样就使得自治系统之间的路由选择不致过分复杂BGP支持CIDR因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器以及到达该目的网络所要经过的各个自治系统序列在BGP刚运行时BGP的邻站交换整个BGP路由表但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处 BGP共使用4种报文 打开报文 Open 用来与相邻的另一个BGP发言人建立关系 更新报文 Update 用来发送某一路由的信息以及列出要撤销点多条路由 保活报文 Keepalive 用来确认打开报文并周期性地证实邻站关系 通知报文 Notification 用来发送检测到的差错 RIP、OSPF与BGP的比较如下 协议RIPOSPFBGP类型内部内部外部路由算法距离-向量链路状态路径-向量传递协议UDPIPTCP路径选择跳数最少代价最低较好非最佳交换结点和本结点相邻的路由器网络中的所有路由器和本结点相邻的路由器交换内容当前本路由器知道的全部信息即自己的路由表与本路由器相邻的所有路由器的链路状态首次是整个路由表非首次则是有变化的部分 IP组播 组播的概念 为了能够支持像视频点播、视频会议这样的多媒体应用网络必须实施某种有效的组播机制。使用多个单播传送来仿真组播总是可能的但这会引起主机上大量的处理开销、网络上太多的交通量。人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机并被它们正确接收 组播一定仅应用于UDP它对将报文同时送往多个接受者的应用来说非常重要。而TCP是一个面向连接的协议它意味着分别运行于两台主机由IP地址来确定内的两个进程由端口号来确定之间存在一条连接因此会一对一地发送 使用组播的缘由是有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组而是让源主机把单个分组发送给一个组播地址该组播地址标识一组地址。网络如因特网把这个分组的副本投递给该组中的每台主机。主机可以选择加入或离开一个组因此一台主机可以同时属于多个组 因特网中的IP组播也使用组播组的概念每个组都由一个特别分配的地址要给该组发送的计算机将使用这个地址作为分组的目标地址。在IPv4中这些地址在D类地址空间中分配而IPv6也有一部分地址空间保留给组播组 主机使用一个称为IGMP因特网组管理协议的协议加入组播组。它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能可以在许多路由器互联的支持硬件组播的网络上实现因特网组播 需要注意的是主机组播时仅发送一份数据只有数据在传送路径出现分岔时才将分组复制后继续转发。因此对发送者而言数据只需发送一次就可发送到所有接收者大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现能够运行组播协议的路由称为组播路由器 单播与组播的对比如下图 IP组播地址 IP组播使用D类地址格式。D类地址的前四位是1110因此D类地址范围是224.0.0.0 ~ 239.255.255.255每个D类地址标志一个组播组组播数据报和一般的IP数据报的区别 前者使用D类IP地址作为目的地址并且首部中的协议字段值是2表明使用IGMP 需要注意的是 组播数据报也是尽最大努力交付不提供可靠交付组播地址只能用于目的地址而不能用于源地址对组播数据报不产生ICMP差错报文因此若在PING命令后面键入组播地址将永远不会收到响应并非所有的D类地址都可作为组播地址 IP组播可分两类 只在本局域网上进行硬件组播在因特网的范围内进行组播。在因特网上进行组播的最后阶段还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员 IGMP与组播路由算法 要使路由器知道组播组成员的信息需要利用因特网组管理协议Internet Group Management ProtocolIGMP。连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作以便把组播数据报用最小代价传送给所有组成员这就需要使用组播路由选择协议IGMP并不是在因特网范围内对所有组播组成员进行管理的协议。IGMP不知道IP组播组包含的成员数也不知道这些成员分布在哪些网络上。IGMP让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。IGMP应视为TCP/IP的一部分其工作可分为两个阶段 当某台主机加入新的组播组时该主机应向组播组的组播地址发送一个IGMP报文声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后将组成员关系转发给因特网上的其他组播路由器因为组成员关系是动态的本地组播路由器要周期性探询本地局域网上的主机以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应时则不再将该组的成员关系转发给其他的组播路由器 组播路由选择实际上就是要找出以源主机为根结点的组播转发树其中每个分组在每条链路上只传送一次即在组播转发树上的路由器不会收到重复的组播数据报。不同的多播组对应于不同的多播转发树同一个多播组对不同的源点也会有不同的多播转发树在许多由路由器互联的支持硬件多点传送的网络上实现因特网组播时主要有三种路由算法 基于链路状态的路由选择基于距离-向量的路由选择可以建立在任何路由器协议之上的因此称为协议无关的组播PIM 移动IP 移动IP的概念 支持移动性的因特网体系结构与协议共称为移动IP它是为了满足移动结点计算机、服务器、网段等在移动中保持其连接性而设计的。更确切地说移动IP技术是指移动结点以固定的网络IP地址实现跨越不同网段的漫游功能并保证基于网络IP的网络权限在漫游过程中不发生任何改变。移动IP的目标是把分组自动地投递给移动结点。一个移动结点是把其连接点从一个网络或子网改变到另一个网络或子网的主机。使用移动IP一个移动结点可以在不改变其IP地址的情况下改变其驻留位置。基于IPv4的移动iP定位三种功能实体移动结点、归属代理也称本地代理和外埠代理也称外部代理。归属代理和外埠代理又称移动代理 移动结点 具有永久IP地址的移动结点 本地代理 在一个网络环境中一个移动结点的永久居所被称为归属网络在归属网络中代表移动结点执行移动管理功能的实体称为归属代理本地代理它根据移动用户的转交地址采用隧道技术转交移动结点的数据包 外部代理 在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理 移动IP和移动自组网络并不相同 移动IP技术使漫游的主机可以用多个方式连接到因特网移动IP的核心网络功能仍然是基于固定互联网中一直使用的各种路由选择协议移动自组网络是将移动性扩展到无线领域中的自治系统它具有自己独特的路由选择协议并且可以不和因特网相连。 移动IP和动态IP是两个完全不同的概念 动态IP指的是局域网中的计算机可以通过网络中的DHCP服务器动态地获得一个IP地址而不需要用户在计算机的网络设置中指定IP地址动态IP和DHCP经常会应用在我们的实际工作环境中 移动IP通信过程 在移动IP中每个移动结点都有一个唯一的本地地址当移动结点移动时它的本地地址是不变的在本地网络链路上每个本地结点还必须有一个本地代理来为它维护当前的位置信息这就需要引入转交地址。当移动结点连接到外地网络链路上时转交地址就用来标识移动结点现在所处的位置以便进行路由选择。移动结点的本地地址与当前转交地址的联合称为移动绑定或简称绑定。当移动结点得到一个新的转交地址时通过绑定向本地代理进行注册以便让本地代理即时了解移动结点的当前位置移动IP的基本通信流程如下 移动结点在本地网时按传统的TCP/IP方式进行通信在本地网中有固有的地址移动结点漫游到一个外地网络时仍然使用固定的IP地址进行通信。为了能够收到通信对端发给它的IP分组移动结点需要向本地代理注册当前的位置地址这个位置地址就是转交地址它可以是外部代理的地址或动态配置的一个地址本地代理接收来自转交地址的注册后会构建一条通向转交地址的隧道将截获的发给移动结点的IP分组通过隧道传送到转交地址处在转交地址处解除隧道封装恢复原始的IP分组最后送到移动结点这样移动结点在外网就能够收到这些发送给它的IP分组移动结点在外网通过外网的路由器或外部代理向通信对端发送IP数据包移动结点来到另一个外网时只需向本地代理更新注册的转交地址就可继续通信移动结点回到本地网时移动结点向本地代理注销转交地址这时移动结点又将使用传统的TCP/IP方式进行通信 移动IP为移动主机设置了两个IP地址即主地址和辅地址转交地址。移动主机在本地网时使用的是主地址。当移动到另一个网络时需要获得一个临时的辅地址但此时主地址仍然不变。从外网移回本地网时辅地址改变或撤销而主地址仍然保持不变 网络层设备 路由器的组成和功能 是一种具有多个输入/输出端口的专用计算机其任务是连接不同的网络连接异构网络并完成路由转发。在多个逻辑网络即多个广播域互联时必须使用路由器。 当源主机要向目标主机发送数据报时路由器先检查源主机与目标主机是否连接在同一个网络上 如果源主机和目标主机在同一个网络上那么直接交付而无须通过路由器。如果源主机和目标主机不在同一个网络上那么路由器按照转发表路由表指出的路由将数据报转发给下一个路由器这称为间接交付 从结构上看路由器由路由选择和分组转发两部分构成。而从模型的角度上看路由器是网络层设备它实现了网络模型的下三层即物理层、数据链路层、网络层。如下图 如果一个存储转发设备实现了某个层次的功能那么它就可以互联两个在该层次上使用不同协议的网段网络。 网桥实现了物理层、数据链路层那么网桥可以互联两个物理层和数据链路层不同的网段中继器实现了物理层后却不能互联两个物理层不同的网段这是因为中继器不是存储转发设备它属于直通式设备 路由选择部分也称控制部分其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表 分组转发部分由三部分组成交换结构一组输入端口一组输出端口 输入端在从物理层接收到的比特流中提取出数据链路层帧进而从帧中提取出网络层数据报输出端口则执行恰好相反的操作。交换结构是路由器的关键部件它根据转发表对分组进行处理将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一个网络有三种常用的交换方法 通过存储器交换通过总线交换通过互联网络交换 路由器主要完成两个功能分组转发和路由计算 前者处理通过路由器的数据流关键操作是转发表查询、转发及相关的队列管理和任务调度后者通过和其它路由器进行基于路由协议的交互完成路由表的计算 路由器和网桥的重要区别是 网桥与高层协议无关而路由器是面向协议的它依据网络地址进行操作并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制 等现今的路由器一般都提供多种协议的支持包括OSI、TCP/IP、IPX等 路由表与路由转发 路由表是根据路由选择算法得出的主要用途是路由选择标准路由表有4个项目目的网络IP地址、 子网掩码 、下一跳IP地址 、接口。如下图所示 转发表是从路由表得出的其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同其结构应使查找过程最优化而路由表则需对网络拓扑变化的计算最优化。 转发表中含有一个分组将要发往的目的地址以及分组的下一跳即下一步接收者的目的地址实际为MAC地址。为了减少转发表的重复项目可以使用一个默认路由代替所有具有相同下一跳的项目并将默认路由设置得比其他项目的优先级低。如下图 路由表总是用软件来实现的转发表可以用软件来实现甚至也可以用特殊的硬件来实现 注意转发和路由选择的区别 转发是路由器根据转发表把收到的IP数据报从合适的端口转发出去它仅涉及一个路由器。路由选择涉及很多路由器路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法根据从各相邻路由器得到的关于网络拓扑的变化情况动态地改变所选择的路由并由此构造出整个路由表 在讨论路由选择的原理时往往不去区分转发表和路由表的区别但要注意路由表不等于转发表。分组的实际转发是靠直接查找转发表而不是直接查找路由表 传输层 传输层提供的服务 从通信和信息处理的角度看传输层向它上面的应用层提供通信服务它属于面向通信部分的最高层同时也是用户功能中的最底层 位于网络层之上它为运行在不同主机上的进程之间提供了逻辑通信而网络层提供主机之间的逻辑通信。显然即使网络层协议不可靠网络层协议使分组丢失、混乱或重复传输层同样能为应用程序提供可靠的服务。 从下图可看出网络的边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时只有主机的协议栈才有传输层和应用层而路由器在转发分组时都只用到下三层的功能即在通信子网中没有传输层传输层只存在于通信子网以外的主机中 传输层的功能如下 传输层提供应用进程之间的逻辑通信即端到端的通信。与网络层的区别是网络层提供的是主机之间的逻辑通信 从网络层来说通信的双方是两台主机IP数据报的首部给出了这两台主机的IP地址。但两台主机之间的通信实际上是两台主机中的应用进程之间的通信应用进程之间的通信又称端到端的逻辑通信。这里逻辑通信的意思是传输层之间的通信好像是沿水平方向传送的数据但事实上这两个传输层之间并没有一条水平方向的物理连接 复用、分用 复用 指发送方不同的应用进程都可使用同一个传输层协议传送数据 分用 指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用程序 网络层也有复用分用的功能但网络层的复用是指发送方不同协议的数据都可以封装成IP数据包发送出去分用是指接收方的网络层在剥去首部后把数据交付给相应的协议 传输层还要对接收到的报文进行差错检测首部和数据部分。而网络层只检查IP数据报的首部不检验数据部分是否出错 提供两种不同的传输协议即面向连接的TCP和无连接的UDP。而网络层无法同时实现两种协议即在网络层要么只提供面向连接的服务如虚电路要么只提供无连接服务如数据报而不可能在网络层同时存在这两种方式 传输层向高层用户屏蔽了底层网络核心的细节如网络拓扑、路由协议等它使应用进程看见的好像是两个传输层实体之间有一条端到端的逻辑通信信道这条逻辑通信信道对上层的表现却因传输层协议不同而有很大差别。 当传输层采用面向连接的TCP时尽管下面的网络是不可靠的只提供最大努力的服务但这种逻辑通信信道就相当于一条全双工的可靠信道。但当传输层采用无连接的UDP时这种逻辑通信信道仍然时一条不可靠信道 传输层的寻址与端口 端口的作用 端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。端口是传输层服务访问点TSAP它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用只不过IP地址和MAC地址标识的是主机而端口标识的是主机中的应用程序数据链路层的SAP是MAC地址网络层的SAP是IP地址传输层的SAP是端口在协议栈层间的抽象的协议端口是软件端口它与路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。传输层使用的是软件端口 端口号 应用进程通过端口号进行标识端口号长度为16bit能够表示65536 2 16 2^{16} 216个不同的端口号。端口号只具有本地意义即端口号只标识本计算机应用层中的各进程在因特网中不同计算机的相同端口号是没有联系的。根据端口号范围可将端口分为两类 服务端使用的端口号。它又分为两类最重要的一类是熟知端口号数值为0~1023IANA互联网地址指派机构把这些端口号指派给了TCP/IP最重要的一些应用程序让所有的用户都知道。另一类称为登记端口号数值为1024~49151。它是供没有熟知端口号的应用程序使用的使用这类端口号必须在IANA登记以防止重复 一些常用的熟知端口号如下 应用程序FTPTELNETSMTPDNSTFTPHTTPSNMP熟知端口号212325536980161 客户端使用的端口号数值为49152~65535。由于这类端口号仅在客户进程运行时才动态地选择因此又称为短暂端口号临时端口。通信结束后刚用过的客户端口号就不复存在从而这个端口号就可供其他客户进程以后使用 套接字 在网络中通过IP地址来标识和区别不同的主机通过端口号来标识和区分一台主机中的不同应用进程端口号拼接到IP地址即构成套接字Socket。在网络中采用发送方和接收方的套接字来识别端点。套接字实际上是一个通信端点即 套接字Socket IP地址端口号 它唯一地标识网络中的一台主机和其上的一个应用进程在网络通信中主机A发给主机B的报文段包含目的端口号和源端口号源端口号是返回地址的一部分即当B需要发回一个报文段给A时B到A的报文段中的目的端口号便是A到B的报文段中的源端口号完全的返回地址是A的IP地址和源端口号 无连接服务与面向连接服务 面向连接服务就是在通信双方进行通信之前必须先建立连接在通信过程中整个连接的情况一直被实时地监控和管理。通信结束后应该释放这个连接无连接服务是指两个实体之间地通信不需要先建立好连接需要通信时直接将信息发送到网络中让该信息的传递在网上尽力而为地往目的地传送TCP/IP协议族在IP层之上使用了两个传输协议 面向连接的传输控制协议TCP采用TCP时传输层向上提供的是一条全双工地可靠逻辑信道无连接地用户数据包协议UDP采用UDP时传输层向上提供的是一条不可靠的逻辑信道 TCP提供面向连接的服务在传送数据之前必须先建立连接数据传送结束后要释放连接。TCP不提供广播或组播服务。由于TCP提供面向连接的可靠传输服务因此不可避免地增加了许多开销如确认、流量控制、计时器、连接管理等。这不仅使协议数据单元的头部增大很多还要占用许多的处理机资源。因此TCP主要适用于可靠性更重要的场合如文件传输协议FTP、超文本传输协议HTTP、远程登录TELNET等UDP是一个无连接的非可靠传输层协议。它在IP之上仅提供两个附加服务多路复用、对数据的错误检查。IP知道怎样把分组投递给一台主机但不知道怎样把它们投递给主机上的具体应用。UDP在传送数据之前不需要先建立连接远程主机的传输层收到UDP报文后不需要给出任何确认。由于UDP比较简单因此执行速度比较快、实时性好 使用UDP的应用主要包括小文件传送协议TFTP、DNS、SNMP、实时传输协议RTP IP数据报和UDP数据报的区别 IP数据报在网络层要经过路由的存储转发UDP数据报在传输层的端到端的逻辑信道中传输封装成IP数据报在网络层传输时UDP数据报的信息对路由是不可见的 TCP和网络层虚电路的区别 TCP报文段在传输层抽象的逻辑信道中传输对路由器不可见虚电路所经过的交换结点都必须保存虚电路状态信息。在网络层若采用虚电路方式则无法提供无连接服务而传输层采用TCP不影响网络层提供无连接服务 UDP协议 UDP数据报 UDP概述 UDP仅在IP的数据报服务之上增加了两个最基本的服务复用、分用和差错检测。如果应用开发者选择UDP而非TCP那么应用程序几乎直接与IP打交道UDP优点如下 UDP无须建立连接。因此UDP不会引入建立连接的时延。试想如果DNS运行在TCP而非UDP上那么DNS的速度会慢很多。HTTP使用TCP而非UDP是因为对于基本文本数据的Web网页来说可靠性是至关重要的无连接状态。TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数、序号与确认号的参数而UDP不维护连接状态也不跟踪这些参数。因此某些专用应用服务器使用UDP时一般都能支持更多的活动客户机分组首部开销小TCP有20B的首部开销而UDP仅有8B的开销应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制因此网络中的拥塞不会影响主机的发送效率。某些实时应用要求以稳定的速度发送能容忍一些数据的丢失但不允许有较大的时延而UDP正好满足这些应用的需求UDP支持一对一、一对多、多对一和多对多的交互通信 UDP常用于一次性传输较少数据的网络应用如DNS、SNMP等因为对于这些应用若采用TCP则将为连接创建、维护、拆除带来不小的开销。UDP也常用于多媒体应用UDP不保证可靠交付但这并不意味着应用对数据的要求是不可靠的所有维护可靠性的工作可由用户在应用层来完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制UDP是面向报文的。发送方UDP对应用层交下来的报文在添加首部后就向下交付给IP层一次发送一个报文既不合并也不拆分而是保留这些报文的边界接收方UDP对IP层交上来的UDP数据报在去除首部后就原封不动地交付给上层应用进程一次交付一个完整的报文。因为报文是不可分割的是UDP数据报处理的最小单位。因此应用程序必须选择合适大小的报文若报文太长UDP把它交付给IP层后可能会导致分片若报文太短UDP把它交付给IP层后会使IP数据报的首部的相对长度太大两者都会降低IP层的效率 UDP的首部格式 UDP数据报包含两部分UDP首部和用户数据。UDP首部有8B由4个字段组成每个字段的长度都是2B如下图 各字段意义如下 源端口 源端口号在需要对方回信时选用不需要时可用全0 目的端口 在终点交付报文时必须使用到 长度 包含首部、数据最小值是8B仅有首部 校验和 检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的当源主机不想计算校验和时则直接令该字段为全0 当传输层从IP层收到UDP数据报时就根据首部中的目的端口把UDP数据报通过相应的端口上交给应用程序如下图 如果接收方UDP发现收到的报文中的目的端口号不正确那么就丢弃该报文并由ICMP发送端口不可达差错报文给发送方 UDP校验 计算校验和时要在UDP数据报之前增加12B的伪首部伪首部并不是UDP的真正首部。只是在计算校验和时临时添加在UDP数据报的前面得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报来计算的。伪首部不向下传送、不向上递交而只是为了计算校验和。如下图 UDP校验和的计算方法和IP数据报首部校验和的计算方法相似不同的是IP数据报的校验和只检验IP数据报的首部但UDP的校验和则检查首部、数据部分 发送方首先把全零放入校验和字段并添加伪首部然后把UDP数据报视为许多16位的字链接起来若UDP数据报的数据部分不是偶数个字节则要在数据部分末尾填入一个全零字节但此字节不发送按二进制反码计算出这些16位字的和将此和的二进制反码写入校验和字段并发送接收方把收到的UDP数据报加上伪首部如果不为偶数个字节那么还需要补上全零字节后按二进制反码求这些16位字的和当无差错时其结果应为全1否则就表明有差错出现接收方就应该丢弃这个UDP数据报 校验时若UDP数据报部分的长度不是偶数个字节则需填入一个全零字节。但是此字节和伪首部一样是不发送的如果UDP校验和校验出UDP数据报是错误的那么可以丢弃也可以交付给上层但是需要附上错误报告即告诉上层这是错误的数据通过伪首部不仅可以检查源端口号、目的端口号、UDP用户数据报的数据部分还可以检查IP数据报的源IP地址和目的地址 这种简单的差错检验方法的检错能力并不强但它的好处是简单、处理速度快 TCP协议 TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议它主要解决传输的可靠、有序、无丢失、不重复问题。TCP是TCP/IP体系中非常复杂的一个协议主要特点如下 TCP是面向连接的传输层协议每条TCP连接只能有两个端点每条TCP连接只能是点对点一对一TCP提供可靠的交付服务保证传送的数据无差错、不丢失、不重复且有序TCP提供全双工通信允许通信双方的应用进程在任何时候都能发送数据为此TCP连接的两端都设有发送缓存和接收缓存用来临时存放双向通信的数据 发送缓存暂存的数据 发送应用程序传送给发送方TCP准备发送的数据TCP已发送但尚未收到确认的数据 接收缓存暂存的数据 按序到达但尚未被接收应用程序读取的数据不按序到达的数据 TCP是面向字节流的虽然应用程序和TCP的交互是一次一个数据块大小不等但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流TCP和UDP在发送报文时所采用的方式完全不同。UDP报文的长度由发送应用程序决定而TCP报文的长度则根据接收方给出的窗口值和往前网络拥塞程度来决定。如果应用程序传送到TCP缓存的数据块太长TCP就把它划分得短一些再传送如果太短TCP也可以等到积累足够多的字节后再组成报文段发送出去 TCP报文段 TCP传送的数据单位称为报文段。TCP报文段既可以用来运载数据又可以用来建立连接、释放连接、应答。一个TCP报文段分为首部、数据两部分整个TCP报文段作为IP数据报的数据部分封装在IP数据报中其首部的前20B是固定的。TCP报文段的首部最短为20B后面有4N字节是根据需要而增加的选项通常长度为4B的整数倍如下图 各字段意义如下 源端口和目的端口 各占2B。端口是运输层与应用层的服务接口运输层的复用和分用功能都要通过端口实现 序号 各占4B范围是** 0 到 2 32 − 1 0 到 2^{32}-1 0到232−1共 2 32 2^{32} 232个序号。TCP是面向字节流的即TCP传送时是逐个字节传送的所以TCP连接传送的字节流中的每个字节都按顺序编号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号** 例如一报文段的序号字段值是301而携带的数据共有100B表明本报文段的数据的最后一个字节的序号是400因此下一个报文段的数据序号应从401开始 确认号 占4B是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N则表明到序号N-1为止的所有数据都已正确收到 数据偏移首部长度 占4位这里不是IP数据报分片的那个数据偏移而是表示首部长度首部中还有长度不确定的选项字段它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。数据偏移的单位是32位以4B为计算单位。因此当此字段的值为15时达到TCP首部的最大长度为60B 保留 占6位保留为今后使用但目前应置为0 紧急位URG URG1时表明紧急指针字段有效。它告诉系统此报文中有紧急数据应尽快传送相当于高优先级的数据。但URG需要和紧急指针配合使用即数据从第一个字节到紧急指针所指字节就是紧急数据 确认位ACK 仅当ACK1时确认号字段才有效。当ACK0时确认号无效。TCP规定在连接建立后所有传送的报文段都必须把ACK置1 推送位PSHPUSH 接收方TCP收到PSH1的报文段就尽快地交付给接收应用进程而不再等到整个缓存都填满后再向上交付 复位位RSTReset RST1时表明TCP连接中出现严重差错如主机崩溃或其他原因必须释放连接然后再重新建立运输连接 同步位SYN 同步SYN1表示这是一个连接请求或连接接受报文。当SYN1ACK0时表明这是一个连接请求报文对方若同意建立连接则应在响应报文中使用SYN1ACK1 终止位FINFinish 用来释放一个连接。当FIN1时表明此报文段的发送放的数据已发送完毕并要求释放传输连接 窗口 占2B范围为** 0 到 2 16 − 1 0 到 2^{16}-1 0到216−1它指出现在允许对方发送的数据量**接收方的数据缓存空间是有限的因此用窗口值作为接收方让发送方设置其发送窗口的依据 例如设确认号是701窗口字段是1000。这表明从701号算起发送此报文段的一方还有接收1000字节数据字节序号是701~1700的接收缓存空间 校验和 占2B。校验和字段校验的范围包括首部和数据两部分。在计算校验和时和UDP一样要在TCP报文段的前面加上12B的伪首部只需将UDP伪首部的第4个字段即协议字段的17改成6其他的和UDP一样 紧急指针 占2B。紧急指针仅在URG1时才有意义它指出在本报文段中紧急数据共有多少字节紧急数据在报文段数据的最前面 选项 长度可变。TCP最初只规定了一种选项即最大报文段长度Maximum Segment SizeMSS。MSS是TCP报文段中的数据字段的最大长度 填充 这是为了使整个首部长度是4B的整数倍 TCP连接管理 TCP是面向连接的协议因此每个TCP连接都有三个阶段连接建立、数据传送、连接释放。TCP连接的管理就是使运输连接的建立和释放都能正常进行 TCP连接建立的过程中要解决以下三个问题 要使每一方能够确知对方的存在要允许双方协商一些参数 如最大窗口值、是否使用窗口扩大选项、时间戳选项、服务质量等 能够对运输实体资源进行分配 如缓存大小、连接表中的项目等 TCP把连接作为最基本的抽象每条TCP连接有两个端点TCP连接的端点不是主机不是主机的IP地址不是应用程序也不是传输层的协议端口。TCP连接的端口即为**套接字socket**或插口每条TCP连接唯一地被通信的两个端点即两个套接字确定 TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程称为客户client而被动等待连接建立的应用进程称为服务器server TCP连接的建立 连接建立前服务器进程处于**LISTEN收听**状态等待客户的连接请求 客户机的TCP首先向服务器的TCP发送连接请求报文段。这个特殊报文段的首部中的同步位SYN置1同时选择一个初始序号seqx。TCP规定SYN报文段不能携带数据但要消耗掉一个序号。这时TCP客户进程进入**SYN-SEND同步已发送**状态 服务器的TCP收到连接请求报文段后如同意建立连接则向客户机发回确认并为该TCP连接分配缓存和变量。在确认报文段中把SYN、ACK都置1确认号是ackx1同时也为自己选择一个初始序号seqy。注意确认报文段不能携带数据但也要消耗掉一个序号。这时TCP服务器进程进入**SYN-RCVD同步收到**状态 当客户机收到确认报文段后还要向服务器给出确认并为该TCP连接分配缓存和变量。确认报文段的ACK置1确认号acky1序号seqx1。该报文段可以携带数据若不携带数据则不消耗序号。这时TCP客户进程进入**ESTABLISHED已建立连接**状态 服务器端的资源是在完成第二次握手时分配的而客户端的资源是在完成第三次握手时分配的这就使得服务器易于受到SYN洪泛攻击 TCP连接的释放 客户机打算关闭连接时向其TCP发送连接释放报文段并停止发送数据主动关闭TCP连接该报文段的终止位FIN置1序号sequ它等于前面已传送过的数据的最后一个字节的序号加1FIN报文段即使不携带数据也消耗掉一个序号。这时TCP客户进程进入**FIN-WAIT-1终止等待1**状态。 TCP是全双工的即可以想象为一条TCP连接上有两条数据通路发送FIN的一端不能再发送数据即关闭了其中一条数据通路但对方还可以发送数据。 服务器收到连接释放报文段后即发出确认确认号acku1序号seqv等于它前面已传送过的数据的最后一个字节的序号加1。然后服务器进入CLOSE-WAIT关闭等待状态。此时从客户机到服务器这个方向的连接就释放了TCP连接处于半关闭状态。但服务器若发送数据客户机仍要接收即从服务器到客户机这个方向的连接并未关闭。 若服务器已没有要向客户机发送的数据就通知TCP释放连接此时其发出FIN1的连接释放报文段。设该报文段的序号为w在半关闭状态服务器可能又发送了一些数据还须重复上次已发送的确认号acku1。这时服务器进入LAST-ACK最后确认状态 客户机收到连接释放报文段后必须发出确认。把确认报文段中的确认位ACK置1确认号ackw1序号sequ1。此时TCP连接还未释放必须经过时间等待计时器设置的时间2MSL最长报文段寿命后客户机才进入**CLOSED连接关闭**状态 TCP连接的建立、释放总结如下 连接建立分3步 SYN1seqxSYN1ACK1seqyackx1ACK1seqx1acky1 连接释放分4步 FIN1sequACK1seqvacku1FIN1ACK1seqwacku1ACK1sequ1ackw1 ACK、SYN、FIN一定等于1 TCP可靠传输 TCP的任务是在IP层不可靠的尽力而为服务的基础上建立一种可靠数据传输服务。TCP提供的可靠数据传输服务保证接收方进程从缓冲区读出的字节流与发送方发出的字节流完全一样。TCP使用了校验、序号、确认、重传等机制来达到这一目的。 TCP的校验机制与UDP一样 序号 TCP首部的序号字段用来保证数据能有序提交给应用层TCP把数据视为一个无结构但有序的字节流序号建立在传送的字节流之上而不建立在报文段之上 TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号 如下图A的发送缓存区中共有10B序号从0开始标号第一个报文包含第0~2个字节则该TCP报文段的序号是0第二个报文段的序号是3 确认 TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号 上图中如果接收方B已收到第一个报文段此时B希望收到的下一个报文段的数据从第3个字节开始的那么B发送给A的报文中的确认号字段应为3。发送方缓存区会继续存储那些已发送但未收到确认的报文段以便在需要时重传TCP默认使用累计确认即TCP只确认数据流中至第一个丢失字节为止的字节。例如图5.8接收方B收到了A发送的包含字节0~2及字节6~7的报文段。由于某种原因B还未收到字节3~5的报文段此时B仍在等待字节3和其后面的字节因此B到A的下一个报文段将确认号字段置为3 重传 超时 TCP每发送一个报文段就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时就要重传这一报文段由于TCP的下层是一个互联网环境IP数据报所选择的路由变化很大因而传输层的往返时延的方差也很大。为了计算超时计时器的重传时间TCP采用一种自适应算法它记录一个报文段发出的时间以及收到相应确认的时间这两个时间之差称为报文段的往返时间Round-Trip-TimeRTT。TCP保留了RTT的一个加权平均往返时间 R T T s RTT_s RTTs​它会随新测量RTT样本值得变化而变化。显然超时计时器设置的超时重传时间Retransmission Time-OutRTO应略大于 R T T s RTT_s RTTs​但也不能大太多否则当报文段丢失时TCP不能很快重传导致数据传输时延大。 冗余ACK冗余确认 超时触发重传存在的一个问题是超时周期往往太长。所幸的是发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况。冗余ACK就是再次通过确认某个报文段的ACK而发送方先前已经收到过该报文段的确认。 例如发送方A发送了序号为12345的TCP报文段其中2号报文段在链路中丢失它无法到达接收方B。因此345号报文段对于B来说就成了失序报文段。TCP规定每当比期望序号大的失序报文段到达时就发送一个冗余ACK指明下一个期待字节的序号。在本例中 345号报文到达B但它们不是B所期望收到的下一个报文于是B就发送3个对1号报文段的冗余ACK表示自己期望接收2号报文段。TCP规定当发送方收到对同一个报文段的3个冗余ACK时就可以认为跟在这个被确认报文段之后的报文段已经丢失。就前面的例子而言当A收到对于1号报文段的3个冗余ACK时它可以认为2号报文段已经丢失这时发送方A可以立即对2号报文执行重传这种技术通常称为快速重传。当然冗余ACK还被用在拥塞控制中 TCP流量控制 TCP提供流量控制服务来消除发送方发送速率太快使接收方缓存区溢出的可能性因此可以说流量控制是一个速度匹配服务匹配发送方的发送速率与接收方的读取速率TCP提供一种基于滑动窗口协议的流量控制机制 在通信过程中接收方根据自己接收缓存的大小动态地调整发送方的发送窗口大小这称为接收窗口rwnd即调整TCP报文段首部中的窗口字段值来限制发送方向网络注入报文的速率。同时发送方根据其对当前网络拥塞程序的估计而确定的窗口值这称为拥塞窗口cwnd其大小与网络的带宽、时延密切相关 传输层和数据链路层的流量控制的区别是传输层定义端到端用户之间的流量控制数据链路层定义两个中间的相邻结点的流量控制。另外数据链路层的滑动窗口协议的窗口大小不能动态变化传输层的则可以动态变化 TCP拥塞控制 防止过多的数据注入网络保证网络中的路由器或链路不致过载。出现拥塞时端点并不了解拥塞发生的细节对通信连接的端点来说拥塞往往表现为通信时延的增加。 拥塞控制和流量控制的区别 拥塞控制是让网络能够现有的网络负荷是一个全局性的过程涉及所有的主机、所有的路由器以及与降低网络传输性能有关的所有因素。流量控制往往是指点对点的通信量的控制是个端到端的问题接受端控制发送端它所要做的是抑制发送端发送数据的速率以便使接受端来得及接收。 因特网建议标准定义了进行拥塞控制的4种算法慢开始、 拥塞避免、 快重传、 快恢复 发送方在确定发送报文段的速率时既要根据接收方的接收能力又要从全局考虑不要使网络发生拥塞。因此TCP协议要求发送放维护以下两个窗口 接收窗口rwnd 接收方根据目前接收缓存大小所允诺的最新窗口值反映接收方的容量。由接收方根据其放在TCP报文的首部的窗口字段通知发送方 拥塞窗口cwnd 发送方根据自己估算的网络拥塞程度而设置的窗口值反映网络的当前容量。只要网络未出现拥塞拥塞窗口就再增大一些以便把更多的分组发送出去。但只要出现网络拥塞拥塞窗口就减小一些以减少注入网络的分组数 发送窗口的上限值应取接收窗口rwnd和拥塞窗口cwnd中较小的一个即 发送窗口的上限值 min[rwnd, cwnd] 接收窗口的大小可根据TCP报文首部的窗口字段通知发送方 这里假设接收方总是有足够大的缓存空间因而发送窗口大小由网络的拥塞程度决定也就是说可以将发送窗口等同为拥塞窗口 慢开始和拥塞避免 慢开始算法 在TCP刚刚连接好并开始发送TCP报文段时先令拥塞窗口cwnd1即一个最大报文段长度MSS。每收到一个对新报文段的确认后将cwnd加1即增大一个MSS。用这样的方法逐步增大发送放的cwnd可使分组注入网络的速率更加合理使用慢开始算法后每经过一个传输轮次即往返时延RTTcwnd就会加倍即cwnd的大小指数式增长。这样慢开始一直把cwnd增大到一个规定的慢开始门限ssthresh然后改用拥塞避免算法 拥塞避免算法 思路是让拥塞窗口cwnd缓慢增大具体做法是每经过一个往返时延RTT就把发送方的拥塞窗口cwnd加1而不是加倍使拥塞窗口cwnd按线性规律缓慢增长即加法增大这比慢开始算法的拥塞增长速率要缓慢得多根据cwnd的大小执行不同的算法可以归纳 当cwnd ssthresh时使用慢开始算法当cwnd ssthresh时停止使用慢开始算法而改用拥塞避免算法当cwnd ssthresh时即可使用慢开始算法又可使用拥塞避免算法通常做法 网络拥塞的处理 无论是在慢开始阶段还是在拥塞避免阶段只要发送方判断网络出现拥塞未按时收到确认就要把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半但不能小于2。然后把拥塞窗口cwnd重新设置为1执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完 慢开始和拥塞避免算法的实现过程如下图 初始时拥塞窗口置为1即cwnd1慢开始门限置为16即ssthresh16 慢开始阶段cwnd的初值为1以后发送方每收到一个确认ACKcwnd值加1也即经过每个传输轮次RTTcwnd呈指数规律增大。当拥塞窗口cwnd增长到慢开始门限ssthresh时即当cwnd16就改用拥塞避免算法cwnd按线性规律增大 假定cwnd24时网络出现超时更新ssthresh值为12即变为超时时cwnd值的一半cwnd重置为1并执行慢开始算法当cwnd12时改为执行拥塞避免算法 在慢开始阶段若2cwnd ssthresh则下一个RTT后的cwnd等于ssthresh而不等于2cwnd即cwnd不能跃过ssthresh值。 如上图第16个轮次时cwnd8ssthresh12第17个轮次时cwdn12而不等于16 在慢开始和拥塞避免算法中使用了乘法减小和加法增大方法 乘法减小指不论是在慢开始阶段还是在拥塞避免阶段只要出现超时即很可能出现了网络拥塞就把慢开始门限值ssthresh设置为当前拥塞窗口的一般并执行慢开始算法。当网络频繁出现拥塞时ssthresh值就下降得很快以大大减少注入网络的分组数。加法增大指执行拥塞避免算法后在收到对所有报文段的确认后即经过一个RTT就把拥塞窗口cwnd增加一个MSS大小使拥塞窗口缓慢增大以防止网络过早出现拥塞 拥塞避免并不能完全避免拥塞。利用以上措施要完全避免网络拥塞是不可能的。拥塞避免是指在拥塞避免阶段把拥塞窗口控制为按线性规律增大使网络比较不容易出现拥塞 快重传和快恢复 对慢开始和拥塞避免算法的改进 快重传 快重传技术使用了冗余ACK来检测丢包的发生。同样冗余ACK也用于网络拥塞的检测丢了包当然意味着网络可能出现了拥塞。快重传并非取消重传计时器而是在某些情况下可更早地重传丢失的报文段当发送方连续收到三个重复的ACK报文时直接重传对方尚未收到的报文段而不必等待那个报文段设置的重传计时器超时 快恢复 原理 当发送方连续收到三个冗余ACK即重复确认时执行乘法减小算法把慢开始门限ssthresh设置为此时发送方cwnd的一半。这是为了预防网络发生拥塞。但发送方现在认为网络很可能没有发生严重拥塞否则就不会有几个报文段连续到达接收方也不会连续收到重复确认。因此与慢开始不同之处是它把cwnd值设置为慢开始门限ssthresh改变后的数值然后开始执行拥塞避免算法加法增大使拥塞窗口缓慢地线性增大 由于跳过了拥塞窗口cwnd从1起始的慢开始过程所以被称为快恢复。快恢复算法实现过程如下图作为比对虚线为慢开始的处理过程 在流量控制中发送方发送数据的量由接收方决定而在拥塞控制中则由发送方自己通过检测网络状况来决定。实际上慢开始、拥塞避免、快重传、快恢复几种算法是同时应用在拥塞控制机制中。四种算法使用的总结 在TCP连接建立和网络出现超时时采用慢开始和拥塞避免算法当发送方接收到冗余ACK时采用快重传和快恢复算法 接收方的缓存空间总是有限的。因此发送方发送窗口的实际大小由流量控制和拥塞控制共同决定。当题目中同时出现接收窗口rwnd和拥塞窗口cwnd时发送方实际的发送窗口大小是由rwnd和cwnd中较小的那一个确定的 应用层 网络应用模型 客户/服务器模型 在Client/ServerC/S模型中有一个总是打开的主机称为服务器它服务于许多来自其他称为客户机的主机请求其工作流程如下 服务器处于接收请求的状态客户机发出服务请求并等待接收结果服务器收到请求后分析请求进行必要的处理得到结果并发送给客户机 客户/服务器模型的主要特点还有 网络中各计算机的地位不平等服务器可以通过对用户权限的限制来达到管理客户机的目的使它们不能随意存储/删除数据或进行其他受限的网络活动。整个网络的管理工作由少数服务器担当因此网络的管理非常集中和方便客户机相互之间不直接通信可扩展性不佳。受服务器硬件和网络带宽的限制服务器支持的客户机数有限 P2P模型 P2P模型的思想是整个网络中的传输内容不再被保存在中心服务器上每个结点都同时具有下载、上传功能其权利和义务都是大体对等的在P2P模型中各计算机没有固定的客户和服务器划分。相反任意一对计算机——称为对等方Peer直接相互通信。与C/S模型相比P2P模型的优点主要体现如下 减轻了服务器的计算压力消除了对某个服务器的完全依赖可以将任务分配到各个结点上因此大大提高了系统效率和资源利用率 例如播放流媒体时对服务器的压力过大而通过P2P模型可以利用大量的客户机来提供服务 多个客户机之间可以直接共享文档可扩展性好传统服务器有响应和带宽的限制因此只能接受一定数量的请求网络健壮性强单个结点的失效不会影响其他部分的结点 P2P的缺点 在获取服务的同时还要给其他结点提供服务因此会占用较多的内存影响整机速度 例如经常进行P2P下载还会对硬盘造成较大的损伤 域名系统DNS DNS系统采用客户/服务器模型其协议运行在UDP之上使用53号端口从概念上可将DNS分为3部分层次域名空间、域名服务器、解析器 层次域名空间 因特网采用层次树状结构的命名方法。任何一个连接到因特网的主机或路由器都有一个唯一的层次结构名称即域名Domain Name。域Domain是名字空间中一个可被管理的划分。域还能划分子域。每个域名都由标号序列组成而各标号之间用点隔开关于域名中的标号有以下几点需要注意 标号中的英文不区分大小写标号中除**连字符-**外不能使用其他的标点符号每个标号不超过63个字符多标号组成的完整域名最长不超过255个字符级别最低的域名写在最左边级别最高的顶级域名写在最右边 顶级域名Top Level DomainTLD分为如下三类 国家顶级域名nTLD 国家和某些地区的域名 通用顶级域名gTLD 常见的有**.com**.net等 基础结构域名 这种顶级域名只有一个即arpa用于反向域名解析因此又称为反向域名 在域名系统中每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域并将这些子域委托给其他组织去管理 域名服务器 因特网的域名系统被设计成一个联机分布式的数据库系统并采用客户/服务器模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的一个服务器所负责管辖的或有权限的范围称为区不以域为单位DNS使用了大量的域名服务器它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射相反该映射分布在所有的DNS上。采用分布式设计的DNS是一个在因特网上实现分布式数据库的精彩范例。主要有4类域名服务器 根域名服务器 最高层次的域名服务器所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器不管是哪个本地域名服务器若要对因特网上任何一个域名进行解析只要自己无法解析就首先要求助于根域名服务器。因特网上有13个根域名服务器需要注意的是根域名服务器用来管辖顶级域通常它并不直接把带查询的域名直接转换成IP地址而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询 顶级域名服务器 负责管理在该顶级域名服务器注册的所有二级域名收到DNS查询请求时就给出相应的回答可能是最后的结果也可能是下一步应当查找的域名服务器的IP地址 授权域名服务器 权限域名服务器 每台主机都必须在授权域名服务器登记。为了更可靠地工作一台主机最好至少有两个授权域名服务器。实际上许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址 本地域名服务器 本地域名服务器对域名系统非常重要。每个因特网服务提供者ISP或一所大学都可以拥有一个本地域名服务器。当一台主机发出DNS查询请求时这个查询请求报文就发送给该主机的本地域名服务器 域名解析过程 把域名映射成为IP地址或把IP地址映射成为域名的过程前者称为正向解析后者称为反向解析。当客户端需要域名解析时通过本机的DNS客户端构造一个DNS请求报文以UDP数据报方式发往本地域名服务器 域名解析有两种方式递归查询和递归与迭代相结合的查询 递归查询由于该方法给根域名服务器造成的负载过大所以在实际中几乎不使用 递归与迭代相结合该方式分为两部分 主机向本地域名服务器的查询采用的是递归查询本地域名服务器向根域名服务器的查询采用迭代查询 如下图 为了提高DNS的查询效率并减少因特网上的DNS查询报文数量在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时它能将该DNS信息缓存在高速缓存中。 文件传输协议FTP FTP的工作原理 FTP采用客户/服务器的工作方式使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP服务器进程由两大部分组成 主进程负责接收新的请求若干从属进程负责处理单个请求 FTP工作步骤如下 打开熟知端口21控制端口使客户进程能够连接上等待客户进程发连接请求启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行从属进程对客户进程的请求处理完毕后立即终止回到等待状态继续接收其他客户进程的请求 FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来服务器必须追踪用户在远程目录树上的当前位置。 控制连接与数据连接 FTP在工作时使用两个并行的TCP连接一个是控制连接端口号21一个是数据连接端口号20。可使协议更加简单和更容易实现控制连接 服务器监听21号端口等待客户连接建立在这个端口上的连接称为控制连接控制连接用来传输控制信息如连接请求、传送请求等并且控制信息都以7位ASCII格式传送。FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程但控制连接并不用来传送文件。在传输文件时还可以使用控制连接如客户在传输中途发一个中止传输的命令因此控制连接在整个会话期间一直保持打开状态 数据连接 服务器端的控制进程在接收到FTP客户发来的文件传输请求后就创建数据传送进程和数据连接。数据连接用来连接客户端和服务器端的数据传送进程数据传送进程实际完成文件的传送在传送完毕后关闭数据传送连接并结束运行数据连接有两种传输模式主动模式PORT和被动模式PASV PORT模式的原理 客户端连接到服务器的21端口登陆成功后要读取数据时客户端随机开放一个端口并发送命令告知服务器服务器收到PORT命令和端口号后通过20端口和客户端开放的端口连接发送数据 PASV模式的原理 客户端要读取数据时发送PASV命令到服务器服务器在本地随机开放一个端口并告知客户端客户端再连接到服务器开放的端口进行数据传输。 用PORT模式还是PASV模式选择权在客户端。简单概述主动模式是服务器连接到客户端的端口。被动模式是客户端连接到服务器的端口。 因为FTP使用了一个分离的控制连接所以也称FTP的控制信息是带外Out-of-band传送的。使用FTP时若要修改服务器上的文件则需要先将此文件传送到本地主机然后再将修改后的文件副本传送到原服务器来回传送耗费很多时间。 **网络文件系统NFS**采用另一种思路它允许进程打开一个远程文件并能在该文件的某个特定位置开始读写数据。这样NFS可使用户复制一个大文件中的一个很小的片段而不需要复制整个大文件 电子邮件 电子邮件系统的组成结构 一个电子邮件系统应具有三个最主要的组成构件即用户代理User Agent、邮件服务器、电子邮件使用的协议 用户代理UA 用户与电子邮件系统的接口。用户代理向用户提供一个接口来发送、接收邮件用户代理至少应当具有撰写、显示、邮件处理的功能。通常情况下用户代理就是一个运行在PC上的程序电子邮件客户端 邮件服务器 功能是发送、接收邮件。采用客户/服务器方式工作 邮件发送协议和读取协议 用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件 SMTP和POP3 SMTP 简单邮件传输协议Simple Mail Transfer ProtocolSMTP 是一种提供可靠且有效的电子邮件传输的协议它控制两个相互通信的SMTP进程交换信息。由于SMTP使用客户/服务器方式因此负责发送邮件的SMTP进程就是SMTP客户而负责接收邮件的SMTP进程就是SMTP服务器。SMTP用的是TCP连接端口号为25。SMTP通信有以下三个阶段 连接建立 发件人的邮件发送到发送方邮件服务器的邮件缓存后SMTP客户就每隔一段时间对邮件缓存扫描一次。发现有邮件就使用SMTP的熟知端口号25与接收方邮件服务器的SMTP服务器建立TCP连接。连接建立后接收方SMTP服务器发出220 Service ready服务就绪。然后SMTP客户向SMTP服务器发送HELO命令附上发送方的主机名SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立而不管它们相隔多远不管在传送过程中要经过多少个路由器。当接受方邮件服务器因故障暂时不能建立连接时发送方的邮件服务器只能等待一段时间后再次尝试连接 邮件传送 连接建立后就可开始传送邮件。邮件的传送从MAIL命令开始MAIL命令后面有发件人的地址。若SMTP服务器已准备好接收邮件则回答250 OK。接着SMTP客户端发送一个活多个RCPT命令格式为REPT TO:收件人地址。每发送一个REPT命令都应有相应的信息从SMTP服务器返回如250 OK或550 No such user here无此用户RCPT命令的作用是先弄清接收方系统是否已做好接收邮件的准备然后才发送邮件以便不至于发送了很长的邮件后才知道地址错误进而避免浪费通信资源获得OK的回答后客户端就使用DATA命令表示要开始传输邮件的内容。正常情况下SMTP服务器回复的信息是354 Start mail input; end with 。 连接释放 邮件发送完毕后SMTP客户应发送QUIT命令。SMTP服务器返回的信息是221服务关闭表示SMTP同意释放TCP连接。邮件传送的全部过程就此结束 POP3和IMAP 邮局协议Post Office ProtocolPOP是一个非常简单但功能有限的邮件读取协议现在使用的是它的第3个版本POP3。POP3采用的是**Pull拉**的通信方式当用户读取邮件时用户代理向邮件服务器发出请求拉取用户邮箱中的邮件POP也使用客户/服务器的工作方式在传输层使用TCP端口号为110。接收方的用户代理上必须运行POP客户程序而接收方的邮件服务器上则运行POP服务器程序。POP有两种工作方式下载并保留和下载并删除。因特网报文存取协议IMAP也是邮件读取协议比POP复杂很多IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件、在远程文件夹中查询邮件等联机命令为此IMAP服务器维护了会话用户的状态信息。 万维网WWW WWW的概念与组成结构 万维网的内核部分是由三个标准构成的 统一资源定位符URL 负责标识万维网上的各种文档并使每个文档具有唯一的标识符URL 超文本传输协议HTTP 一个应用层协议它使用TCP连接进行可靠的传输HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议 超文本标记语言HTML 一种文档结构的标记语言它使用一些约定的标记对页面上的各种信息进行描述 超文本传输协议HTTP HTTP操作过程 用户单击鼠标后所发生的事件按顺序如下 浏览器分析链接指向页面的URL浏览器向DNS请求解析URL的IP地址域名系统DNS解析出清华大学服务器的IP地址浏览器与该服务器建立TCP连接默认端口号为80浏览器发出HTTP请求服务器通过HTTP响应把文件index.htm发送给浏览器释放TCP连接浏览器解释文件index.htm并将web页显示给用户 HTTP的报文结构
http://www.zqtcl.cn/news/87199/

相关文章:

  • 企业网站的栏目设置网站做的一样算侵权吗
  • 怎么做网站百度经验wordpress 在线人数
  • 手机网站开发要多久北航做网站公司
  • 有哪些做互联网项目的导航网站h5开发是什么意思
  • 网站建设与网页制作实训报告制作人漫画
  • 东莞东城网站建设公司济南seo全网营销
  • 网站建设公司怎么宣传网站ftp用户名和密码
  • 上海高端网站定制网站建设 南通
  • 怎么找企业做网站做任务给佣金的网站有哪些
  • 网站开发多线程开发和拓者设计吧类似的网站
  • 做婚纱摄影网站wordpress后台框架
  • 扶风做企业网站免费域名空间申请
  • 网站速度提升赣州企业网络搭建
  • 苏州新区城乡建设网站驻马店网站制作
  • 上海学做网站昔阳做网站公司
  • 2015网站建设源码新手怎么学电商运营
  • wordpress克隆他人的网站网站风格下载
  • 关于建设网站的报告网上注册公司流程及步骤
  • 做房地产公司网站的费用管理软件开发平台
  • 济南建设网站公司哪个好seo内部优化包括哪些内容
  • 网站安全检测在线建设设计公司网站
  • 属于网页制作工具宁波做seo推广企业
  • 织梦绿色企业网站模板 苗木企业网站源码 dedecms5.7内核口腔网站建设
  • 英国网站后缀有声直播网站建设
  • 建网站工具微信网页版客户端
  • 前端网站页面模板下载我的家乡网页设计模板
  • 响应式网站代理网站建设外出考察报告
  • 自己做的网站被封了广州软件制作公司
  • 为什么我做的网站不是加密访问小江高端企业网站建设
  • 网站做支付需要准备什么条件大连网站运营制作方案