链路和数据链路的区别
链路(Link)是指的从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。
数据链路(Data Link)则是另一个概念,这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。
数据链路和帧
数据链路层把网络层交下来的数据封装成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在因特网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。数据链路层封装的帧,在物理层变成数字信号在链路上传输。
本章探讨数据链路层,就不考虑物理层如何实现比特传输的细节,我们就可以简单的认为数据帧通过数据链路由节点A发送到节点B。
封装成帧,就是在将网络层的IP数据报的前后分别添加首部和尾部,这样就构成了一个帧。
不同的数据链路层协议的帧的首部和尾部包含的信息有明确的规定,帧的首部和尾部有帧开始符和帧结束符,称为帧定界符。接收端收到物理层传过来的数字信号读取到帧开始字符一直到帧结束字符,就认为接收到了一个完整的帧。
在数据传输中出现差错时,帧定界符的作用更加明显。
每一种数据链路层协议都规定了所能够传送的帧的数据部分长度的上限–即最大传输单元MTU(Maximum Transfer Unit),以太网的MTU为1500个字节。
封装成帧,就是在将网络层的IP数据报的前后分别添加首部和尾部,这样就构成了一个帧。
不同的数据链路层协议的帧的首部和尾部包含的信息有明确的规定,帧的首部和尾部有帧开始符和帧结束符,称为帧定界符。接收端收到物理层传过来的数字信号读取到帧开始字符一直到帧结束字符,就认为接收到了一个完整的帧。
在数据传输中出现差错时,帧定界符的作用更加明显。
每一种数据链路层协议都规定了所能够传送的帧的数据部分长度的上限–即最大传输单元MTU(Maximum Transfer Unit),以太网的MTU为1500个字节。
帧开始符和帧结束符最好是不会出现在帧的数据部分的字符,通常我们电脑键盘能够输入的字符是ASCII字符代码表中打印字符,在ASCII字符代码表中,还有非打印控制字符,在非打印字符中有两个字符专门用来做帧定界符,代码SOH(Start Of Header)作为帧开始定界符,对应的二进制编码为0000 0001,代码EOT(End Of Transmission)作为帧结束定界符。
ASCII字符码表
ASCII字符集中“头标开始”和“传输结束”是非打印控制字符。
避免在用户使用键盘输入帧开始字符和帧结束字符。
当数据部分是非ASCII字符代码表的文本文件时(比如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某一段二进制代码正好和SOH或EOT帧定界符编码一样,接收端就会误认为这就是帧的边界。
现在就要想办法让接收端能够区分帧中EOT或SOH是数据部分还是帧定界符,我们可以在数据部分出现的帧定界符编码前面插入转义字符,
如果传输的数据中,出现了帧开始字符和真结束字符,要添加转义字符,告诉接收端后面是数据。
接收端收到后去掉转义字符,收到发送数据,这就是透明传输。
不同的数据链路层协议,定义的转义字符不一样。
现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1,这就叫做比特差错。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的差错检验技术。
要想让接收端能够判断帧在传输传输过程是否出现差错,需要在传输的帧中包含用于检测错误的信息,这部分信息就称为帧校验序列FCS(Frame Check Sequence)。
CRC运算示例
首先在要校验的二进制数据M=101001后面添加n位0,再除以收发双方事先商定好的n+1位的除数P,得出的商是Q,而余数是R(n位,比除数少一位),这个n位余数R就是计算出的FCS。
假如要得到3位帧校验序列,就要在M后面添加3个0,就成为101001000,假定事先商定好的除数P=1101(4位),如图4-10所示,做完除法运算后余数是001,001将会添加到帧的尾部作为帧校验序列FCS,得到商Q=110101,这个商并没什么用途。
点到点信道是指的一条链路上就一个发送端和接收端的信道,通常用在广域网链路。
简单 不提供可靠传输,出错后扔掉
封装成帧 首部和尾部 帧开始符 帧结束符
透明传输 加转义字符 收到后去掉转移字符
差错检测 CRC计算FCS
支持多种网络层协议 IPv4和IPv6网络层协议都可以封装到PPP帧中
多种类型链路 光纤 铜线 同步传输 异步传输 串行、并行链路均可
检测连接状态 检测连接状态
最大传送单元 最大传输单元 1500字节
网络层地址协商 能够为拨号的一段分配IP地址,子网掩码 网关和DNS
数据压缩协商
PPP协议有三个组成部分:
同步传输
同步传输(Synchronous Transmission)以数据帧为单位传输数据,可采用字符形式或位组合形式的帧同步信号,在短距离的高速传输中,该时钟信号可由专门的时钟线路传输,由发送端或接收端提供专用于同步的时钟信号。计算机网络采用同步传输方式时,常将时钟同步信号(前同步码)植入数据信号帧中,以实现接收端与发送端的时钟同步。
前同步码让接收端找到码元的边界。
异步传输
异步传输(Asynchronous Transmission)以字符为单位传输数据,发送端和接收端具有相互独立的时钟(频率相差不能太多),并且两者中任一方都不向对方提供时钟同步信号。
相对于同步传输,没有一口气传,而是一段一段的传,每一段带有起始位和结束位。最后接收端也要组装成完整的帧,交给网络层。
PPP首部三个字段
Address是地址字段
Control是控制字段
Protocol是协议字段
Address字段的值为0xff,0x表示后面的ff为十六进制数,写成二进制为1111 1111,占一个字节的长度。点到点信道PPP帧中的地址字段形同虚设,可以看到没有源地址和目标地址。
Control字段的值为0x03,写成二进制为0000 0011,占一个字节长度。最初曾考虑以后对地址字段和控制字段的值进行其他定义,但至今也没给出。
Protocol字段占2个字节,不同的值用来标识PPP帧内信息是什么数据。
同步传输 以帧为单位传输PPP协议使用0比特填充
异步传输 以字节为单位传输PPP协议使用字符填充
异步传输使用字节填充
在异步传输的链路上,数据传输以字节为单位,PPP帧的转义符定义为0x7D,并使用字节填充。
把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。
若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D,0x5D)。
同步传输使用零比特填充
在同步传输的链路上,数据传输以帧为单位,PPP协议采用零比特填充方法来实现透明传输。大家把PPP协议帧界定符0x7E写成二进制01111110,也就是可以看到中间有连续的6个1,只要想办法在数据部分不要出现连续的6个1,就肯定不会出现这界定符。具体办法就是“零比特填充法”。
如果数据原来就是5个1+0,方面处理之后会有5个1+2个0
最初的局域网使用同轴电缆进行组网,总线型拓扑。
广播信道使用带冲突检测的载波侦听多路访问( CSMA/CD )机制通信。CSMA/CD就是广播信道使用的数据链路层协议,使用CSMA/CD协议的网络就是以太网。
点到点链路就不用冲突检测,因此没必要使用CSMA/CD协议。
局域网是是范围不大的网络,以太网使用这种机制的叫以太网。
使用集线器组建的局域网也是广播信道,是总线型拓扑,比总线结构更可靠,不会一会一处断掉而影响其他。
以太网(Ethernet)是一种计算机局域网组网技术。IEEE制定的IEEE 802.3标准给出了以太网的技术标准,即以太网的介质访问控制协议(CSMA/CD)及物理层技术规范(包括物理层的连线、电信号和介质访问层协议的内容)。
在IEEE 802.3标准中,为不同的传输介质制定了不同的物理层标准,在这些标准中前面的数字表示传输速度,单位是“Mbps”,最后的一个数字表示单段网线长度(基准单位是100m),Base表示“基带”的意思。
总线型网络使用CSMA/CD协议进行通信,即带冲突检测的载波侦听多点接入技术。
即便检测出总线上没有信号,开始发送数据后也有可能和迎面而来的信号在链路上发生碰撞。
比如,A计算机发送的信号和B计算机发送的信号在链路C处发生碰撞,碰撞后的信号相互叠加,在总线上电压变化幅度将会增加,发送方检测到电压变化超过一定的门限值时,就认为发生冲突,这就是冲突检测。
使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
为了能够检测到正在发送的帧在总线上是否产生冲突,以太网的帧不能太短,如果太短就有可能检测不到自己发送的帧产生了冲突。下面咱们探讨以太网的帧最短应该是多少字节。
下图因为帧太短不能检测到自己发的帧是否发生了冲突
以太网设计最大端到端长度为5km(实际上的以太网覆盖范围远远没有这么大),单程传播时延为大约为25.6μs,往返传播时延为51.2μs,10M标准以太网最小帧为:
10Mb/s×51.2μs =107b/s×51.2×10-6s=512b
512比特也就是64字节,这就意味着以太网发送数据帧如果前64字节没有检测出冲突,后面发送的数据就一定不会发生冲突。换句话说,如果发生碰撞,就一定在发送前64字节之内。由于一旦检测出冲突就立即终止发送,这时发送的数据一定小于64字节,因此凡是长度小于64字节的帧都是由于冲突而异常终止的无效帧,只要收到了这种无效帧,就应当立即将其终止。
总线型网络中的计算机数量越多,在链路上发送数据产生冲突机会就多。
计算机要想知道发送的帧在链路上是否发生碰撞必须等待2τ,2τ称为争用期。
以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来解决碰撞问题。
1)确定基本退避时间,它就是争用期2τ。以太网把争用期定为51.2μs。对于10Mb/s以太网,在争用期内可发送512bit,即64字节。也可以说争用期是512比特时间。1比特时间就是发送1比特所需的时间。所以这种时间单位与数据率密切相关。
2)从离散的整数集合[0,1,…,(2k-1)]中随机取出一个数,记为r。重传应推后的时间就是r倍的争用期。上面的参数k按下面的公式计算:
k=Min[重传次数,10]
可见当重传次数不超过10时,参数k等于重传次数;但当重传次数超过10时,
k就不再增大而一直等于10。
3)当重传达16次仍不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。
常用的以太网MAC帧格式有两种标准,一种是EthernetV2标准(即以太网V2标准),另一种是IEEE的802.3标准。使用得最多的是以太网V2的MAC帧格式。
Ethernet II的帧比较简单,由五个字段组成。
以太网没有帧结束符
前两个字段分别为6字节长的目的MAC地址和源MAC地址字段。
第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。第四个字段是数据字段,其长度在46到1500字节之间。
最后一个字段是4字节的帧检验序列FCS(使用CRC检验)
以太网没有帧结束符,由曼彻斯特编码可知结束
当数据字段的长度小于46字节时,数据链路层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节,接收端还必须能够将添加的字节去掉。
IEEE802.3标准规定凡出现下列情况之一的即为无效的MAC帧:
帧的长度不是整数个字节。
用收到的帧检验序列FCS查出有差错。
收到的帧的MAC客户数据字段的长度不在46-1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64-1518字节之间。
对于检查出的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧。
利用率是指的发送数据的时间占整个时间的比例。
如图所示,平均发送一帧所需要的时间,经历了n倍争用期2τ,T0为发送该帧所需时间,τ为该帧传播时延。
有冲突时信道利用率为: S = T o n 2 τ + T o + τ S=\frac{T_{o}}{n 2 \tau+T_{o}+\tau} S=n2τ+To+τTo
从公式可以看出,要想提高信道利用率最好是n为0,这就意味着以太网上的各个计算机发送数据不会产生碰撞(这显然已经不是CSMA/CD,而需要一种特殊的调度方法),并且能够非常有效的利用网络的传输资源,即总线一旦空闲就有一个站立即发送数据。这种情况算出来的信道利用率是极限信道利用率。
S max = T 0 T 0 + τ = 1 1 + τ T 0 S_{\max }=\frac{T_{0}}{T_{0}+\tau}=\frac{1}{1+\frac{\tau}{T_{0}}} Smax=T0+τT0=1+T0τ1
要想提高极限信道利用率就要降低公式中的 τ I 0 \frac{\tau}{I_{0}} I0τ比值。
τ值和以太网连线的长度有关,这就意味着τ值要小, 以太网网线的长度就不能太长。带宽一定的情况下T0和帧的长度有关,这就意味着,以太网的帧不能太短,信道利用率低。
网卡是工作在链路层和物理层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、帧的差错校验、介质访问控制(以太网使用CSMA/CD协议)、数据的编码与解码以及数据缓存的功能等。
在广播信道实现点到点通信,这就需要网络中的每个网卡有一个地址。这个地址称为物理地址或MAC地址(因为这种地址用在MAC帧中)。IEEE802标准为局域网规定了一种48位的全球地址。
这种6字节的MAC地址已被固化在网卡的ROM中。因此,MAC地址也叫作硬件地址(hardware address)或物理地址。当这块网卡插入(或嵌入)到某台计算机后,网卡上的MAC地址就成为这台计算机的MAC地址了。
网卡有过滤功能,适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。这样做就不浪费主机的处理机和内存资源。这里“发往本站的帧”包括以下三种帧:
单播(unicast)帧(一对一),即收到的帧的MAC地址与本站的硬件地址相同。
广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(全1地址)。
发广播问10.7.87.23的MAC地址,使用ARP协议
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
1990年IEEE制定出星形以太网10BASE-T的标准802.3i。“10”代表10Mb/s的数据率,BASE表示连接线上的信号是基带信号,T代表双绞线。
10BASE-T以太网的通信距离稍短,每个站到集线器的距离不超过100m。
集线器和网线一样工作在物理层,相当于把信号广播到所有端口。
独立的冲突域
可以将多个集线器连接在一起形成一个更大的以太网,这不仅可以扩以太网中计算机的数量,还可以扩展以太网的覆盖范围。使用主干集线器连接教室中集线器,形成一个大的以太网,计算机之间的最大距离可以达到400米。
要是两个集线器的距离超过100米,还可以光纤从将两个集线器连接起来,集线器之间通过光纤连接,可以将相距几千米的集线器连接起来,需要通过光电转换器,实现光信号和电信号的相互转换。
大的冲突域
利用网桥优化以太网
A与B通信的时候,D与E可以通信,想成两个冲突域,但是增加了延迟。
网桥特点
使用网桥优化以太网,对于网络中的计算机是没有感觉的,也就是以太网中的计算机是不知道网络中有网桥存在,也不需要网络管理员配置网桥的MAC地址表,因此我们称网桥是透明桥接。
网桥接入以太网时,MAC地址表示空的,网桥会在计算机通信过程中自动构建MAC地址表,这称为“自学习”。
(1)自学习
网桥的接口收到一个帧,就要检查MAC地址表中与收到的帧源MAC地址有无匹配的项目,如果没有,就在MAC地表中添加该接口和该帧的源MAC地址对应关系以及进入接口的时间,如果有,则把原有的项目进行更新。
(2)转发帧
网桥接口收到一个帧,就检查MAC地址表中有没有该帧目标MAC地址对应端口,如果有,就会将该帧转发到对应的端口,如果没有,则将该帧转发到全部端口(接收端口除外)。
随着技术的发展,网桥接口增多,网桥的接口就直接连接计算机了,网桥就发展成现在的交换机。
使用交换机组网与集线器组网相比有以下特点:
独享带宽
交换机的每个端口独享带宽,10M交换机,则每个端口带宽是10M,24口10M交换机,交换机的总体交换能力是240M,这和集线器不同。
安全
使用交换机组建的网络比集线器安全,比如计算机A给计算机B发送的帧,以及计算机D给计算机C发送的帧,交换机根据MAC地址表只转发到目标端口,E计算机根本收不到其他计算机的通信的数字信号,即便安装了抓包工具也没用。
全双工通信
交换机接口和计算机直接相连,计算机和交换机之间的链路可以使用全双工通信。
全双工不再使用CSMA/CD协议
交换机接口和计算机直接相连接,使用全双工通信数据链路层就不需要使用CSMA/CD协议,但我们还是称交换机组建的网络是以太网,是因为帧格式和以太网一样。
接口可以工作在不同的速率
转发广播帧到所有端口
集线器是冲突域
交换机是广播域
路由器隔绝广播
交换机能够学习根据帧的源MAC地址构造MAC地址表
100BASE-T是在双绞线上传送100Mb/s基带信号的星型拓扑的以太网,仍使用IEEE802.3的CSMA/CD协议,它又称为快速以太网(FastEthernet)。
使用交换机组建的100BASE-T以太网,可在全双工方式下工作而无冲突发生。因此,CSMA/CD协议对全双工方式工作的快速以太网是不起作用的。因为其帧格式和以太网一样,所以依然称交换机组件的网络为以太网。
以太网的最短帧和带宽和链路长度有关,100M以太网比10M以太网速率提高10倍,要想和10M以太网兼容,就要确保最短帧也是64字节,那就将电缆最大长度由1000m降到100m,因此以太网的争用期依然是5.12μs,最短帧依然是64字节。
吉比特以太网的标准IEEE802.3 z有以下几个特点:
允许在1Gb/s下全双工和半双工两种方式工作。
使用IEEE802.3协议规定的帧格式。
在半双工方式下使用CSMA/CD协议(全双工方式不需要使用CSMA/CD协议)。
与10BASE-T和100BASE-T技术向后兼容。
吉比特以太网1000M带宽,有以下标准:
吉比特以太网工作在半双工时,就必须进行碰撞检测,数据速率提高了,要想和10M以太网兼容,就要确保最短帧也是64字节,这只能减少最大电缆长度,以太网最大电缆长度就要缩短到10m,短到几乎没有什么实用价值。吉比特以太网为了增加最大传输距离,将最短帧增加到4096比特。
当数据帧长度小于512字节(即4096比特)时,在FCS域后面添加“载波延伸” 域。主机发送完短数据帧之后,继续发送载波延伸信号,冲突信号传回来时,发送端就能感知到了。
如果发送的数据帧都是64字节的短报文,那么链路的利用率就很低,因为“载波延伸”域将占用大量的带宽。
千兆以太网标准中,引入了“分组突发”(packet bursting)机制来改善这个问题。这就是当很多短帧要发送时,第一个短帧采用上面所说的载波延伸的方法进行填充,随后的一些短帧则可以一个接一个发送,它们之间只需要留有必要的帧间最小间隔即可。
10GE的帧格式与10Mb/s,100Mb/s和1Gb/S以太网的帧格式完全相同。10GE还保留了802.3标准规定的以太网最小和最大帧长。
由于数据率很高,10GE不再使用铜线而只使用光纤作为传输媒体。它使用长距离(40km)的光收发器与单模光纤接口,以便能够工作在广域网和城域网的范围。
10GE只工作在全双工模式,因此不存在争用问题,也不使用CSMA/CD协议。这就使得10GE的传输距离不再受碰撞检测的限制而大大提高了。