【计算机网络】数据链路层详解

1、概念

主要功能:用于两个设备(同一种数据链路节点)之间进行信息传递。

网络层和数据链路层对比: 网络层是进行地址管理和路由选择的,是为数据报的转发找出一条路来;而数据链路层解决的是两个结点之间的数据交换,数据链路层接近于物理层的概念。

 

2、以太网

2.1 概念

以太网不是具体的网络,而是一种技术标准。包含数据链路层和物理层的内容。例如:规定了网络拖拓扑结构、访问控制方式、传输速率。

以太网是当前最广泛的局域网技术,还有令牌环网,无限LAN等。

 

2.2 以太网数据帧格式

【计算机网络】数据链路层详解_第1张图片
1)源地址和目的地址:MAC地址(48位)

2)类型

08xx 协议类型
0806 ARP请求
0835 ARP应答
0800 ip协议

 

2.3 为什么存在MAC地址还需要IP地址去标识互联网中的一台主机呢?

在数据链路层,存在多种异构的网络,比如以太网、令牌环网等,也就是数据链路层存在多种MTU,既然存在多种不同的传输信道,如果只有MAC地址,在不同的网络之间是没有办法传输的,只能在MAC地址上封装一次抽象的IP地址来封装底层各种不同的网络。
 

MAC地址和IP地址的对比

  • 一个数据报中的源IP地址和目的IP地址是为了标识这个数据的起点和终点
  • 源MAC地址和目的MAC地址是为了标识上一站的地址和下一站的地址
  • 在一个数据报的传输过程中,IP一直不变,而MAC地址是一直在变的

 

3、最大传输单元MTU

这个限制是不同的链路层对应的物理层的限制。

  • 以太网帧中的数据长度规定最小46字节,最大1500字节(ARP:如果不够46字节,则要在后面补填充位);如果大于1500字节,必须在网络层分片。
  • MTU的最大值为1500,称为以太网的最大传输单元,不同的网络类型有不同的MTU
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片。
     

3.1 MTU对IP地址的影响

由于链路层存在MTU的限制,导致网络层的报文如果超过1500字节,就必须要对齐进行分片发送。

  • 将ip包分成多个小包,每个小包的ip协议头的16位标识都是相同的。
  • 每个小包的3位标志字段中,第一位保留;第二位为1,表示禁止分片;第三位标识结束标识,置为1。
  • 达到对端之后,将这些小包按照顺序重组,拼接完成后返回给传输层。如果任一小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据。

 

3.2 MTU对UDP协议的影响

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个ip数据报;
  • 任意一个丢失,那么就会在接收端的网络层重组失败。如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加。

 

3.3 MTU对TCP的影响

  • TCP数据报也不能无限大,单个数据报的最大消息长度,称他为MSS。
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后选择较小的作为最终的MSS。MSS的值就是在TCP首部的40字节变长选项中(kind=2)。
  • MSS = MTU - TCP首部 - IP首部,既TCP报文的数据长度

 
在Linux系统中可以使用ifconfig命令查看MAC、IP和MTU:
【计算机网络】数据链路层详解_第2张图片

 

4、数据链路层的三个基本问题

4.1 封装成帧

封装成帧:帧是数据链路层的传送单位。一个帧的帧长等于帧的数据部分加上帧的首部和尾部的长度。首部和尾部的一个重要作用是帧定界(确定帧的界限)。每一种链路层协议都规定了所能传输的帧的数据部分的上限既最大传输单元MTU。

【计算机网络】数据链路层详解_第3张图片
对于帧定界做以补充

1)当数据是由ASCII组成的文本文件时,使用特殊的帧定界符。

SOH(Start Of Header)放在帧的最前面,表示帧的开始。十六进制编码是01(二进制00000001)

EOT(End Of Transmission)表示帧的结束。十六进制编码是04(二进制00000100)

SOH和EOT只是控制字符的名称。
 

2)当数据是非ASCII码的文本文件(字符都是从键盘上输入)时
【计算机网络】数据链路层详解_第4张图片

字节填充:发送端的数据链路层在数据中出现了控制字符SOH或者EOT时,就在其前面加上转义字符“ESC”(十六进制为1B,二进制为00011011)。如果数据中出现了转义字符,也在其前面加上一个转义字符。在接收端的数据链路层在把数据向网络层传送之前,删除这些转义字符。

 

4.2 透明传输

透明传输:表示无论什么样的比特组合的数据,都能按照原样没有差错的通过这个数据链路层。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。

解决方法:字符填充。
 

4.3 差错检验

在计算机网络传输数据时,必须采用各种差错控制技术。目前在数据链路层广泛使用了循环==冗余检验(CRC)==的检错技术。

为什么数据链路层要以帧为单位来传送数据呢? 因为如果不以帧为单位,就无法加入冗余码来进行差错检验。

【计算机网络】数据链路层详解_第5张图片
 

5、点对点协议PPP

一个主站轮流和链路上的多个从站进行通信。只支持点对点的链路通信,只支持全双工链路。

PPP协议的三个组成部分

1)一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。

2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP。

3)一套网络控制协议NCP。
 

5.1 PPP协议格式

【计算机网络】数据链路层详解_第6张图片
1)标志字段F:0x7E(01111110):表示一个帧的开始或者结束。标志字段就是PPP帧的定界符。

2)地址字段A:0xFF(11111111)

3)控制字段C:0x03(00000011)

4)协议字段:为0x0021时,PPP协议帧就是IP数据报;为0xC021时,信息字段就是PPP链路控制协议LCP的数据;为0x8021时表示网络层的控制信息。

5)FCS:使用CRC帧检验的冗余码。

 

6、其他重要的协议或技术

6.1 、NAT技术

一种将私有IP和全局IP转换的技术

1)静态NAT(一对一)
内部网络的私有ip地址转换成公有ip地址

2)动态NAT(多对多)
私有IP地址可随机转换为任何指定合法的IP地址

3)网络地址端口转换 NAPT(多对一)
改变外出数据包的源端口并进行端口转换

NAPT是使用最普遍的一种转换方式,它有两种转换方式:SNAT,DNAT
源NAT(SNAT):修改第一个数据包的源地址。伪装数据包就是SNAT的例子。
目的NAT(DNAT):修改第一个数据包的目的地址。如平衡负载、端口转发、透明代理

 

6.2 NAT和代理服务器

代理服务器:客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果传给客户端。

NAT和代理服务器的区别
1)应用上:NAT设备是网络基础设备之一解决IP不足的问题。代理服务器更贴近具体应用

2)底层上:NAT是工作在网络层,直接对ip地址进行替换。代理服务器工作在应用层。

3)范围上:NAT一般在局域网出口部署。代理服务器可以在局域网,也可以广域网,也可以跨网。

4)部署位置:NAT一般集成在防火墙,路由器等硬件设备。代理服务器则是一个软件程序,需要在服务器上。

你可能感兴趣的:(计算机网络,以太网,网络,数据链路层)