zoukankan      html  css  js  c++  java
  • 计算机网络----数据链路层(三)

    数据链路层:封装成帧,透明传输,差错检测。

    任何一个帧格式,都要有开始标志,结束标志,数据部分的协议字段,信息部分的长度的部分(最大传送单元)(1500字节),目的地址,源地址。

    透明传输:就是当你的数据部分存在和帧格式开始部分或者结束部分相同的时候,你怎么处理,来达到我发送的信息,会完整的无误的发送到对方。一般情况就是加转义字符。

    差错检测:现在最常用的是CRC检测。现在可以保证的是,只要满足CRC检测我们就认为他这个信息是对的。

    无比特差错和无传输差错不同。可靠传输还包括,不能出现帧失序,帧丢失,帧重复。就是这个帧是对的,但是整个的排列错了。

    链路的格式:串行的或并行的,同步的或异步的,低俗的或高速的,电的或光的,交换的(动态)或非交换(静态的)点对点链路。

    PPP协议:1.将IP数据报封装到串行链路的方法。2.一个用来建立、配置和测试数据链路连接的链路控制协议(LCP)。3.一套网络控制协议。

    我怎么判断它是不是一个PPP帧?

    开始定界符和结束定界符都是0x7E,(标志字段F)连续两个帧之间,只需要一个标志字段就行了,因为相同和结束都是一个,所以,当第一个结束时的标志7E,亦可以作为下一个帧的开始字符。PPP帧里面封装的是IP数据报,还是LCP数据,所以还有一个协议字段。

    0x0021——信息字段是IP数据报

    0xC021——信息字段是链路控制数据LCP

    0x8021——信息字段是网络控制数据NCP

    0xC023——信息字段是安全性认证PAP

    0xC025——信息字段是LQR

    0xC223——信息字段是安全性认证CHAP

    NCP网络控制协议(Network Control Protocol)实际上是一套协议。每个子协议都是为处理各自网络层协议所需的错综复杂的配置而设计的。 当LCP将链路建立好了以后,PPP要开始根据不同用户的需要,配置上层协议所需的环境。PPP使用网络控制协议NCP(Network Control Protocol,NCP)来为上层提供服务接口。针对上层不同的协议类型,会使用不同的NCP组件。如对于IP提供IPCP接口,对于IPX提供IPXCP接口,对于APPLETALK提供ATCP接口等。同时对于IP网络,提供IP地址,子网掩码和默认网关等地址的配置。

    最后还有FCS,我们发现他没有地址字段,为什么呢?ppp属于广域网范畴,MAC是局域网范畴,按实际情况和环境就选用不同的协议,ppp支持的网络结构只能是点对点,mac支持多点对多点。

    以太网中用mac,远程的话就用ppp(如ADSL拨号,就是基于ppp的)。

    ppp是点到点协议 ,逻辑上相连的就一台设备,因此不需要寻址, 目标地址为广播地址, PPP中前6个字节就是目标地址。

    PPP的帧格式如下:
    Flag Address Crotrol Protocol Informaiton FCS Flag
    其中Flag标识了一个PPP数据帧的起始及结束,FCS为帧校验,真正属于PPP报文内容的为Address,Control,Protocol,Information域所包含内容。Address表示此为PPP广播地址,Address和Control一起表示了此报文为PPP报文,即PPP报文头为FF03。

    PPP在封装方式以以太网的封装方式不同,它没有以太网帧所要求的MAC地址,它通过自身的协商过程实现点到点的数据传输。

    这类广域网协议,其帧的结构与以太网的完全不同,当然,PPPOE除外,因为PPPOE是基于以太网上的,而其它的如PPP,FR,X.25等却并不是。


    广播信道:局域网之所以这么风行肯定有其的优点:1.具有广播功能,从一个站点可以访问全网,局域网上的主机可共享连接在局域网上的各种硬件资源和软件资源。2.便于系统的拓展和逐渐的演变,各设备的位置可灵活调整和改变。3.提高了系统的可靠性,可用性和生存性。

    局域网的网络拓扑:1.星形网2.环形网(令牌环形网)3.总线网(传统以太网使用CSMA/CD,现在演进为星形网。)4.树形网(总线网的变形主要用于频分复用的宽带局域网)

    共享信道着重要考虑的问题就是:如何使众多用户能够合理而方便的共享通信媒体资源。

    技术上两种方法:1.静态划分(现在的无线信道就是这种方法):频分复用,时分复用,波分复用,码分复用。

    2.动态媒体接入控制。(也叫多点接入)信道不是用户通信时固定分配给用户。分为两类1.随机接入(随机的发送信息,但是如果两个或多个用户同时发送,共向媒体上就要发生碰撞,用户数据都失败。因此必须有解决碰撞的协议)2.受控接入(不能随意发,得受一定的控制,分散控制的令牌环局域网和集中控制的多点线路探询(轮询))


    以太网的标准:LLC已经不用了,MAC层(媒体接入控制)与接入到传输媒体有关的内容。

    适配器(网卡)。适配器和局域网之间是串行通信。适配器和计算机之间是通过计算机主板上的I/O总线以并行传输方式进行的。适配器的一个重要功能就是进行数据串行通信和并行传输的转化。由于两者的数据率不同,在适配器上必须装有对数据进行缓存的存储芯片(数据率不同的时候,必须有一个缓存的,要不会丢失数据,缓存满了也会丢失数据,如何做到缓存肯定不会满呢?)

    适配器接收到错误的帧时直接扔掉,不通知CPU,接收到正确的帧时,才使用中断来通知该计算机并交付给协议栈的网络层。

    总线的特点:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这就是广播通信的方式。

    在广播方式中实现一对一通信是,使每一台计算机的适配器拥有一个与其他适配器都不同的地址,然后真的首部写明接收地址,一致时接收,不一致丢弃。

    以太网通信:1.以太网提供的服务是不可靠交付,即尽最大努力交付。对有差错的帧是否需要重传则由高层决定。以太网不知道是重传帧,当做新的数据帧来发送。

    2.以太网通信都是用曼彻斯特编码信号。之所以不使用高低电压交替是因为当出现长1和长0的时候,无法从收到的比特流中提取位同步信号。

    网卡的主要功能有以下三个:
    1.数据的封装与解封:发送时将上一层交下来的数据加上首部和尾部,成为以太网的帧。接收时将以太网的帧剥去首部和尾部,然后送交上一层;
    2.链路管理:主要是CSMA/CD协议的实现;
    3.编码与译码:即曼彻斯特编码与译码。

    剩下重要的问题:如何协调总线上各个计算机的工作。就是使用CSMA/CD协议。

    电磁波在1km电缆的传播时延为5us。总线上单程端到端的时延为t,最迟经过多久就知道是否碰撞?最多是两倍的总线端到端的传播时延2t,

    a发送的数据到b,b就知道碰撞了,b的数据到a,a就知道碰撞了。因此可以看出在使用CSMA/CD时,一个站不可能同时进行发送和接受。他只能进行半双工通信。

    发送的不确定性:每一个站自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这个一段时间是不确定的。

    以太网端到端的往返时间2t称为争用期。这个很重要。争用期成为碰撞窗口,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

    以太网使用截断二进制指数退避算法解决碰撞问题。 以太网的把争用期定位51.2us。

    10M/s的以太网,争用期可发送512bit。10*10^6*51.2*10^-6=512bit。

    从[0,1,2,……(2^k-1)]中随机取出一个数,记为r,重传推后r倍的争用期。k=Min[重传次数,10];重传16次仍不能成功时(这表明同时打算发送数据的站太多,以致发生冲突),则丢弃该帧,向高层报告。

    适配器每发送一个新的帧就要执行一次CSMA/CD算法。适配器对过去发生过的碰撞并无记忆能力。

    由于以太网发送数据,如果帧的前64字节没有发生冲突,那么后续的数据就不会冲突,由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64字节,因此以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。收到这种帧直接丢弃。

    以太网端到端时延小于争用期一半,因为还要考虑其他因素。

    以太网还采取强化碰撞:发生碰撞之后除了立即停止发送数据外,还要在继续发送32bit或48bit的人为干扰信号,以便让用户都知道自己已经发生了碰撞。对于10M/s的以太网,发送32(或48bit)只需要3.2us(4.8us)

    因此碰撞之后总线被占用的时间是Tb+Tj+t,a检测到冲突时间Tb,发送干扰信号Tj,干扰信号最后一位在链路发送的时间t。


    以太网规定了帧间最小间隔为9.6us,也就是96bit,(由于帧之间有间隔,这个对后面的MAC帧的格式是有影响的,就是没有结束定界符,这个间隔就是结束定界符。)

    成功发送一个帧需要占用信道的时间为T0+t,为了提高以太网信道利用率,就减小t与T0之比。定义了参数a,它是以单程端到端时延t与帧的发送时间T0之比:a=t/T0;

    当数据率一定时,以太网的连线长度受到限制(否则t的数值会太大),同时以太网的帧长不能太短(否则T0值太小,使a值太大)

    极限信道的利用率Smax=T0/(T0+t)=1/(1+a)

    只有当参数a远小于1才能得到尽可能搞的极限信道利用率。

    适配器有过滤功能,但适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后在进行其他处理。否则就将帧丢弃,不再进行其他的处理。这样做不浪费主机的处理机和内存资源。

    MAC地址字段的第一个字节的最低位为I/G位,I/G表示Individual/Group。当I/G为0时,地址字段表示一个单个站地址。当I/G位为1时表示组地址,进行多播。

    为了避免有人不想买,那么规定了地址字段第1字节的最低第二位为G、L位,表示Global/Local,当G/L为1时为全球管理,为0时是本地管理。

    全球管理时,对每一个站的地址可用46位的二进制数字来表示(最低位为0和最低第2位为1时)剩下的46位组成的地址空间可以有2^46个地址,超过70万亿个。

    当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个接口。路由器如果同时连接到两个网络上,那么它就需要两个适配器和两个硬件地址。

    发往本站的帧:包括三种帧:1.单播帧(一对一)2.广播帧(一对全体)3.多播帧(一对多)

    所有的适配器至少能够识别前两种帧。以太网适配器还可设置为一种特殊的工作方式----混杂方式。在混杂方式只要“听到”有帧在以太网上传输就悄悄接收下来,而不管这些帧发往哪个站。这实际上是窃听其他站点的通信而并不中断其他站点的通信。黑客可以通过这种方法获取网上用户口令。有时候,像网管和管理人员需要监视和分析流量,以便找出好的额措施来提高网络性能。

    MAC帧的格式:

    目的地址,源地址,类型(网络层的协议),数据,FCS,我们发现没有关于数据长度的说明,这个时候,我们说到曼彻斯特编码(中间会有一次电压变化),当发送方把一个以太网帧发送完毕后,就不在发送其他码元了,因此发送方网络适配器的接口上的电压也就不再变化,这样接收方就和容易找到以太网帧的结束位置。在这个位置,往前数4字节(FCS字段长度是4字节),就能确定数据字段的结束位置。

    数据字段低于46字节时要填充,因为帧的最小长度是64字节,既然要填充,那么上层协议,例如IP协议就必须有知道哪些是填充的字符的能力。

    在传输媒体上传输的要比MAC帧多8个字符,这是因为当一个站刚刚开始接受MAC帧时,由于适配器的时钟 尚未与到达的比特流同步,一次MAC真的前几位无法接受,使得整个MAC帧没用了,所以加了8字节(两字段,第一字段7字节前同步码,AA,后一字节帧开始定界符AB,)MAC帧的FCS检测范围不包括前同步码和帧开始定界符。在SONET/SDH进行同步传输时不需要前同步码,因为在同步传输时收发双方的位同步总是一直保持的。

    帧和帧之间有空隙,所以不需要结束符,而且不需要字节插入来保证透明传输。因为如果里面出现了开始符,只要没有出现空隙,我就认为还在数据中。

    考虑到MAC帧的首部和尾部18字节,所以有效MAC帧的长度为64--1518字节。

    现在的网络中都用交换机了,计算机电脑还需要CSMA/CD协议吗?

    原来的电脑使用这个协议的,现在的是兼容他的,你不需要改变。

    首先你要搞清楚。CSMA/CD是电脑终端的一种冲突避免的措施,不是交换机上的。电脑并不能区分所连的是交换机还是HUB,所以,只要是以太网,都会使用CSMA/CD机制。一般,交换机的总线方式分为总线式、共享内存式、还有你所说的交叉点阵,总线式一般用于中低端交换机,共享内存是一般不太常见,因为高速内存的造价太昂贵,而且内存的读取速与寻址时间容易成为交换机包转发率的瓶颈。交叉点阵式一般用于高端设备,但是造价很昂贵。技术水平含量很高。

    交换机默认是不使用CSMA/CD机制的,因为对于交换机来说,一个端口就是一个冲突域,因此,使用CSMA/CD机制是多余的,因为你交换机一个端口不能连接两台PC或者两个HUB吧,就算你交换机下面挂个HUB连接多台电脑,那么此时的冲突避免是在HUB与PC间进行的。

    拓展以太网

    1.物理层

    以太网主机不能太远,10BASE-T以太网两个主机之间的距离不超过200m,否则主机发送的信号经过铜线的传输就会衰减到CSMA/CD协议无法正常工作。

    原来用转发器,现在是双绞线就不用了。

    现在拓展主机和集线器之间的距离一种简单方法是使用光纤和一对光纤调制解调器(进行电信号和光信号的转换)。

    使用集线器托大了以太网覆盖的地理范围。

    但是缺点:本来每一个系是一个碰撞域,假如3个系,那么每个系的以太网最大吞吐量为10Mb/s,一次总的最大吞吐量30Mb/s,但是如果将三个系用集线器连起来,那么就成了一个冲突域,吞吐量为10Mb/s,而且当一个系的信息发送时,其他系是无法发送信息的。2.不同的系使用不同的以太网技术(如速率不同),就不可恩给你用集线器互联起来。

    2.数据链路层

    原来的以太网通过网桥连接后,原来的以太网成为了一个网段。

    数据链路层要使用网桥。

    网桥的好处:1.通信量增加,增大吞吐量。将碰撞域隔离。2.扩大了物理范围。3.增加可靠性4.可互连不通的物理层、不通MAC子层和不同速率的以太网。

    缺点:1.网桥对于接受的帧要先存储和查找转发表,然后才转发,转发之前必须执行CSMA/CD算法,这就增加了时延。2.MAC子层并没有流量控制功能。网络负荷很重时,网桥的中的缓存的存储空间可能不够而发生溢出,以致产生帧丢失现象。3.网桥只适合用户数不太多,不超过几百个和通信量不大的以太网,否则有时候会因传播过多的广播信息而产生网络拥塞(广播风暴)

    网桥转发帧时,不改变帧的源地址。

    1.透明网桥

    网桥刚连接以太网,转发表是空的,这时候若网桥收到一个帧怎么处理?自学习算法处理收到的帧。原理:若从某个站发出的帧从接口x进入了某网桥,那么从这个接口出发沿相反方向一定可把一个帧传送到A.所以只要接收到一个帧就记下源地址和进入网桥的接口,作为转发表的一个项目。

    网桥和集线器区别:网桥是按存储转发方式工作的,一定要先把整个帧收下来(但集线器或转发器是逐比特转发),在进行处理,而不管其目的地址是什么。网桥丢弃CRC检验有错的帧和帧长过短和过长的无效帧。

    接收到帧之后,如果没有,那么就把这个源地址和端口记下后,从除这个端口外的所有端口转发出去。让别的也记下这个(因为这两个网桥当时不知道网络拓扑)通过自学习过程,也就是这种盲目转发的方式才能逐步认清整个网络的拓扑结构,建立自己的转发表。

    因此,只要每一个站都发送过帧,那么每一个站的地址最终都会被记录在网桥的转发表上的。

    实际上,网桥转发表除了地址和接口还有帧进入网桥时间。(因为网络拓扑可能会经常变化,站点也可能更换适配器,这样站点的地址就改变了(具体操作:接口管理软件周期性扫描转发表的项目,只要再一定时间以前登记的都删除,使网络转发表反应当前网络最新拓扑状态,所以,假如说一个站点长时间不发信息也会被删除掉))

    地址      接口      时间


    一般步骤:1.自学习2.转发帧(注意的是如果转发表给出的出口是该帧进入网桥的接口,则丢弃这个帧(因为不转发也能收到))

    透明网桥使用了生成树算法。为什么?有人在LAN之间设置了并行的两个或多个网桥,但是,这种配置引起了另外一些问题,因为在拓扑结构中产生了回路,可能引发无限循环。这是为了避免产生转发帧在网络中不断地兜圈子。

    透明网桥最大优点就是容易安装,接上就工作。


    2.源路由网桥

    由发送帧的源站负责路由选择的网桥。为了发现合适路由,源站以广播方式向欲通信的目的站发送一个发现帧作为探测之用。

    作用一:发送真沿着所有可能的路由传送,在传送过程中,每个发现帧都记录所经过的路由。当这些发现帧到目的站后,就沿着格子的路由返回源站,源站从中选取最佳路由,以后,凡是从这个源站向该墓地站发送的帧的首部,都必须携带源站所确定的这一路由信息。

    作用二:帮助源站确定整个网络可以通过的帧的最大长度。



    3.多接口网桥----以太网交换机

    以太网交换机本质上就是一个多接口的网桥。交换机接口很多,以太网交换机的每个接口都直接与一个单个主机或另一个集线器相连(普通的网桥的接口往往连接到以太网的一个网段,这就是为什么它还在碰撞的原因),并且一般工作在全双工方式。当主机需要通信时,交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,无碰撞的传输数据。

    它和透明网桥一样,即插即用,内部转发表通过自学习算法自动逐渐建立起来,当两个站通信完成后就断开连接。以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高。

    对于原来普通10Mb/s的共享式以太网,假如有N个用户,那么共享式以太网,每个用户战友的平均带宽为总带宽10Mb/s的N分之一。使用以太网交换机后,,由于每一个用户通信时都是独占而不是和其他网络用户共享传输媒体的带宽,因此对于拥有N对接口的交换机的总容量为N*10Mb/s。这是交换机的最大优点

    从共享式以太网或10BASE-T以太网转到交换机以太网时,所有接入设备的软件和硬件,适配器都不需要做任何改动,也就是设备继续使用CSMA/CD协议。只要增加了集线器的容量,整个系统的容量很容易扩充的。

    以太网交换机许多都采用了存储转发方式进行转发。也有一些直通的,就是根据目的MAC地址直接转发,因而提高了帧的转发速度。如果交换机内部采用硬件的交叉矩阵,那么交换延迟就非常小,但是这有一个缺点:不检查差错直接转发,有肯那个叫一些无效帧发给其他的站。

    利用以太网交换机很方便的实现VLAN(虚拟局域网)。

    虚拟局域网:有一些局域网的网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。

    在虚拟局域网上,每一个站都可以听到同一个虚拟局域网上的其他成员所发出的的广播。

    虚拟局域网协议允许在以太网帧格式中插入一个4字节的标识符,称为VLAN标记,用来指明发送该帧的工作站属于哪一个虚拟局域网。如果还使用原来的帧格式无法划分虚拟局域网。

    100BASE-T

    由于a=t/T0=t/(L/C)=tC/L,速度C提高了10倍,那么为了保持a不变可以将帧长L增大10倍,也可以将网络电缆长度(因而使t)减小为原来的1/10。

    100Mb/s采用的方法是保持帧长不变,使100Mb/sde 争用期变为5.12us,帧间最小间隔为0.96us,都是10Mb/s的1/10;

    吉比特以太网

    当工作在半双工时,它就不能再减了因为如果减到10m就没什么意义了,线路太短了,所以使用了载波延伸的办法,保持一个网段的最大长度为100m,使最短帧长为64字节。以太网还用了一种功能为分组突发。

    当工作在全双工时,不使用载波延伸和分组突发。

    10吉比特以太网

    10GE不再使用铜线而只使用光纤作为传输媒体。10GE只工作在全双工方式,因此不存在争用问题,也不使用CSMA/CD协议。这就使得10GE的传输距离不在受进行碰撞检测的限制大大提高了。






  • 相关阅读:
    6、UITableView表的分割线左对齐
    5、清理mac缓存和关闭后台运行程序
    1、iOS9 HTTP 不能正常使用的解决办法
    在ios下提示“@synthesize of ‘weak’ property is only allowed in ARC or GC mode”
    java中的String类
    java思考题
    java思考
    java动手动脑思考
    大道至简第二章读后感
    JAVA训练参数求和
  • 原文地址:https://www.cnblogs.com/didi520/p/4165495.html
Copyright © 2011-2022 走看看