一、计算机网络的定义
什么是网络?
一群具有独立功能的计算机组成的系统通过通信设备及传输媒体互连起来,在通信软件支持下,实现资源共享、信息交换的整个系统
产生计算机网络的基本条件:通信技术与计算机技术的结合
二、计算机网络的产生与发展
1954年 主机-终端的通信网络 第一代计算机网络
以单个主机为中心、面向终端设备的网络结构。系统中除主计算机具有独立的数据处理功能外,系统中所连接的终端设备均无独立处理数据的功能
1969年 主机-主机的通信网络 ARPANET网 第二代计算机网络
以分组交换网为中心的计算机网络,网络中的通信双方都是具有自主处理能力的计算机,功能以资源共享为主
分组交换是将数据报文分成多个称为分组(packet)的片段,每个分组携带地址信息独立传输,通过通信结点处理机进行存储转发,每个通信结点处理机根据分组携带的目的地址,运用路由算法选择转发路径,逐点完成从源结点到目的结点的分组转发。
1983年 体系结构标准化的网络 OSI模型 第三代计算机网络
开放系统互联参考模型
INTERNET的建立 第四代计算机网络
三、计算机网络的组成
从网络逻辑功能角度来看,可以将计算机网络分为通信子网和资源子网两部分
网络系统以通信子网为中心,通信子网处于网络的内层,由网络中的通信设备、通信线路和只用作信息交换的计算机组成,负责完成网络数据传输、转发,处理任务,
当前的通信子网一般由路由器、交换机和通信线路组成
资源子网处于网络的外围,有主机系统,终端,终端控制器,外设,各种软件资源与信息资源组成,负责全网的数据处理业务,向网络用户提供各种网络资源和网络服务。
四、计算机网络的功能
数据通信:实现计算机与计算机之间信息的交换
资源共享:共享硬件、软件及数据资源,从而提供资源的利用率
提高计算机的可靠性:通过网络设置使计算机互为后备机,防止服务器故障导致网络无法进行
易于进行分布式处理:将多台计算机练成具有高性能的计算机系统,以共同完成一个复杂的任务
五、计算机网络的分类
1、按覆盖地理范围进行分类
局域网: IEEE802系列标准
城域网: 多用作骨干网
广域网:
因特网:
2、按网络的交换方式进行分类
电路交换网:在用户开始通信前,先声请建立一条从发送端到接收端的物理信道,并且在双方通信期间始终占用该信道
报文(包)交换网:把要发送的数据及目录地址包含在一个完整的报文内,报文的长度不受限制。报文交换采用存储-转发原理,每个中间节点要为途经的报文选择适当的路径,使其能最终到达目的端
分组交换网:在通信前,发送端先把要发送的数据划分为一个个等长的单位(即分组),这些分组逐个由各中间节点采用存储-转发方式进行传输,最终到达目的端。
3、计算机网络的拓扑结构
总线型拓扑结构:网络中所有的节点都连接在一条开放的通信线路上
环型拓扑结构:网络中所有节点都连接在一条首尾连接在一起的封闭的通信线路上
网络路径选择和网络组建简单,投资成本低
但是传输速度慢,效率低,扩展性差,维护困难
星型拓扑结构:网络中所有节点通过各自的通行线路连接到同一个中心节点设备上
节点扩展、移动方便,网络传输数据快,维护容易
中心节点工作负重,广播传输影响网络性能
树型拓扑结构:一种类似于总线拓扑的局域网拓扑。树型网络可以包含分支,每个分支又可包含多个节点。在树型拓扑中,从一个节点发出的传输信息要传播到物理介质的全长,并被所有其他站点接收
网状型拓扑结构:网状拓扑结构主要指各节点通过传输线互联连接起来,并且每一个节点至少与其他两个节点相连
混合型拓扑结构:
六、计算机网络体系结构
计算机网络体系结构是一个分层次的模块式结构。
从宏观角度着重剖析了它们之间的联系,数据通信原理,各层的数据传输单元,各层数据封装原理,以及共同的各层主要功能,各层主要功能实现原理、主要通信协议,以及相关的计算机网络基础知识。
相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。
“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
网络体系结构的设计考虑
层次之间的先后次序
任务是按照什么先后顺序来完成
层次之间的通信接口
任务的每个步骤之间如何协调
网络体系结构分层的好处
促进标准化
各层相互独立,技术升级和扩展灵活性好
便于方案设计和维护
1、OSI七层模型
开放系统互联基本参考模型 OSIRM 简称OSI
开放:非独家垄断
模型:抽象概念
ISO标准:所谓的七层协议的体系结构
开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。
建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能使就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
OSI七层模型是一个理论模型,实际应用则千变万化,因此更多把它作为分析、评判各种网络技术的依据;对大多数应用来说,只将它的协议族(即协议堆栈)与七层模型作大致的对应,看看实际用到的特定协议是属于七层中某个子层,还是包括了上下多层的功能。
会话层
会话层(Session Layer)是OSI模型的第5层,是用户应用程序和网络之间的接口,
主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
用户可以按照半双工、单工和全双工的方式建立会话。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC(介质访问控制子层)地址或网络层的逻辑地址不同,它们是为用户专门设计的,更便于用户记忆。域名(DN)就是一种网络上使用的远程地址例如:www.3721.com就是一个域名。会话层的具体功能如下:
会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。
会话流量控制:提供会话流量控制和交叉会话功能。
寻址:使用远程地址建立会话连接。l
出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。
表示层
表示层(Presentation Layer)是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。表示层的具体功能如下:
数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。
应用层
应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。应用层的主要功能如下:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。
OSI7层模型的小结
由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定。
在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。
TCP/IP分层模型
TCP/IP协议
TCP/IP协议体系结构是专门针对使用TCP/IP协议簇的广域计算机网络而开发的,是OSI/RM的改进版本
非国际标准
事实上的国际标准
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。TCP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
TCP/IP分层模型的四个协议层分别完成以下的功能:
第一层:网络接口层
包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
第二层:网间层
对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
第三层:传输层
对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
第四层:应用层
对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等
广泛建议的参考模型
局域网体系结构
仅包括了OSI/RM的最低两层(“物理层”和“数据链路层”)。
其中“数据链路层”又分为“LLC子层”和“MAC子层”。
五层体系结构
应用层(application layer)
直接为用户的应用进程提供服务
传输层(transport layer)
负责向两个主机中进程之间的通信提供服务
网络层(network layer)
负责为分组交换网上的不同主机提供通信服务
数据链路层(data link layer)
将源自网络层来的数据可靠地传输到相邻节点的目标机网络层
物理层(physical layer)
为数据端设备提供传送数据通路、传输数据
OSI/RM和TCP/IP协议体系结构的比较
相同之处
层次结构划分思想相同
总体层次结构相似
核心组成一样
不同之处
适用范围不同
层次结构不同
支持的网络通信模式不同
所包括的通信协议不同
网络体系结构的数据通信原理
发送端是把通信连接建立指令和用户应用数据从上层向下层传输的,直到最低的物理层;而接收端是把通信连接建立指令和用户应用数据从下层(从最低的物理层开始)向上层传输,直到与发送端发起通信的对等层。
网络体系结构的对等会话原理
在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。
发送端数据要自上向下逐层(物理层除外)封装对应层的协议头(或尾),接收端数据又将自下向上逐层解封装上层的协议头(或尾)
各层上传输的数据格式
对等层之间传送的数据单位称为PDU(协议数据单元)
物理层:以最原始的比特流格式传输,其PDU为比特
数据链路层:传输的单位是帧,一个帧包括多个比特,但一个帧的大小必须是一个整数字节。不同协议的帧大小也不一样。
网络层:传输的单位是分组(或者是包),一个分组可以包含多个帧,分组的大小也要根据不同协议而定。
传输层:在TCP/IP协议体系当中,TCP是以数据段为单位进行传输,UDP是以数据报为单位进行传输
会话层、表示层、应用层:以具体的数据报文为单位进行传输
协议头和协议尾的封装
在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。
网络体系结构中的通信协议
网络通信协议(也称“规程”)是网络通信的基础,是实现各种网络通信功能,是约束通信双方在利用某协议进行通信时必须遵从的通信规则和约定的“软件系统”。
通信协议既可以是由一些国际标准组织(如ISO、IEEE、IEC之类的)颁布的通用标准类协议,也可以是一些企业自己开发并在自己的产品使用的私有协议。如:TCP、IP、其他思科私有协议等
网络通信协议的三要素
计算机网络通信协议的三个基本要素:语义、语法和同步。
“语义”可以理解为“语意”,是用来解决“做什么”的问题,也就是描述该通信协议具体用来完成什么功能。
“语法”是用来规定通信时的信息格式,包括数据及控制信息的格式、编码及信号电平等,是用来解决“如何做”的问题。
“同步”是用来解决“做的次序”问题,也就是通信双方要完成某项网络服务,必须依据什么样的流程,匹配什么样的速率、什么样的电平来进行。
物理层
在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。
物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
信息
计算机网络中进行交换的一切原始内容的统称
数据
数据是信息的具体表现形式,是许多信息通过某种方式组成的结合体
信号
数据在传输过程中电信号或者光信号的表现形式
信道
通信双方物理链路上通过物理层协议建立起来的数据传输通道
基带传输和频带传输
基带:
频带:
基带信号和频带信号
宽带
在信道中直接传输这种不经过调制的基带信号的方式称为“基带传输”
而在信道中传输经过调制后的频带信号的方式称之为“频带传输”。
传输模式:
同步传输
“同步传输”是一种以数据块为传输单位(通常是以“帧”为单位的),以相同的时钟参考所进行的数据传输模式,因此又称为“区块传输”。在同步传输中的数据块的开始和结尾部分都一个用于数据帧同步的特殊字符、特定的字节或特定的帧。
异步传输
“异步传输”是以字符为单位进行数据传输的。在发送每一字符代码的前面均加上一个“起始位”信号,以标记一个字符的开始;在一个字符代码的最后也加上一个“停止位”信号,以标记一个字符的结束。
数据通信方式
单工通信
只能有一个方向的通信而没有反方向的交互
半双工通信
通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)
全双工通信
通信的双方可以同时发送和接收信息
数据传输速率与信道带宽
比特率
比特率又称为信息传输速率,指单位时间内传输的二进制代码的有效位(bit)数,(注意这里是小写的b)
常用的单位有:bit/s(b/s或bps,每秒的比特数)、kbit/s(kb/s或kbps)Mbit/s(Mb/s或Mbps)。
传输带宽
带宽是指信道中每秒传输的最大信息量,也就是信道的最大数据传输速率,单位也是“位/秒” (b/s或 bps)
带宽是一种理想状态(不受任何干扰,没有任何衰减)下的信道传输速率。实际中其数据传输速率永远小于带宽值
信道多路复用技术
频分复用
按照信道频带宽度进行的信道复用方式
时分复用
是把整个数据通信过程划分成一个个小的时间段(称之为“时间片”),在这些时间片中又划分成多个更小的时间间隙(简称为“时隙”),每个时隙可以用于一用户信号的传输,这样就可以使得每一个时间片中一般总会有一个或多个时隙中有信号在里面传输,可以提高信道的利用率。
波分复用
是光信号中的“频分复用”技术,故又称“光波分复用”,是在单条光纤上同时发送多束不同波长激光的技术。
中继器:工作于物理层
集线器:同一个冲突域,本质上是总线型拓扑结构,工作于物理层
冲突域:
数据链路层
数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。
该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
数据链路层中与各种传输介质访问有关的问题都放在“MAC子层”来解决。
主要功能包括:数据帧的封装与卸装,帧的寻址和识别,帧的接收与发送,帧的差错控制、介质访问冲突控制等。
LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
数据包的帧封装原理
“网络层”传输的“包”,在“数据链路层”中传输的是“帧”。数据包到达“数据链路层”后加上“数据链路层”的协议头和协议尾就构成了一个数据帧。
在每个帧的前部加上一个“帧头部”,在帧的结尾处加上一个“帧尾部”,把“网络层”的数据包作为帧的数据部分,就构成了一个完整帧。帧头和帧尾就是作为帧的起始和结束标志,也就是帧边界。
比特流的帧组装及透明传输原理
发送端以比特方式一位位地传输到接收端的“物理层”,然后接收端的“物理层”把比特流向“数据链路层”传输,到达后又要将比特流封装成数据帧,这就是“数据链路层”的帧组装方式。
“透明传输”的目的就是要实现“帧同步”,就是要使接收端的“数据链路层”对从“物理层”传输而来的一串串比特流以“帧”为单位进行区分。
帧同步方法:
字节计数法
字符填充的首尾定界符法
比特填充的首尾定界符法
违法编码法
差错控制
数据在传输中可能会出现两方面问题:
有帧出现了错误
有帧丢失
差错控制功能:
差错检测
奇偶校验
循环冗余校验
差错纠正
反馈检测
计时器超时
自动重发请求
CSMA/CD:载波监听多路访问冲突检测
网桥:分割冲突域,工作于数据链路层
交换机:分割冲突域,工作于数据链路层
广播域:
二层交换原理
在二层交换机中也有用于数据帧转发的MAC地址与端口的映射表(也就是前面所说的CAM表),
列出了与哪个MAC地址连接的是哪个端口。仅在映射表中没有数据帧中对应的目的MAC地址才进行“泛洪”(广播)。
CAM表的建立
静态配置
动态学习
以太网MAC帧
MAC帧也被通常认为就是数据链路层帧,是在MAC子层实体间交换的协议数据单元(PDU)。
可以把所有以太网MAC帧的格式统一表示为下图所示,
前面介绍的LLC帧头和头部与上层来的数据报一起均封装在“数据”字段中。
生成数协议
IEEE 802.1d也就是我们通常所说的STP(Spanning Tree Protocol,生成树协议)。
其设计目的就是要使交换网络中没有二层环路。
理解“网络环路”
这里所说的“环路”是指“网络环路”。它又分为“二层环路”和“三层环路”两种。
“二层环路”是指在二层交换网络中,网络广播信息在网络中形成一个封闭的环路。如下图所示,SW1和SW2这两个交换机之间有两条链路连接。
STP是一个确保整个交换网络无环路拓扑结构的OSI二层协议。
它允许在网络设计中包括冗余链路,以提供在主链路失效时自动接替其工作的备份链路,同时又不会生成二层环路。必须避免二层环路,否则可能导致数据包在网络中循环传输。
STP是将两点之间存在的多条路经划分为“通信链路”和“备份链路”
并规定,数据的转发只在“通信链路”上进行,而“备份链路”只用于链路的侦听,只有在发现“通信链路径”失效时,才自动地将通信切换到“备份链路”上。
STP的不足和增强技术
二层数据网的收敛时间过长
网络拓扑容易引起全局波动
缺乏对现有多VLAN环境的支持
VLAN
VLAN(VirtualLocal Area Network,虚拟局域网)
划分vlan的目的
VLAN的主要用途就是把一个大的交换网络划分成多个小的交换网络。
缩小广播域,减小二层网络中广播流量对整个交换网络的影响。
理解vlan的形成和工作原理
同一物理交换机中的VLAN
同一个交换机中的各个VLAN可以理解为一个个虚拟交换机,如下图所示的物理交换机中就划分了五个VLAN,相当于有五个相互只有逻辑连接关系的虚拟交换机。
不同物理交换机中的VLAN
一个Vlan可以跨域多台物理交换机,即vlan的中继功能
网络层
网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层。它在下两层的基础上向资源子网提供服务。
其主要任务是:通过路由选择算法,为数据包或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
在实现网络层功能时,需要解决的主要问题如下:
寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。
每个包的包头都有源节点的IP地址,网络间的寻址就是通过IP地址进行的。
在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。
交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
“线路交换”
(Circuit Switching,也称“电路交换”)是最原始的数据交换方式,是在网络中利用可切换的物理通信线路直接连接通信双方所进行的一种数据交换方式。
线路交换”是面向连接的服务,两台计算机通过通信子网进行数据交换之前,首先要在通信子网中建立一个实际的物理线路连接(通常是由一种开关电路来控制)。
其最主要特点就是在进行数据交换前先需在一对用户之间建立起一条专用的数据通路,在整个数据传输过程中要经过线路建立、数据传输与线路释这三个阶
存储-转发”
是网络节点运用程序先将途径的数据流按传输单元(可以是报文或报文分组)接收并存储下来,一个数据单元接收完后根据相关的路由算法选择一条合适的路由路径将数据转发出去,在逻辑(不是物理线路)上为数据流提供了传输通路
报文交换
“报文交换”是指信息以“报文”(message,完整数据的一个信息段)为单位进行存储-转发的一种数据交换方式。在“报文交换”方式中,“报文”是网络中交换与传输的数据单元,即站点一次性要发送的数据块,包含了将要发送的完整的数据信息,其长短可能不一致,长度不限且可变。
分组交换
“数据报”服务
其中的分组称之为“数据报”(datagram)。它采用路由技术,在要转发的数据包头部加上源节点和目的节点的IP地址,然后通过路由技术一级级地把数据转发下去。
“虚电路”服务
所建立的虚拟通道称之为“虚电路”(Virtual Circuit,VC)。不依靠路由技术,而是在进行数据分组转前先在源节点和目的节点间的所有路由器间建立一条虚拟的通信通道,然后再把数据分组从这个虚拟通道中转发到目的节点。
虚电路分组交换
在虚电路分组交换中,分组被发送之前必须在发送方与接收方之间建立一条专用的逻辑连接(虚电路,VC),并且以一个在所有经过的节点或结点上均唯一的虚电路标识符(Virtual Circuit Identifier,VCI)进行标识。这条VC所代表的就是所有经过的节点和结点的串连。
整个虚电路交换过程分为以下三个阶段:虚电路建立、数据传输与虚电路释放阶段。
数据报分组交换
在“数据报”分组交换方式中,每个分组数据均被视为一个数据报(datagram),可以单独通过路由路径发送,无需先创建传送的虚电路,但网络节点要为每个数据报做独立的路由选择。
“数据报”就是在数据前部增加了源地址和目的地址信息字段的报文分段,可以做为独立的数据进行传输。因为每个数据报自身携带有足够的信息,其中包括源地址、目的地址、节点间的路由信息等,数据报的发送就是通过这些地址和路由信息来保证数据准确发送到目的节点的。
连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。
在TCP/IP体系结构的网际互连层,最为重要的协议就是IP协议簇。
目前主流的IPv4协议簇中包括了三个协议:
IP(InternetProtocol,因特网协议)、
ARP(Addre***esolution Protocol,地址解析协议)、
ICMP( Internet Control MessageProtocol,因特网控制报文协议)。
vIPv6协议簇中包括了四个协议:
IPv6、ICMPv6、ND(NeighborDiscovery,邻居发现)协议和MLD(MulticastListener Discover ,组播侦听器发现)协议。
IP协议基本功能
IP协议的主要功能就是把数据报在互联的网络上传送,通过将数据报在一个个IP模块间传送直到目的模块来达到目的。
IP协议主要有以下几方面功能:
寻址
数据报的封装
分段与重组
IPv4的不足
IPv4地址空间面临枯竭
骨干路由器维护的路由表表项数量过大
地址结构不合理
配置复杂
服务质量差
不支持端到端安全
IPv4数据报头部格式
一个IP数据报也包括“报头”和“数据”这两个组成部分,
其中“数据”部分就是来自传输层的完整数据段,而“报头”部分是为了正确传输数据报而增加的网络层IPv4协议信息,主要是源和目的网络的IP地址。
MTU:Maximum Translate Unit 最大传输单元
大多数设备默认1500B
IP首部格式:
最高位在左边,记为0 bit;最低位在右边,记为31 bit
版本:占4位(bit),指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使用IPV6。在进行通信时,通信双方的IP协议版本号必须一致,否则无法直接通信。
首部长度:占4位(bit),指IP报文头的长度。最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节(TCP/IP标准,DoubleWord),所以IP协议报文头的最大长度为60个字节,最短为上图所示的20个字节。
服务类型:占8位(bit),用来获得更好的服务。其中的前3位表示报文的优先级,后面的几位分别表示要求更低时延、更高的吞吐量、更高的可靠性、更低的路由代价等。对应位为1即有相应要求,为0则不要求。
总长度:16位(bit),指报文的总长度。注意这里的单位为字节,而不是4字节,所以一个IP报文的的最大长度为65535个字节。
标识(identification):该字段标记当前分片为第几个分片,在数据报重组时很有用。
标志(flag):该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片),后面是否还有分片(是否是最后一个分片)。
片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置。
生存时间:TTL(Time to Live)。该字段表明当前报文还能生存多久。每经过1ms或者一个网关,TTL的值自动减1,当生存时间为0时,报文将被认为目的主机不可到达而丢弃。使用过Ping命令的用户应该有印象,在windows中输入ping命令,在返回的结果中即有TTL的数值。
协议:该字段指出在上层(网络7层结构或TCP/IP的传输层)使用的协议,可能的协议有UDP、TCP、ICMP、IGMP、IGP等。
首部校验和:用于检验IP报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被污染或修改了。
源IP地址:32位(bit),4个字节,每一个字节为0~255之间的整数,及我们日常见到的IP地址格式。
目的IP地址:32位(bit),4个字节,每一个字节为0~255之间的整数,及我们日常见到的IP地址格式。
版本:
占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:
占4位,可表示的最大数值是15个单位(一个单位为 4 字节)因此IP 的首部长度的最大值是 60 字节
区分服务:
占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998 年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段
总长度:
占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
标识:
占16位,它是一个计数器,用来产生数据报的标识
数据包切片时,用来标识是同一个数据包,
标志(flag):
占3位,目前只有前两位有意义
MF
标志字段的最低位是 MF (More Fragment)
MF=1 表示后面“还有分片”。MF=0 表示最后一个分片
DF
标志字段中间的一位是 DF (Don't Fragment)
只有当 DF=0 时才允许分片
片偏移:
占13位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位
要求:每个分片的长度不超过1420个字节
生存时间:
占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,
TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
协议:
占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
IP数据报首部的可变部分
IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
实际上这些选项很少被使用。
IPv4数据报的封装与解封装
IP数据报的“帧封装”原理很简单,只需把来自网络层的整个IP数据报(包括“包头”部分和“数据”部分)当作数据链路层帧的“数据”(data)部分,然后在前面加上数据链路层对应的协议头即可。
首部检验和:
占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:
都各占 4 字节,分别记录源地址和目的地址
ARP
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
ARP是一个独立的三层协议
ARP报文在向数据链路层传输时是不需要经过IP协议的封装,而是直接生成自己的报文。
ARP映射表
IP地址与MAC地址的对应关系
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此***者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
RARP
地址解析协议是根据IP地址获取物理地址的协议,而反向地址转换协议(RARP)是局域网的物理机器从网关服务器的ARP表或者缓存上根据MAC地址请求IP地址的协议,其功能与地址解析协议相反。与ARP相比,RARP的工作流程也相反。首先是查询主机向网路送出一个RARP Request广播封包,向别的主机查询自己的IP地址。这时候网络上的RARP服务器就会将发送端的IP地址用RARP Reply封包回应给查询者,这样查询主机就获得自己的IP地址了。
ARP和RARP属于网络层还是数据链路层?
教材上把ARP协议划到网络层,是因为ARP协议属于TCP/IP协议簇。
在TCP/IP模型中,它所有定义的协议是在网际层上的。
再看按照OSI的标准,数据在传递时每层会加上自己的信息。当网络层的IP包进入链路层时,链路层通过ARP协议添加链路信息,而这不是网络层的功能。
所以有很多人说ARP是链路层的。
可以这样做,在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。
考试我们要按教材做,接网络层。
也有人说是2.5层,中间层
谈论ARP协议究竟属于第几层一点意义也没有,那完全是对IETF哲学的误解,是强行使用ISO的哲学研究IETF体系的生搬硬套。IETF哲学是很实际和洒脱的,不似ISO那样刻板。
知道ARP的作用和工作机制足矣。
ICMP(Internet Contral Message Protocol) Internet控制报文协议
IP协议簇中的一个子协议
用于在IP主机、路由器之间传递控制消息
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息
常见的ICMP报文
响应请求
ping操作 响应请求(类型字段为8),应答(类型字段为0)
目标不可到达、源抑制和超时报文(类型字段为3)
时间戳请求
路由
把信息从源节点通过网络传递到目的节点的行为
三层设备从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。
路由功能的实现是依靠路由器或三层交换机中的路由表进行的。
路由分类
静态路由
动态路由
路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。
网络层(三层)设备
路由器
三层交换机
三层交换机和路由器的主要区别
三层功能实现机制不同
适用环境不同
多协议支持能力不同(IP交换机)
路由能力不同
传输层
传输层与“数据链路层”的作用都是建立数据传输通道,两者在功能上存在许多相似之处。
但是传输层的功能主要体现在广域网网络应用中,可以把“数据链路层”当作局域网通信的数据传输通道,而“传输层”则是广域网中的数据传输通道。
OSI下3层的主要任务是数据通信,上3层的任务是数据处理。而传输层(Transport Layer)是OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。
该层的主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。
该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。综上,传输层的主要功能如下:
传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。
监控服务质量
IP协议的作用范围:提供主机之间的逻辑通信
TCP和UDP协议的作用范围:提供进程之间的逻辑通信
当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道
TCP最主要的特点
TCP是面向连接的运输层协议。
每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
TCP 提供可靠交付的服务。
TCP 提供全双工通信。
面向字节流。
TCP 把连接作为最基本的抽象。
每一条 TCP 连接有两个端点。
TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。
端口号拼接到(contatenated with) IP 地址即构成了套接字。
套接字 socket= (IP地址: 端口号)
每一条 TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
即:
TCP 连接 ::= {socket1, socket2}
= {(IP1: port1), (IP2: port2)}
TCP可靠通信的具体实现
TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口。
TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。
TCP 两端的四个窗口经常处于动态变化之中。
TCP连接的往返时间 RTT 也不是固定不变的。需使用特定的算法估算较为合理的重传时间
TCP的传输连接管理的三个阶段
TCP连接的建立都是采用客户/服务器方式。
主动发起连接建立的应用进程叫做客户(client)。
被动等待连接建立的应用进程叫做服务器(server)。
传输连接就有三个阶段,即:连接建立、数据传送和连接释放。
传输连接的管理就是使传输连接的建立和释放都能正常地进行。
连接建立过程中要解决以下三个问题:
要使每一方能够确知对方的存在。
要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.
其中,对于我们日常的分析有用的就是前面的五个字段。
它们的含义是:
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
PSH表示有 DATA数据传输,
RST表示连接重置。
其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,
如果只是单个的一个SYN,它表示的只是建立连接。
TCP的几次握手就是通过这样的ACK表现出来的。
但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。
RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。
一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。
PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。
TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的。
概念补充-TCP三次握手:
TCP(Transmission Control Protocol)传输控制协议
TCP是主机对传输层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) acknowledge number(确认号码)
第一次握手:主机A向B发出连接请求报文段,
其首部中发送位码为:同步位为syn=1,并随机产生序号seq=x,表明传送数据时的第一个数据字节的序号是x;并进入SYN_SEND状态,等待服务器确认;
主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到连接请求报文段后,如同意,则发回确认;
B在确认报文段中应使syn=1,ACK=1,其确认号ack=x+1,自己选择的序号seq=y的包;此时服务器进入SYN_RECV状态;
第三次握手:主机A收到此报文段后B给出确认,其ACK=1,确认好ack=y+1
A的TCP通知上层应用进程,连接已经建立
B的TCP收到主机A的确认后,也通知其上层应用进程;TCP连接已经建立
第一次挥手:数据传输结束后,通信的双方都可释放连接。
现在A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭 TCP连接。
A把连接释放报文段首部的 FIN = 1,其序号seq = u,等待B的确认。
第二次挥手:B发出确认,确认号ack = u +1,而这个报文段自己的序号 seq = v。
TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。
B 若发送数据,A 仍要接收。
第三次挥手:若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。
在确认报文段中 FIN=1,ACK= 1,确认号 ack=u +1,自己的序号 seq =w,。
第四次挥手: A 收到连接释放报文段后,必须发出确认。
在确认报文段中 ACK= 1,确认号 ack=w +1,
自己的序号 seq = u + 1。
超时重传机制
“超时重传”是TCP协议保证数据可靠性的一个重要机制
其原理是在发送某一个数据段以后就开启一个超时重传计时器(Retransmission Timer,RTT),如果在这个定时器时间内如果没有收到来自对方的某个数据段的确认,发送端则启动重传机制,重新发送对应的数据段,直到发送成功为止
TCP的拥塞控制
拥塞控制就是要控制“网络拥塞”的出现。当网络中各个部分输入的流量大于输出的流量时就会出现网络拥塞。
如果把整个网络有效处理负荷的能力称之为“吞吐量”(throughout),而把网络中发送端输入的负荷称之为“输入负荷”(input load),则理想情况下它们之间有如下图所示的线性关系(吞吐量是呈450斜线上升的)
慢启动
慢启动是为了避免出现网络拥塞而采取的一种TCP拥塞初期预防方案。
基本思想就是在TCP连接正式数据传输时,每次可发送的数据大小是逐渐增大的,也就是先发送一些小字节数的试探性数据,在收到这些数据段的确认后,再慢慢增大发送的数据量,直到到达了某个原先设定的极限值,也就是“慢启动阈值”
拥塞避免
当拥塞窗口大小再次达到大于或等于阀值时就启动“拥塞避免”拥塞解决方案。
它的基本思想是在拥塞窗口值第二次到达到了阀值时,让“拥塞窗口”大小每经过一个RTT时间仅值加1(即新的拥塞窗口只增加一个MSS大小,而不是原来的翻倍),使其以线性方式慢慢地增大,而不是继续像“慢启动”方案中那样以指数方式快速增大。
快速重传/快速恢复
“快速重传”方案的基本思想就是:当接收端收到一个不是按序到达的数据段,TCP实体迅速发送一个重复ACK数据段,而不用等到有数据需要发送时顺带发出确认;在重复收到三个重复ACK数据段后即认为对应“确认号”字段的数据段已经丢失,TCP不等重传定时器超时就重传看来已经丢失的数据段。
UDP
UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
UDP的特点
UDP 是无连接的,即发送数据之前不需要建立连接。
UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。
UDP 支持一对一、一对多、多对一和多对多的交互通信
UDP 的首部开销小,只有 8 个字节。