计算机网络笔记-链路层
点对点信道

点对点通信主要有以下步骤
- 节点A把网络层交下来的数据报文添加首部和尾部封装成帧
- 节点A将帧数据发送给B的链路层
- 若B节点校验数据帧无差错,则从帧中提取网络层数据报文给上一层
三个基本问题
封装成帧

也就是给原始的数据报的前后分别加上首部和尾部,这样在接收端就能根据首部和尾部来从数据流中区分出一个一个的帧数据,对于传输的效率来说帧首部和帧尾部与帧总大小的比值越小越好,那么就需要帧数据部分足够大。也就是每次运输的数据量足够多的情况下效率是较高的。但是每一种链路层协议都规定了帧的数据部分的最大值即MTU(Maximum Transfer Unit)。

帧首部放置SOH(Start Of Header)十六进制数0X01,帧尾部放置EOT(End Of Transmission)十六进制数0X04。
透明传输
透明传输就是如何将原始报文中的数据如同透明一样通过数据链路层,如果原始部分数据中含有一些控制字段如:0X01或者0X04就会导致报文找到错误的边界

采用转义就可以解决,将原始报文中的0X01和0X04都插入一个ESC也就是0X1B这种方式称之为字节填充法,如果原始报文中已经存在0X1B则再将前面加上一个转移字符。这样接收端拿到数据帧后将所有的转移字符去掉就可以得到一个原始报文。

差错校验
链路层需要保证数据传输的完整性,简单的概括就是:只要数据被接受到了就得是完整的数据。关于数据的丢失,数据的重发和确认不在链路层的设计考虑范围内。如何报错数据的完整性也很简单,将原始网络层的报文进行CRC校验会得到一个冗余码,将冗余码放入到报文的最末端成为FCS(帧校验序列)。接收端获取到数据后将原始报文提取出来进行CRC校验判断数据是否完整。
PPP协议
ppp(Point to Point Protocol)就是用户计算机和ISP进行通信时所采用的数据链路层协议。
PPP属于点对点的广域网协议。
组成:
- 将IP数据包封装到串行链路层的方法。
- 用来建立,配置测试数据链路的链路控制协议
LCP(Link Control Protocol) - 网络控制协议
帧格式

首部和尾部分别是5和2个字节。第一个字节是帧头部,第二和三个字节是预留位,第四和5字节表示协议的类型。协议一般有:
- 0X0021 IP数据报
- 0XC021 LCP数据
- 0X8021 网络层的控制数据
尾部就是很正常的FCS校验位和帧为尾部。
工作状态
当用户拨号接入
ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。这样,用户个人电脑就成为互联网上的一个有IP地址的主机了。当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。

- 通过调制解调器呼叫路由器向
ISP建立物理连接,链路建立 LCP协商一些配置选项,开始发送LCP请求帧。协商一些通信的数据如MTU- 开始鉴别阶段,这个阶段只允许
LCP协议的分组数据,对通信用户的身份进行校验 - 最后就是通过网络层协议
NCP进行IP分配(类似于DHCP) - 链路打开
广播通信
广播通信就是可以一对多的通信,局域网就是使用广播信道的。
局域网
局域网就是网络为一个单位所有的,地理位置和站点数目是有限的。
局域网的优点:
- 具有广播功能
- 便于系统的扩展
- 提高了系统的可靠性,可用性和生存性
局网络拓扑

共享信道的方式
- 静态划分信道,如频分复用,时分复用,波分复用等,这种划分信道方式的代价较为高昂,不适合局域网使用。
- 动态媒体接入控制:特点是信道并非是在用户通信时固定分配的
- 随机接入,所有用户可以随机发送信息,如果恰好有两个信息同一时间发出则会产生碰撞,导致发送失败。此方式在局域网中使用较多。
- 受控接入,不可用随机发出信息,而需要服从一定的控制。
以太网
以太网是局域网的一种,目前来说局域网和以太网几乎可以说是同义词。
最早的以太网是通过总线方式进行连接,为了总线上实现一对一的通信方式需要对每个设备设置一个独一无二的编号也就是MAC地址。为了特性的方便以太网采用了以下两种措施:
无连接的方式
不必建立连接直接发送数据,对发送的数据帧不进行编号和发回确认。所以以太网实际上是最大可能交付的方案,如果要实现高精度的通信高层TCP可以实现重传功能。
在总线上进行数据传输,每一时刻只能有一个适配器发送消息,如果多条发送的话会导致碰撞问题从而发送数据失败。以太网使用的协议是CSMA/CD,意思是载波监听多点接入/碰撞检测。
曼彻斯特编码

以太网发送的数据都使用曼彻斯特(Manchester)编码的信号。我们知道,二进制基带数字信号通常就是高、低电压交替出现的信号。使用这种信号的最大问题就是当出现一长串的连 1 或连0时,接收端就无法从收到的比特流中提取位同步(即比特同步)信号。如图 3-16 所示,曼彻斯特编码的编码方法是把每一个码元再分成两个相等的间隔。码元 1是前一个间隔为低电压而后一个间隔为高电压。码元 0 则正好相反,从高电压变到低电压(也可采用相反的约定,即 1 是"前高后低"而 0 是"前低后高")。这样就保证了在每一个码元的正中间出现一次电压的转换,而接收端就利用这种电压的转换很方便地把位同步信号提取出来。但是从曼彻斯特编码的波形图也不难看出其缺点,这就是它所占的频带宽度比原始的基带信号增加了一倍(因为每秒传送的码元数加倍了)。
CSMA/CD
特点:
- 多点接入,多点接入说明是总线型网络
- 载波监听,不停的检测信道是否有数据发送
- 碰撞检测,在发送的过程中也在不停的检测,一旦发现有冲突要立马停止发送,减少网络资源占用
就算是再发送前后做监听也还是可能会出现碰撞的现象,这是由于以太网只能进行双向交替通信(半双工通信)且信息传递的速度是有限的,总会存在一个传播延时,这会导致信号还没传递到分为内,接收端的主机以为可以通信。一次以太网不能保证一定能成功发送数据帧,此为发送的不确定性,若以太网的平均通信量远小于以太网的最高数据率,以太网发生碰撞的机会会很小。所以还需要注意的是使用CSMA/CD协议一定要限制传播介质的距离,一般是要在200M以内,不然CSMA/CD的碰撞检测算法将失去作用。
争用期 / 碰撞窗口
以太网的 端到端往返时间 :\(2 * τ\),要保证要发送的数据在最后一个比特发送出去之前检测出是否冲突。
一个站发送数据开始计时,经过争用期这段时间内还没有检测到碰撞,便能确定此次发送不会产生碰撞。如此可以确定正确发送完这一帧
若争用期为 51.2 μs,对于 10 Mbit/s 的以太网,争用期内可以发送 512 bit,即 64 字节,此长度亦为最小帧长度(小于此长度接收端会认定此帧因为检测到冲突被提前中断发送了)
截断二进制指数退避算法
用来确定碰撞后重传的时机(确定等待的随机时间,注意不是空闲就立即发送)
k = Min [ 当前站当前帧的重传次数,10 ]
然后从离散整数集合 [ 0,1,… ,(2k - 1)]中随机取出一个数,记为 r,若 r 超过 16,则直接丢弃该帧,向高层报告
当前站当前帧重传等待时间为$ r * 2τ$
(重传次数越大,离散整数k 的集合范围越大,那么彼此的重传时间差别就越大,不容易随机到同一个数值,不会再一次冲突,如此实现动态退避)
以太网最小帧长度
如上情况,若发生碰撞,就一定会在前64字节内停止发送,因此发送出去的数据一定小于64字节。因此规定 长度小于64字节的帧 均视为由于冲突而异常终止的无效帧。接收端收到这种帧,直接丢弃要确保发送的帧的总长大于64 字节。为了保证最小帧长度,发送方检测到帧的数据小于后会在IP报的后面加上一个整数,当报文被接受到,网络层拿到数据后会根据网络层中的报文长度来丢弃后面补充的数据。
强化碰撞

当发送数据的站检测到碰撞,除了立即停止发送数据,并继续发送 32比特或48比特的人为干扰信号,以便让所有用户都知道现在已经发生碰撞
总结
- 准备发送,获取网络报文组装成以太网帧
- 检测信道,如果检测到信道正忙则进行自选等待
- 发送过程不停检测信道,两种可能:
- 发送成功
- 发送失败,立刻停止发送数据,进行强化碰撞发送干扰数据,紧接着执行逼退算法。等待一段时候就后重新回到进度2
MAC帧格式

MAC帧一共由5个字段组成,前两个字段分别为目的地址和源地址,紧接着是一个2字节的类型字段,类型字段用来标识上层的协议是什么,可能是IP数据报也可能是IPX,数据字段长度一般为46~1500个字节,(46的最小字节的计算:CSMA/CD协议中最小帧为64字节,64字节减去18字节的MAC封装字节就是48)。
为什么MAC帧没有帧界限符或者是帧大小字段,接收端如何从数据流中区分帧?
由于以太网使用曼彻斯特编码方式,不管是低电平还是高电平在一个电平的时间区间都会有一次高低电平转换,所以只要检测到一段连续的无变化的电平后就能找到上个帧的结束位置。
PPPOE
PPPOE(PPP Over Ethernet)是基于PPP协议的一种协议。在以太网中信息都是由广播发出的,而在协议中没有定义用户信息,所以在一些需要坚定用户或者计费的场合就无法实现,但是
PPP协议是支持用户鉴权,所以在PPP协议之上加上一层PPPOE报文和以太网报文头就可以实现以上的功能。
帧结构

上图为PPPOE的帧格式,最外层是以太网MAC帧的格式,载荷内容是PPPOE的帧,在PPPOE的载荷才是PPP的数据。
对于第一层的以太网帧就不多赘述了,现在来看看第二层的PPPOE帧机构:
| 字段 | 说明 |
|---|---|
| Ver | 4bits,PPPoE版本号,值为0x1。 |
| Type | 4bits,PPPoE类型,值为0x1。 |
| Code | 8bits,PPPoE报文类型。(a) 0x00,表示会话数据。 (b) 0x09,表示 PADI报文。(c) 0x07,表示 PADO或PADT报文。(d) 0x19,表示 PADR报文。(e) 0x65,表示 PADS报文。 |
| Session_ID | 16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xffff为将来的使用保留,不允许使用。 |
| Length | 16bits,定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。 |
| 数据 | 在PPPOE的不同阶段该域内的数据内容会有很大的不同。在PPPOE的发现阶段时,该域内会填充一些Tag(标记);而在PPPOE的会话阶段,该域则携带的是标准的点对点协议包(PPP Packet)。 |
流程
发现阶段
PPPoE的发现阶段一共分为4步,分别 是:PADI(PPPoE Active Discovery Initiation),PADO(PPPoE Active Discovery Offer),PADR(PPPoE Active Discovery Request),PADS(PPPoE Active DiscoverySession- confirmation)。

当完成这四步之后,用户主机(PC)和访问集中器(AC)双方就能获知对方唯一的MAC地址和唯一的会话ID。MAC地址和会话ID共同定义了唯一的PPPoE会话。PPPoE Discovery的以太网类型域为0x8863。
1、PADI(PPoE Active Discovery Initiation)
主机发起以太网广播,CODE字段值为0x09,初始化请求。找到集中器的地址
2、PADO(PPoE Ative Discovery Offer)
单播,集中器收到主机发送的PADI请求后将回应一个PADO报文给主机,表明了可以提供的服务名称和集中器的名称类型
3、PADR (PPoE Ative Discovery Request)
单播,主机对收到的多个PADO回应中挑选一个可以提供服务的分组,对其发送PADR请求,指明需要的服务。
4、PADS(PPPoE Active DiscoverySession- confirmation)
单播,集中器收到PADR请求后将开始准备PPP会话,发送一个PADS请求携带一组唯一的Session回话标志,当主机收到PADS请求后就表明PPPoE的发现阶段结束开始进入PPP阶段。


浙公网安备 33010602011771号