物理层和数据链路层

物理层

物理层主要定义了网络传输过程中的接口标准,线缆标准,传输速率,传输方式等。

物理层主要考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。

数据传输通过2种信息进行传输

  1. 数字信号 (双绞线 光纤)
  2. 模拟信息 (电话线 同轴电缆)

数字信息的传输距离一般比较近,抗干扰能力弱。而模拟信息,干扰能力弱,但是传输距离比较远。

网线的传输距离是比较的近的,不能远距离传输,远距离会影响速率

通信模型

在传输过程中都涉及到数字信号的转换

信道

信道指的是信息传输的通道,一个传输介质能够有几条传输的通道。

一般网线是有多条信道,同轴电缆只有一条信道。

单工通信

只能由一个方向向另一个方法通信,比如广播。

半双工通信

可以双向通信但是不能同时进行。

全双工通信

可以两个方向同时进行的通信。

数据链路层

链路:链路指的是从一个节点到相邻节点的一段物理线路,过程中没有其他的交换节点。

数据链路: 在一个数据链路上传输数据的时候,需要有对应的协议来控制数据的传输。

数据在数据链路层传输的最小单位是帧。数据是由一个帧一个帧的数据进行传输的。

在数据链路层因为数据传输的介质的不同,数据的传输通信协议也是不同的。

广播信道

CSMA/CS 协议,广播信道上连接的主机比较多,因此使用共享信道协议协调这些主机的发送。比如集线器,同轴电缆组成的网络。

点对点信道

使用PPP 协议,一对一的点对点传输协议。

协议解决的问题

封装成帧

封装成帧是将上层也就是网络层,传输下来的数据包,对数据包的头部和尾部分别添加帧的开始和结束符,将数据封装成帧。

帧的结构为中间部分为ip数据包(packet)。其中数据的大小必须小于等于 MTU(Maximun Transfer Unit)最大的传输单位,最大为1500 字节。(如果数据超过1500字节,就需要分为多个帧进行传输)。

帧的首部和尾部有一个重要的作用就是帧定界。(确定帧的界限)

帧的开始符和结束符,使用控制字符SOH 和EOT 来表示帧的开始符和帧的结束符号。

透明传输

帧使用特殊字符表示帧的开始和结束,那么数据部分也可能包含帧的开始符和结束符,可能会导致数据包错误,误以为数据包的开始和结束。

这种情况的发生不应该是上层的网络层需要考虑的,这种情况应该是不应该发生的,是透明的。

为了解决这个问题,那么就需要将数据部分的包含 SOH 和EOT 的字符替换掉。

通过ESC 转义的的方式进行处理。

差错校验

在数据部分的后面,帧结束符之前,有一部分数据的内容为FCS,这个部分是通过数据部分 + 链路层的首部 计算得出来的,目的是在传输过程中对数据进行校验是否完整。

除了FCS的校验方式,还广泛使用CRC(循环冗余校验)的检错技术。也是用来保证数据的完整可靠传输。

主要是为了数据传输的可靠性。

CSMA/CD 协议

CSMA/CD即载波侦听多路访问/冲突检测,是广播型信道中采用一种随机访问技术的竞争型访问方法,具有多目标地址的特点。它处于一种总线型局域网结构,其物理拓扑结构正逐步向星型发展。CSMA/CD采用分布式控制方法,所有结点之间不存在控制与被控制的关系。

CSMA/CD 协议的主要特点是

  • 多点接入 多点连接的网络
  • 载波监听 半双工通信,一直要检查信道上是否有其他的数据在发送。
  • 碰撞检测 在发送的过程中会判断是否有信道的冲突,当检查到有冲突的时候会停止发送。并且如果数据包比较小的时候可能还未检测到冲突就发送完了,所以要求帧(以太网帧)最小64字节

CSMA/CD 协议的网络可以称为是以太网。传输的是以太网帧。而目前在用的其他网络,已经不再使用CSMA/CD 网络,传输的帧依然是以太网帧。

以太网帧的格式有

  • Ethernet V2 标准 (用的最多)
  • IEEE 的802.3标准

Ethernet V2帧

  • 以太网栈的一个特点是没有帧的开始符号和结束符号,通过曼彻斯特编码根据信号挑变来确定是否帧结束。
  • 帧的开始位置 有目标mac地址 源mac地址和网络类型
  • 帧的末尾有FCS 加密校验信息
  • 在传输到物理层的时候,会在帧的前部插入前同步码和帧的开始定界符

2个字节的网络类型,表示当前的是ipv4 还是ipv6。

长度

以太网帧的数据长度 必须大于46 小于1500字节。当数据如果小于46 的时候,会通过填充的方式填充成46个字节。

整个以太帧的数据长度为 64 - 1518 字节 (数据 46 -1500 + 目标mac 6 + 源mac 6 + 网络类型 2 + FCS 4)

PPP协议 (Point to Point Protocol)

ppp 协议用于点对点传输。 结构如下

  • 帧的头部和尾部 都是F7E ,有帧的开始符和结束符 0x7E
  • 帧的尾部 有FCS 校验信息
  • 帧的头部 A FF 是地址信息,因为是点对点传输,此值不需要地址信息,目前没有用.只有一条链路,所以不需要对应的地址。
  • 帧的头部的C 03 0x03 是控制信息,目前没用
  • 协议字段 ppp协议内部用的具体协议。

网络在数据链路层中由目标主机发送以太网帧,通过路由器到路由器的点对点传输的时候,将转换成ppp协议。

字节填充

ppp协议同样针对数据中出现开始和结束符添加数据标识填充。将7E 拆分成7D5E ,如果数据中有7D 添加5D填充。根本是为了透明传输。

网卡接收到数据 将数据的校验位和字节填充去掉后把数据向上层传递。如果接收的数据的差错校验是错误的,这个数据包就直接丢弃了。

网络数据抓包

使用wireshark 抓取网络包内容.可以看到Ethernet V2 协议帧的内容

通过查看网络包可以看到真实的数据和原始数据中对应的数据的位置。

总结:

  1. 物理层主要定义如何在物理设备上传输数据,主要有2种 光纤,网线传递数字信号,电话线,同轴电缆传递模拟信号。

  2. 数据链路层 定义了一个节点到相邻链路的传输协议。

  3. 数据链路层主要解决了封装成帧,透明传输,差错校验问题。

  4. CSMA/CD协议是广播协议,内部使用以太网帧。

  5. PPP协议是点对点协议。协议上不包含地址信息

  6. 数据在多对多的设备传输,使用以太网帧 传输,帧内有目标mac 和源mac信息,传输到路由到路由的传输后,做协议转换成PPP协议,不包含地址信息。