协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果所使用的协议不同,就无法实现通信。
协议可以分为很多种,每一种协议都明确地界定了它的行为规范。两台计算机之间必须能够支持相同的协议,并遵循相同的协议进行处理,这样才能实现相互通信。
协议三要素
语法:数据和控制信息的结构和格式
语义:控制信息的含义
同步:规定了信息交流的次序
1.2 OSI参考模型最初各家厂商的各种网络体系结构、各种协议之间并不相互兼容。即使是从物理层面上连接了两台异构的计算机,由于它们之间采用的网络体系结构不同,支持的协议不同,仍然无法实现正常的通信。
为了解决上述问题,ISO(International Organization for Standards,国际标准化组织。) 制定了一个国际标准OSI(Open Systems Interconnection,开放式通信系统互联参考模型。) ,对通信系统进行了标准化。
OSI参考模型。这一模型将通信协议中必要的功能分成了7层。通过这些分层,使得那些比较复杂的网络协议更加简单化。在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”。同一层之间的交互所遵循的约定叫做“协议”。
表1-1 OSI参考模型
应用层 | 提供用户接口,特指网络应用程序,能产生网络流量的应用程序。 | |
表示层 | 数据语法转换、语法表示、数据加密和解密、数据压缩和解压。使用何种编码方式,比如要传输的数据使用ASCII编码,Unicode编码还是二进制文件,发送端和接收端程序必须使用相同的编码方式,才能正确显示,否则就产生乱码。 | |
会话层 | 会话层允许不同机器上的用户之间建立会话。会话就是指各种服务,包括对话控制(记录该由谁来传递数据)、令牌管理(防止多方同时执行同一关键操作)、同步功能(在传输过程中设置检查点,以便在系统崩溃后还能在检查点上继续运行)。 | |
传输层 | 负责在通信的两个计算机之间建立连接,实现可靠的或不可靠的数据通信,能够实现发送端和接收端的丢包重传,差错控制和流量/拥塞控制。 | 报文或段 |
网络层 | 路由器查看数据包目标IP地址,根据路由表为数据包选择到达目的主机的最优路径;路由选择和中继,激活和终止网络连接,链路复用,差错检测和恢复,流量/拥塞控制。路由表中的条目可以人工添加(静态路由)也可以动态生成(动态路由)。 | 数据分组或数据报 |
数据链路层 | 不同的网络类型,发送数据的机制不同,数据链路层就是将数据包封装成能够在不同网络传输的帧,能够进行差错检查,但不纠错,检测出错误丢掉该帧。流量控制。 | 数据帧 |
物理层 | 该层规定了网络设备接口标准、电压标准。尽可能的通过频分复用、时分复用技术在通信链路上更快的传输数据。 | 比特流 |
图1.1 OSI参考模型各层分工
分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统。因此,可以构造一个扩展性和灵活性都比较强的系统。此外,通过分层能够细分通信功能,更易于单独实现每个分层的协议,并界定各个分层的具体责任和义务。这些都属于分层的优点。
封装:数据在从高层向低层传送的过程中,每一层都要对接收到的原始数据添加必要的信息,通常是添加一个报头和报尾,这个过程称为封装。
图1.2 数据的封装
解封装:计算机在接收到数据帧后,需要去掉为了传输而添加的附加信息,这称为解封装,是上述封装操作的逆向过程。
图1.3 数据的解封装
1.3 TCP/IP协议OSI协议并没有得到普及,真正被广泛使用的是TCP/IP协议。
OSI | TCP/IP | TCP/IP协议栈 | 五层体系结构 |
应用层 | 应用层 | HTTP、FTP、SMTP、POP3、DNS等 | 应用层 |
表示层 | |||
会话层 | |||
传输层 | 传输层 | TCP UDP | 传输层 |
网络层 | 网际层 | ARP IP ICMP IGMP | 网络层 |
数据链路层 | 网络接口层 | 以太网 PPP 帧中继 X.25 | 数据链路层 |
物理层 | 物理层 |
图1.4 数据包首部的层次化
1.4电路交换和分组交换1.4.1电路交换
图1.5 电话的不同连接方法
若N部电话要两两相连,就需要需 N(N – 1)/2 对电线。
1、建立连接(占用通信资源)
2、通话(一直占用通信资源)
3、释放连接(归还通信资源)
在通话的全部时间内,通话的两个用户始终占用端到端的通信资源。
1.4.2 分组交换分组交换采用存储转发技术,把一个报文划分为几个分组后再进行传送。
我们把要发送的整块数据称为一个报文。在发送报文之前,先把较长的报文划分成为一个个更小的等长数据段,在每一个数据段前面,加上一些由必要的控制信息组成的首部后,就构成了一个分组(又称为“包”),“包”是在互联网中传送的数据单元。
路由器用来转发分组,即进行分组交换。路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。
报文交换的典型例子“电报交换”,目前已很少使用。
表1-2 数据交换方式及其特性
数据交换方式 | 定义 | 特点 | |
电路交换 | 通信前主呼叫和被呼叫之间建立连接,之后建立通信,期间独占整个链路,结束通信时释放链路,电路交换时面向连接的。 | ||
报文交换 | 结点把要发送的信息组织成一个报文(数据包),该报文中含有目标结点的地址,完整的报文在网络中一站一站地向前传送。每一个结点接收整个报文并检查目标结点地址,然后根据网络中的拥塞情况,在适当的时候转发到下一个结点。 | ||
分组交换(确定最大报文长度) | 数据报 | 数据报服务类似于邮政系统的信件投递。每个分组都携带完整的源和目的结点的地址信息,独立地进行传输。每当经过一个中间结点时,都要根据目标地址和网络当前的状态,按一定的路由选择算法选择一条最佳的输出线,直至传输到目的结点。 | 优点:不需要建立连接 缺点:每个分组独立选路,不完全走一条路;可靠性差。 |
虚电路 | 在虚电路服务方式中,为了进行数据的传输,网络的源主机和目的主机之间要先建立一条逻辑通道,所有报文沿着逻辑通道传输数据。在传输完毕后,还要将这条虚电路释放。虚电路的服务方式是网络层向传输层提供的一种使所有分组按顺序到达目的主机的可靠的数据传输方式。虽然用户感觉到好像占用了一条端到端的物理线路,但实际上并没有真正地占用,即这一条线路不是专用的,所以称之为“虚电路”。典型应用有X.25、帧中继、ATM。 | 优点:相对数据报可以进行流控和差错控制,提高了可靠性,适合远程控制和文件传送。 缺点:不如数据报方式灵活。 | |
信元交换 | 信元交换又叫ATM(异步传输模式),是一种面向连接的快速分组交换技术,它是通过建立虚电路来进行数据传输的。信元交换技术是一种快速分组交换技术,它结合了电路交换技术延迟小和分组交换技术灵活的优点。信元是固定长度的分组,ATM采用信元交换技术,其信元长度为53字节,其中信元头为5字节,数据为48字节。 | 结合了电路交换技术延迟小和分组交换技术灵活的优点。 |
每秒钟传输的比特数量,单位为b/s或bit/s或bps。
一个二进制位为1bit, 1字节(B)=8比特(bit)
1.5.2 带宽网络通信线路传输数据的能力,即最高速率。
1.5.3 吞吐量即在单位时间内通过某个网络或接口的数据量,包括全部上传和下载的流量。
计算机的网卡如果连接交换机,网卡就可以工作在全双工模式,即能够同时接收和发送数据。假设网卡工作在100M全双工模式,那么网卡的最大吞吐量为200Mb/s。
而计算机的网卡连接的是集线器,那么网卡就只能工作在半双工模式,即不能同时发送和接收数据。假设网卡工作在100M半双工模式,则网卡的最大吞吐量为100Mb/s。
1.5.4 时延是指数据(一个数据包或bit)从网络的一端传送到另一端所需要的时间。
总时延=发送时延+传播时延+排队时延+处理时延
1、发送时延:是主机或路由器发送数据帧所需的时间,也就是从发送数据帧的第一个比特开始,到该帧最后一个比特发送完毕所需的时间。
这里的发送速率就是网卡的带宽。
注意:光纤支持更快的发送时延,光纤的传播时延并不比铜线快,光纤的传播速度20.5万公里/秒,铜线23.1万公里/秒。铜线不支持特别高的发送带宽,而光纤可以。
我们通常所说的光纤比铜线网速快,是指光纤可以以很快的速率来发送码元,并且在接收端能够识别出来,如果以很快的速率在铜线中发送码元,那么接收端很难识别出来。
2、传播时延:是电磁波在信道中传播一定的距离需要花费的时间。
电磁波在自由空间的传播速度是光速,即3.0×105km/s
电磁波在铜线电缆中的传播速度约为2.38×105km/s
电磁波在光纤中的传播速度约为2.0×105km/s
1s(秒)=1000ms(毫秒)=1000000us(微秒)
电磁波在指定介质的传播速率是固定的,信道长度固定了,传播时延也就固定了。
网卡的不同带宽,改变的只是发送时延,而不是传播时延。
3、排队时延:分组在经过网络传输时,要经过许多的路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发,这就产生了排队时延。
排队时延的长度往往取决于网络当时的通信量,当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。
4、处理时延:路由器或主机在收到数据包时,要花费一定时间进行处理,例如分析数据包首部、进行首部差错检验,查找路由表为数据包选定转发出口,这就产生了处理时延。
1.5.5 时延带宽积把链路上的传播时延和带宽相乘,就会得到时延带宽积。这对我们以后计算以太网的最短帧非常有帮助。
时延带宽积=传播时延×带宽
这个指标可以用来计算通信线路上有多少比特。
例:A端到B端是1km的铜线路,电磁波在铜线中的传播速率是2.38×105km/s,在1km长的铜线传播时延大约为4.3×10-6s,A端网卡带宽10Mb/s,A端向B端发送数据时,问链路上有多少比特?
时延带宽积=4.3×10-6s × 10 × 106b/s =43bit
1.5.6 往返时间RTT它表示从发送端发送数据开始,到发送端接收到来自接收端的确认(发送端收到后立即发送确认),总共经历的时间。
在windows中使用ping命令可以显示往返时间。往返时间越短说明访问网站的速度越快。
1.5.7 利用率是指网络有百分之多少的时间是被利用的(有数据通过),没有数据通过的网络利用率为0。网络利用率越高,数据分组在路由器和交换机处理时就需要排队等待,因此时延也就越大。
U:是网络的利用率,数值在 0 到 1 之间。
D0 :表示网络空闲时的时延
D:表示网络当前的时延
当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此,一些拥有较大主干网的ISP通常控制他们的信道利用率不超过50%。如果超过了就要准备扩容,以增大线路的带宽。