概述
这里写目录标题
- 数据链路层
- 点对点协议(PPP协议)
- 以太网协议
- 认识以太网
- 以太网帧格式
- 认识MAC地址
- 对比理解MAC地址和IP地址
- 认识MTU
- MTU对上层协议的影响
- 查看硬件地址和MTU
- ARP协议(地址解析协议)
- ARP协议的作用
- ARP数据报格式
- ARP协议的工作原理
数据链路层
主要解决的问题就是分组在一个网络(或者一段链路上)传输的问题。
1.什么是数据链路层:
- 链路:从一个节点到相邻节点的一段物理线路,并且中间没有任何其他的交换节点。(就是一条线路连接的两个节点)
- 数据链路:把实现通信协议的硬件和软件加到链路上,就构成了数据链路。(以特定的协议运送数据的路线)
- 帧:数据链路层主要是将传输的数据封装成帧进行传输。
2.使用点对点信道的数据链路层:
- 封装成帧:给上层交付下来的协议数据单元加上一个帧头,加上一个帧尾。(加一个头部,加一个尾部)
其中:
①帧头和帧尾:包含有重要的控制信息。
②帧头和帧尾:主要作用之一就是帧定界。(就是传输到另一方的时候,另一方方可以通过帧头帧尾的界限去知道这是一个协议单元)
透明传输:数据链路层对上层的交付的数据没有任何限制。(也就是上层只管往下交付数据,即使交付下来的数据中有帧定界的内容,也会在数据链路层的协议下进行调整)
①:字节填充实现透明传输。(面向字节的物理链路)
②:比特填充实现透明传输。(面向比特的物理链路)
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。(但是不能超过MTU) - 差错检测:比特在传输时可能会产生差错。(对于这些应对措施,帧在帧尾部有一个帧检验序列,就是为了让接收方的数据链路层检查帧在传输过程中是否产生了误码)
检错方法:奇偶校验,CRC循环冗余校验。 - 可靠传输:也就是在传输层为tcp协议下的可靠传输。
3.媒体接入控制:主要分为两类。(静态划分信道和动态接入控制)
①共享信道:要考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,也就是媒体接入控制MAC。(因为多台主机连接在一个同轴电缆上,这些主机同时发送数据势必会造成碰撞)
②静态划分信道:预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低。通常在物理层使用。
信道复用:通过一条物理线路同时传输多路用户信号。(当网络中的传输媒体的传输容量大于多条单一信道传输的总通信量时,可以利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽)
- 频分复用(FDM):所有用户同时占用不同的频带资源并进行通信。
- 时分复用(TDM):所有用户在不同时间占用同样的频带宽度。
- 波分复用(WDM):也就是光纤,根据光波长的不同而进行分辨。
- 码分复用(CDM):所用用户可以在通信的时候使用同样的频带进行通信。(并且不会造成干扰,是因为各个用户使用经过特殊挑选的不同的码型)
而对于上面的复用都可以用于多址:频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA),波分复用没有。
- 复用:将单一媒体的频带资源划分成很多子信道,并且这些子信道之间相互独立,互不干扰。从整体上看,这些信道只占用该媒体频带资源的一部分。
- 多址:处理的是动态分配信道给用户。这在用户仅仅暂时性的占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性分配给用户的应用中,多址是不需要的(例如无线广播或者电视广播站)。
③动态接入控制:
- 随机接入:所有站点通过竞争,随机的在信道上发送数据。如果由多个站点同时发送数据,肯定会造成数据碰撞,会让所有站点的发送都失败,所以必须通过协议去解决这些问题。
4.使用广播信道的熟路链路层(也是动态接入控制):
①:早期的共享式以太网的媒体接入控制协议CSMA/CD协议
其中:
- CS(载波监听):每个主机在发送帧之前先检查总线上是否被占用,如果占用则等待,如果空闲时间超过96bit时间则发送。
- MA(多址接入):多个主机连接在一条总线上,竞争使用总线。
- CD(碰撞检测):每一个正在发送帧的主机,一边检测碰撞,一边发送,一旦遇到碰撞,退避一段时间后再发送。
②:802.11无线局域网的媒体接入控制协议CSMA/CA协议
其中:也是用的载波监听和多址接入,但是不能使用碰撞检测。
原因:在无线局域网中,由于信道很特殊,信号强度范围非常大,所以无线网卡接收到的信号强度往往小于发送信号强度。如果要在无线网卡上实现碰撞检测CD,对硬件要求非常高。(并且无线电波传播由隐蔽站问题,也就是对于相同的一个站点,由两个不能检测到对方的站点,但是可以检测到同一个站点,此时这两个站点同时给这个站点发送数据,那么发生碰撞了,它俩都不知道)
所以802.11无线局域网的媒体接入控制协议为CSMA/CA协议
- CA:碰撞避免功能。(无线信道误码率高,由于不可能避免所有碰撞,所以还使用了数据链路层的确认机制(停止等待协议),来保证数据被正确接收)
点对点协议(PPP协议)
1.点对点协议:是目前使用最广泛的点对点数据链路层协议。
2.在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法。(也就是封装成帧)
- 链路控制协议LCP。(用于建立、配置以及测试数据链路的连接)
- 一套网络控制协议NCPs。(其中的每一个协议支持不同的网络层协议)
3.帧格式:
其中: - F(标志字段):也是帧定界。(取值为0x7E)
- A(地址字段):预留位。(取值为0xFF)
- C(控制字段):预留位。(取值为0x03)
- P(协议字段):指明帧的数据部分送交哪个协议处理。(取不同值的时候,对应不同的协议处理)
例如:0x0021对应的帧数据部分是IP数据包、0xC021对应的是帧数据部分是LCP分组、0x8021对应的帧数据部分位NCP分组。 - FCS(帧检验序列字段):使用的是CRC循环冗余校验法。
4.PPP协议向上不提供可靠传输服务。
以太网协议
认识以太网
- "以太网"不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。(规定网络拓扑结构,访问控制方式,传输速率等)
- 以太网中网线必须使用双绞线;传输速率有10M,100M,1000M等。
- 以太网是当前应用的最广泛的局域网技术;和以太网并列的还有令牌环网,无线网LAN等。
以太网帧格式
如图:
其中:
- 6字节的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度为48位,是在网卡出厂时固化的;
- 2字节的帧协议类型字段三种值,分别对应IP、ARP、RARP;
- 4字节的帧末尾是CRC校验码。
其中:
①:MAC地址是以太网的MAC子层所使用的地址;(数据链路层)
②:IP地址是TCP/IP体系结构网际层所使用的地址;
③:ARP协议属于TCP/IP体系结构的网际层,其作用是一致设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址;
认识MAC地址
1.MAC地址的作用:当多台主机连接到同一个广播信道上,如果说一台主机发送数据到广播信道上,所有主机都会接收到,对于该广播信道上的所有主机而言,通过发送数据上携带的标志信息,才能知道这个数据是不是发送给自己的。所以说MAC地址是每个主机都必须有的一个唯一的标识。(即一个数据链路层地址)
2.在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。这是也是接收主机知道这个数据是不是发送给自己的。由于这类地址是用于媒体接入控制MAC,因此被称为MAC地址。
其中:
- MAC地址一般被固化在网卡中,所以被叫做硬件地址。
- MAC地址有时被称作为物理地址。(但不是属于物理层)
- MAC地址是对网路欧尚各接口的唯一标识,而不是呗网络上各设备的网络标识。(一般情况下,用户主机会包含一个有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡),并且每个网络适配器都有一个全球唯一的MAC地址,所以有一个设备多个网络接口,就会有多个MAC地址,比如交换机和路由器)
3.MAC地址格式
MAC地址一般是由48个bit位(6个字节)组成,并且每个字节以16进制表示,以:进行间隔开。
如下,是Linux下的MAC地址:
但是在windows系统下,MAC地址的表示方法是中间以-进行分开的。
对比理解MAC地址和IP地址
1.IP地址:是因特网上主机和路由器所使用的地址,用于标识两部分信息。
2.MAC地址:不具备区分不同网络的功能
- 如果只是一个单独的网络,不接入因特网,那么只使用MAC地址。
- 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
3.从网络体系结构来看:
- IP地址属于网络层的内容,所以在数据单元到网络层添加的网络层首部具有源IP地址和目的IP地址。
- MAC地址属于数据链路层的内容,所以数据单元在数据链路层添加的数据链路层首部应该封装有源MAC地址和目的MAC地址。
4.数据包转发过程中IP地址与MAC地址的变化情况:
- IP地址:从始至终都不会发送变化。(源IP地址和目的IP地址)
- MAC地址:在每两个节点间的变化都是不同的,到达一个节点,就会将MAC的源端改成当前到达的这个节点的MAC地址,而将目的端MAC地址改成下一个要去的节点的MAC地址 。
认识MTU
MTU:每个数据单元的最大传输单元。(也就是相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。)
其中:
- 以太网帧中的数据长度规定最小46字节,最大1500字节,而ARP数据包长度如果不够46字节的话,就必须进行填充。
- 而最大值1500字节就被称为以太网的最大传输单元MTU,并且根据不同的网络,这个MTU的大小是不同的。
- 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。
- 不同的数据链路层标准的MTU是不同的。
MTU对上层协议的影响
1.MTU对IP协议的影响
由于数据链路层MTU的限制,对于较大的IP数据包要进行分片。
如下图:
- 当IP数据包裹到达数据链路层的时候,如果说此时这个包裹大于MTU,那么就会将其包裹进行分片处理,并且给每个片上加上标识。
- 每个分片的IP协议头的16位标识(id)都是相同的。
- 每个分片的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0)。
- 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层。
- 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据。
2.MTU对UDP协议的影响
UDP协议:是用户数据包协议。(不可靠的,无连接的服务)
- 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报。
- 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败。那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了。
3.MTU对TCP协议的影响
TCP协议:是传输控制协议。(可靠的,基于连接的,面向字节流)
- TCP的一个数据报也不能无限大, 还是受制于MTU。TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);
- TCP在建立连接的过程中, 通信双方会进行MSS协商。
- 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
- 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
- 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS。
- MSS的值就是在TCP首部的40字节变长选项中(kind=2)。
MTU和MSS的关系如图:
所以对于MTU对数据部分还是比较重要的,他会对上层的数据大小由一定的影响。
查看硬件地址和MTU
使用ifconfig命令, 即可查看ip地址, mac地址, 和MTU,如下图:
ARP协议(地址解析协议)
ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网
络层之间的协议
ARP协议的作用
1.作用:ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址。
2.原因:ARP协议建立了主机 IP地址 和 MAC地址 的映射关系
- 在网络通信的时候,源主机的应用程序知道目的主机的IP地址和端口号,但是不知道目的主机的硬件地址。(MAC地址)
- 数据包是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址和本机不符,则丢弃。
- 因此在通信前必须获得目的主机的硬件地址。
ARP数据报格式
如下图:
其中,我们可以注意到:
- 源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,这种情况对于链路层为以太网的情况是多余的,而对于其他类型的网络则是有必要的。
- 硬件类型:指数据链路层的网络类型。 (例如:1为以太网)
- 协议类型:要转换的地址类型。(例如:0x0800为IP地址)
- 硬件地址长度:对于以太网地址为6个字节。
- 协议地址长度:对于IP地址为4个字节
- op字段:1表示ARP请求;2表示ARP应答。
ARP协议的工作原理
首先我们先看下图:
假设主机A要给主机B发送数据包,但是我们知道,主机A是不知道主机B的MAC地址,并且如果一个主机接收到的数据报上的MAC地址与自己的MAC地址不匹配的话,会直接将这个数据包丢弃,所以我们在发送数据的时候肯定会将接收方的MAC地址搞到手,而这个操作就是ARP协议的作了。
具体的原理是什么?如下:
-
首先,主机A会在自己的ARP高速缓存表中通过目的主机的IP地址找出目的主机对应的MAC地址,然后填写在自己要发送的MAC数据帧中。如果没有,就要继续通过下面的方式进行。
ARP高速缓存表如下:
其中主机ARP高速缓存表中会有对应主机IP的MAC地址,并且有动态和静态之分。
①动态:记录的是主机自动获取到的信息,并且生命周期默认是2分钟。(生命周期到后,该信息会自动删除,主要的愿意是IP地址和MAC地址的对应关系并不是永久性的,例如主机更换网卡(IP地址没变,但是MAC地址变了))
②静态:管理员手工设置的,不同的操作系统下的生命周期不同。(例如:系统重启后不存在或者重启后依然有效) -
如果高速缓存表中没有对应的IP地址,那么主机A就会发送一个ARP请求报文的广播帧(此时会将源端IP地址和源端MAC地址和对端IP地址封装在里面)(广播帧的目的地址是广播地址,也就是全1),然后在这个网络中的所有主机都会收到这个广播帧,并且接收到的广播帧会将目的端的IP地址与自己的IP地址进行比较,看看是不是发送给自己的。
-
识别到是发送给自己的广播帧后,也就是主机B接收到后。会首先将主机A的IP地址与MAC地址记录到自己的ARP缓存表中;然后给主机A发送ARP响应报文。(包含有主机B的IP地址和主机B的MAC地址,并且ARP响应报文被封装在MAC帧中发送)
-
主机A接收到主机B发送过来的ARP响应报文后,解析后将其所记录的IP地址和MAC地址记录到自己的ARP高速缓存表中。
-
然后主机A就可以给主机B发送数据包了。
注意:ARP协议只能在一段链路或者一个网络上使用。
最后
以上就是野性含羞草为你收集整理的数据链路层-------以太网协议数据链路层点对点协议(PPP协议)以太网协议ARP协议(地址解析协议)的全部内容,希望文章能够帮你解决数据链路层-------以太网协议数据链路层点对点协议(PPP协议)以太网协议ARP协议(地址解析协议)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复