计网笔记(3)——数据链路层

数据发送模型
  • 数据链路层定义帧的开始和结束,检验开始和结束之间的数据传输是否正确。
  • 数据链路层使用的信道有两种:点对点信道和广播信道。
  • 链路是一条点对点的物理线路,中间没有任何其他交换站点。一条链路只是一条通路的一个组成部分。
  • 数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
  • 在数据链路层中称这种数据块为(frame),帧是数据链路层的传送单位。数据链路层给数据报加上帧头、帧尾、物理层地址和检验值。
    帧的传输

三个基本问题

1、封装成帧

封装成帧就是在一段数据前后分别添加首部和尾部,然后构成一个帧。封装成帧确定帧的界限。首部和尾部的作用就是进行帧定界。


帧.png
2、透明传输

透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

若传输的数据是ASCII码中“可打印字符(共95个)”集时,一切正常。若传输的数据不是仅由“可打印字符”组成时,就会出现问题,SOH表示帧开始符,EOT表示帧结束符,如图所示:


含不可打印字符的帧传输

解决方法:

  • 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面加一个转义字符“ESC”(十六进制编码是1B)。
  • 字节填充或字符填充:接收端的数据链路层在将数据送往网络层前删除插入的转义字符。
  • 如果转义字符也出现在数据中,就在转义字符前也插入一个转义字符。当接收端收到连续两个转义字符时,就删除前一个转义字符。


    字节填充
3、差错控制

传输过程中可能产生比特差错:1可能变成0,0可能变成1。
在一段时间内,传输错误的比特占所传输比特总数的比例成为误码率BER(Bit Error Rate)。误码率与信噪比有很大关系。因此需要采用差错检测。

在A向B发送数据的链路中间会经过多个路由器,路由器在数据链路层检测数据是否正确,如果错误就丢弃这个帧,以保证通过这个路由器传输过去的(不包括丢弃的)都是正确的帧。

链路层只进行差错检验,不进行差错纠正,差错纠正由传输层进行,由传输层进行可靠传输。链路层丢弃错误的帧后,发送端长期得不到帧接收确认信息,就会重新发送一次该帧。

循环冗余校验CRC
数据链路层传输中广泛使用了循环冗余校验CRC。

  1. 在发送端,先把数据划分为组,每组k个比特。
  2. 假设待传送的一组数据M=101001(k=6),我们在M的后面再添加供差错检测用的n位冗余码一起发送。
    冗余码的计算:
  • 在二进制M后面添加n个0。假设n=3,则M变为(k+n)位的101 001 000.
  • 把(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得到商是Q,余数是R,R为n位,也就是M的CRC冗余校验码。把余数R作为冗余码添加在数据M的后面发送过去。发送数据是 101 001 001,共(k+n)位。


    Paste_Image.png

注:可以用生成多项式来表示循环冗余的除数,例如P(X)=X3+X2+1可以表示1101这个除数。

在数据后面添加上的冗余码称为帧校验序列FCS(Frame Check Sequence)。循环冗余检验CRC和帧检验序列FCS并不等同:

  • CRC是一种常见的检错方法,而FCS是添加在数据后面的冗余码。
  • FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。

CRC检测不能确定究竟是哪一个或哪几个比特出现了差错,也不能保证如果出现错误就一定能检测出来(错误数据也可能得到正确的余数),但是只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小。

PPP协议实现无差错接收(错误的就丢掉),但不实现可靠传输。

CRC小结


数据链路层点到点协议PPP

点到点PPP协议

现在全世界使用得最多的数据链路层协议是点对点协议PPP(Point-to-Point Protocol),用户使用拨号电话线接入因特网时,一般都是使用PPP协议。

PPP协议帧格式

标志字段F=0x7E标志了帧的开始和结束。
地址字段A只置为0xFF,由于是点对点通信,实际上并不起什么作用。
控制字段C通常置为0x03,没有什么特殊含义。

PPP协议的透明传输(字节填充):
1. 字节填充

  • 将信息字段中出现的每个0x7E字节变成2字节序列(0x7D,0x5E)。
  • 若信息字段中出现一个0x7D的字节,则将其转变为2字节序列(0x7D,0x5D)。
  • 若信息字段中出现ASCII码的控制字符(数值小于0x20的字符),则在该字符前加入一个0x7D字节,同时将该字符的编码加以改变。

2. 零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传递,不保证是字节的整数倍)。这时PPP协议采用零比特填充方法来实现透明传输。

在发送端,只要发现信息部分有5个连续1,则立即填入一个0.接收端对帧中的比特流进行扫描,每当发现5个连续1时,就把这5个连续1后面的一个0删除。

零比特填充例子

广播信道的数据链路层

碰撞检测
争用期
二进制指数类型退避算法

以太网

以太网提供的服务是不可靠的交付,即尽最大努力的交付。
当接收站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当做一个新的数据帧来发送。

信道利用率

一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过t时间使得信道上无信号在传播)时为止,是发送一帧所需的平均时间

MAC层(媒体访问控制层)

MAC地址,又称硬件地址或物理地址,48位,前三字节(高位24位)由IEEE的注册管理机构RA向厂家分配,后三字节(低24位)由厂家自行指派,必须保证生产出的适配器没有重复地址。这种48位地址称为MAC-48,通用名称为EUI-48.

MAC地址不可更改,但是可以更改通信时的MAC地址,也相当于“更改”了MAC地址。

MAC帧格式
  • 类型字段用来标识上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。
  • 数据字段的正式名称是MAC客户数据字段
    最小长度64字节 - 18字节的首部和尾部 = 数据字段的最小长度46字节
    当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64字节。
  • 为了达到比特同步,在传输媒体上实际传送的要比MAC帧还多8字节。在帧前面插入的8字节中第一个字段共7个字节,是前同步码,用来迅速实现MAC帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC帧。

无效的MAC帧:
1)帧长度不是整数个字节;
2)用收到的帧检验序列FCS查出有差错;
3)数据字段的长度不在46~1500字节内。

帧最小间隔:
帧间隔最小间隔为9.6 us,相当于96 bit的发送时间(10M以太网)。一个站在检测到总线开始空闲后,还要等待9.6 us才能再次发送数据。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

百兆以太网(100Base-T)的帧最小间隔为0.96 us


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容