个人学习、复习用,若侵删。
https://www.yuque.com/u41716106/ni1clp/srx7v7wp214d1g4u?singleDoc# 《【学习】2. 网络接口层协议(以太网、令牌环、PPP 等)》
参考资料:
前言:
总结:
【TCP/IP 协议族】网络接口层(物理层+数据链路层)协议(以太网、令牌环、PPP 等)
网络接口层协议介绍(以太网、令牌环、PPP 等)
TCP/IP 支持多种不同的网络接口层协议
以太网
- 以太网是当今现有局域网采用的最通用的通信协议标准。
- 该标准定义了在局域网(LAN)中采用的电缆类型和信号处理方法
令牌环
- 令牌环网(Token Ring)是一种 LAN 协议,定义在 IEEE802.5 中,其中所有的工作站都连接到一个环上,每个工作站只能同直接相邻的工作站传输数据。
- 通过围绕环的令牌信息授予工作站传输权限。
FDDI
- 中文名为“光纤分布式数据接口”,它是于80年代中期发展起来一项局域网技术,它提供的高速数据通信能力要高于当时的以太网(10Mbps)和令牌网(4或16Mbps)的能力。FDDI技术同IBM的Tokenring技术相似,并具有LAN和Tokenring所缺乏的管理、控制和可靠性措施,FDDI支持长达2KM的多模光纤。FDDI网络的主要缺点是价格同前面所介绍的“快速以太网”相比贵许多,且因为它只支持光缆和 5类电缆,所以使用环境受到限制、从以太网升级更是面临大量移植问题。
广域网常见协议
SLIP(串行链路网际协议)
-
- 串行线路IP(SLIP)用于运行TCP/IP的点对点串行连接。 SLIP 通常专门用于串行连接,有时候也用于拨号,使用的线路速率一般介于 1200bps和19.2Kbps之间。SLIP允许主机和路由器混合连接通信(主机-主机、主机-路由器、路由器-路由器都是 SLIP 网络通用的配置)
PPP(点对点协议)
-
- PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议这种链路按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
网络接口层简介:
- WIFI与以太网的位置:WIFI和以太网都工作在数据链路层和物理层(TCP/IP 中统一为网络接口层)
它们是两种不同的网络接入技术:
-
- WIFI (IEEE 802.11): 无线传输
- 以太网 (IEEE 802.3): 有线传输
- 与TCP/IP协议栈的关系
-
- 物理层
-
- WIFI: 使用射频(RF)信号在2.4GHz或5GHz频段传输
- 以太网: 通过双绞线、光纤等介质传输
-
- 数据链路层
-
- WIFI: 实现无线介质访问控制(MAC)
- 以太网: 实现有线介质访问控制
- 共同点: 都负责将数据打包成帧(Frame)
网络接口层(链路层)
中数据包(帧头/首部+应用数据)
叫做:数据帧(frame)
【以太网帧】
【网络接口层】以太网 (IEEE 802.3): 有线传输
以太网帧、IP数据报的图解格式(包含相关例题讲解,一题足够)_以太网帧格式-CSDN博客
以太网数据帧详细解析 逐字节分析 - jueyuanfengsheng - 博客园
TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看_以太网帧结构-CSDN博客
以太网中,数据通信的基本单位是 以太网帧 ( frame )。
下面的封装是 (前导码+帧开始符)【物理层】+以太网帧【TCP/IP 网络接口层——数据链路层】,用于在物理层传输
这里把物理层的帧 —— 前导码(preamble)、帧开始符(SPD),简单讲了
对我们来说能抓到的或者能看到的报文帧,基本上是在目标MAC地址到IP数据包。
前导码(preamble)、帧开始符(SPD):8 字节
- 共占字节大小:8 字节
- 前导码(preamble)
-
- 7 字节
- 作用是通知接收方有数据到来。要与其的时钟保持同步。在物理层加进去的。(不属于帧这部分)
- 帧开始符(SPD)
-
- 1 字节
- 是一个字节
10101011
,最后使用11,来通知接收方下一个字段就是目的主机的位置。
以太网II / Ethernet_II 帧结构:64-1518 字节
在以太网中,数据通信的基本单位是 以太网帧 ( frame ),由 头部 ( header )、数据 ( data )以及 校验和 ( checksum )三部分构成:
- 以太网帧首部/头部
字段名称 | 长度(Bytes) | 含义 |
D.MAC 目标 MAC 地址 | 6 字节 | 网络包接收方MAC地址,在局域网中使用这一地址来传输网络包 用于标记数据由哪台机器接收 |
S.MAC 源 MAC 地址 | 6 字节 | 网络包发送方MAC地址,接收方通过它来判断是谁发送了这个包 用于标记数据由哪台机器发送 |
EtherType 类型 | 2 字节 | 使用的协议类型(表示后面的数据是什么类型协议报文数据) 用于标记数据该如何处理 TCP通信中IP协议与ARP协议较常见
|
- 常见以太网帧类型
- 数据
字段名称 | 长度(Bytes) | 含义 |
数据 | 长度可变, 46 至 1500 字节均可 | 可以是任何需要发送的信息 上层协议报文 例如 IP 包,可以作为数据封装在以太网帧中,在数据链路层中传输。 因此,数据还有另一个更形象的称谓,即 负荷(payload)。 |
- 帧校验码 \ 校验和
由于物理信号可能受到环境的干扰,网络设备传输的比特流可能会出错。一个以太网帧从一台主机传输到另一台主机的过程中,也可能因各种因素而出错。
那么当主机收到以太网帧时,如何确定它是完好无损的呢?答案是: 校验和 。
我们可以用诸如 循环冗余校验(CRC )算法,为以太网帧计算校验和。如果以太网帧在传输的过程出错,校验和将发生改变。
字段名称 | 长度(Bytes) | 含义 |
FRC / CRC | 4 字节 |
如果两个校验和不一致,说明该帧在传输时出错了 |
- 校验和计算
校验和应该叫16进制反码求和
:将所有的字节加起来,再由 0xFFFF 来减得到的值。
看结果出来了吧,校验和是个很粗糙的计算方式(与md5相比)。
- 如果你source 与destination调换一下,结果相同,在链路层计算正确后到达网络层,经过ip头部校验可能还会出错,到达tcp或者udp也还可能出错,只是方便了网络设备的计算。
- 当然你从source发往destination与destination发往source校验和肯定不会相同,应该里面的ttl(生存时间)与标识符会有差别。
校验和计算实例
IP头部(按16位分组):4500 // 版本+头部长度+服务类型+总长度001d // 标识6d5e // 标志+片偏移8001 // TTL+协议0000 // 校验和位置(先填0)c0a8 // 源IP高16位01d4 // 源IP低16位c0a8 // 目的IP高16位0101 // 目的IP低16位
——————————————————————————————————————————————————————————————————————
计算流程:
1. 把这些数加起来:4500 + 001d + 6d5e + 8001 + 0000 + c0a8 + 01d4 + c0a8 + 0101 = 2B6A1
2. 如果有进位(超出16位的部分)要加回来:2B6A1 = B6A1 + 2B6A1 + 2 = B6A3
3. 取反(NOT):B6A3 取反 = 495C (这就是校验和)- 取反: FFFF - B6A3 = 495C
——————————————————————————————————————————————————————————————————————
检验是否准确:
- 整个 ip header 去除 495C
以太网最大最小帧:
- 以太网单个最大帧:1518字节
6(目的MAC)+ 6(源MAC)+ 2(帧类型)+ 1500(IP数据包(IP头(20)+DATA(1480)))+ 4(CRC校验)= 1518字节,
如果带VLAN就是1522字节(VLAN会多出四个字节的帧类型描述)
- 以太网最小帧:64字节
6(目的MAC)+6(源MAC)+2(帧类型)+46(IP数据包(IP头(20)+DATA(26)))+4(CRC校验)= 64字节
常见不同类型的以太网帧格式:
抓包分析:
- 分析组成
其中,以太网首部占用14字节、FCS(Frame Check Sequece)(帧校验码)长4个字节,用于检验数据在传输过程中数据是否出现了错误,为CRC32校验码。
-
- 以太网首部占用14字节,首位开始是目的地址占用六个字节,其次是源地址,占用6个字节,然后是类型占用两个字节。
- 以太网帧除去首部14字节和尾部FCS4字节;(共18字节)剩下的中间的部分就是IP数据报
- 尾部FCS,4字节
- 抓包 IP 报文
# Ethernet_II格式数据帧首部 14 bytes
00 0c 29 8b 37 da # 目标MAC地址 00:0c:29:8b:37:da
00 50 56 c0 00 08 # 源MAC地址 00:50:56:c0:00:08
08 00 # IP协议# IP数据包# CRC
- 抓包 DoIP 报文
上图整个DoIP报文整个一个帧是69个字节(14 + 20 + 20 + 8 + 4 + 3),
其实还要再增加4个字节的CRC,总共73个字节。
只不过当网卡识别它是一个有效帧后,就把 CRC 解析掉了。
当然,图中也描述了
1、以太帧头:它的源MAC地址(6个字节)和目的MAC地址(6个字节),再加上2个字节的帧类型,共14个字节。
2、IP头:最小是20个字节。
3、 TCP头:DoIP报文是一个UDS的报文,而UDS报文都是通过TCP传输的,因此,会有个TCP的头部,包括 Src
Port(源端口):13400(这是DoIP的一个端口号)以及 Dst Port(目的端口):50090。TCP的长度是20个字节;
4、 DoIP协议头部是8个字节的长度;需要注意的是,DoIP的头部并不包括源DoIP地址和目标DoIP地址这4个字节;
5、Payload:3个字节