TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看

这篇具有很好参考价值的文章主要介绍了TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以太网帧结构

TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看
以太网帧发送数据时都是从8个字节的前导码开始的。前导码是1和0的交互。

> > 前导码:作用是通知接收方有数据到来。要与其的时钟保持同步。在物理层加进去的。不属于帧这部分
> 
> ​	SPD	:是一个字节10101011,最后使用11,来通知接收方下一个字段就是目的主机的位置。
> 
> ​	DA	:目的节点的MAC
> 
> ​	SA	:源节点的MAC
> 
> ​	Type/length:	2字节,根据数值的不同代表不同的封装格式。
> 
> ​	字段length :0x0000~0x50DC 范围内,该帧为802.3 raw 封装
> 
> ​	字段type0x0600~0xFFFF 范围内,该帧为 Ethernet II 封装
> 
> 	Payload:上层协议有效载荷。最小为46个字节,最大为1500字节,
> 			 对于Type封装格式,上层协议必须保证该字段的值大于46字节;
> 			 对于 Length 封装,对于有效载荷不够46字节的报文链路层必须进行填充。
> 
> ​	FCR 	: 4字节的校验和。(在vlan 头中有trailer字段(尾部标记):trailer是CRC校验和:对应报文的最后4个字节)

以太网帧结构

在以太网中,数据通信的基本单位是 以太网帧 ( frame ),由 头部 ( header )、数据 ( data )以及 校验和 ( checksum )三部分构成:TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看

头部

以太网帧头部包含 3 个字段,依次是:
1、目的地址:长度是 6 字节,用于标记数据由哪台机器接收;
2、源地址 :长度也是 6字节,用于标记数据由哪台机器发送;
3、类型 :长度是 2 字节,用于标记数据该如何处理, 0x0800 表示该帧数据是一个 IP 包(后续章节介绍)。

数据

数据 可以是任何需要发送的信息,长度可变, 46 至 1500 字节均可。

上层协议报文

例如 IP 包,可以作为数据封装在以太网帧中,在数据链路层中传输。
因此,数据还有另一个更形象的称谓,即 负荷 ( payload)。。

校验和

由于物理信号可能受到环境的干扰,网络设备传输的比特流可能会出错。
一个以太网帧从一台主机传输到另一台主机的过程中,也可能因各种因素而出错。
那么当主机收到以太网帧时,如何确定它是完好无损的呢?

答案是: 校验和 。
我们可以用诸如 循环冗余校验 ( CRC )算法,为以太网帧计算校验和。
如果以太网帧在传输的过程出错,校验和将发生改变。

注意到,以太网帧最后面有一个 4 字节字段,用于保存校验和。
发送者负责为每个以太网帧计算校验和,并将计算结果填写在校验和字段中;
接收者接到以太网帧后,重新计算校验和并与校验和字段进行对比 ;
如果两个校验和不一致,说明该帧在传输时出错了。

校验和计算

校验和,校验和应该叫16进制反码求和,就是将所有的字节加起来,再由ffff来减得到的值。
我这来计算ip header的checksum,其他的校验和计算方式一样的

TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看

从报文中看到header checksum为0X495c

整个ip header去除49 5c,为45 00+00 1d+6d 5e+80 01+c0 a8+01 d4+c0 a8+0101=2B6A1(至于为什么00 00不加不解释)

2B6A1=B6A1+2=b6a3

ffff-b6a3=495c

看结果出来了吧,校验和是个很粗糙的计算方式(与md5相比),如果你source 与destination调换一下,结果相同,在链路层计算正确后到达网络层,经过ip头部校验可能还会出错,到达tcp或者udp也还可能出错,只是方便了网络设备的计算。当然你从source发往destination与destination发往source校验和肯定不会相同,应该里面的ttl与标识符会有差别。

TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看
对我们来说能抓到的或者能看到的报文帧,基本上是在目标MAC地址到IP数据包。

1、前导码和帧开始符:

主要做一些底层的数据传输和编码流的二进制流,
它们本身不会被网卡捕获,网卡一般抓包的时候就已经将前导码跟帧开始符解析掉了。

2、帧后面的校验码 (FCS/CRC)

其主要是通过CRC校验判断帧是否有效或者发生篡改或错误,当网卡能收到数据帧并通过抓包工具可以抓到的,就说明该帧没有问题,是有效的,当帧是有效的后,就说明CRC就已经解析掉了。

所以,在整个以太网帧中,能看到的就是目标MAC地址、源MAC地址、帧类型以及IP数据包,当然IP数据包中还会细分许多协议,每个帧之间也是跟CAN类似有,有一定的距离,不可能一帧挨着一帧传输的。

IP数据包里面,有46~1500 字节的长度约束。这不是由ECU决定的。在我们使用的设备中,会有一个最大传输单元(MTU)、MTU一般默认是1518个字节,这就导致IP数据包最多只有1500个字节。

以太网单个最大帧:

6(目的MAC)+ 6(源MAC)+ 2(帧类型)+ 1500(IP数据包(IP头(20)+DATA(1480)))+ 4(CRC校验)=1518字节,
如果带VLAN就是1522字节(VLAN会多出四个字节的帧类型描述)

以太网最小帧:

6(目的MAC)+6(源MAC)+2(帧类型)+46(IP数据包(IP头(20)+DATA(26)))+4(CRC校验)=64字节

常见的以太网帧类型:

0x0800:IPv4

0x0806:ARP

0x8100:VLAN Tag(TPID)

0x86DD:IPv6

0x88F7:PTP / gPTP

0x22F0:AVTP

下图是用工具抓的两个报文,以方便我们来理解以太网帧结构。上图报文以太网帧如果小于64字节,那么会填充00。
TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看
当以太网帧如果大于1518字节,那么会分片,如下图所示。1008字节ICMP报文分2帧传输。
TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看
接下来我们对以太网帧进行更详细的分析
TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看

接下来我们看一个DoIP的报文。下图为用工具抓的一个DoIP报文。
TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看

上图整个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个字节,文章来源地址https://www.toymoban.com/news/detail-417359.html

到了这里,关于TCP/IP协议专栏——以太帧结构 详解——网络入门和工程维护必看的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报

    欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。 专栏:《网络编程》 传输层及其以下的机制由内

    2024年01月16日
    浏览(44)
  • 【网络基础】TCP/IP协议详解

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是在多个不同网络间实现信息传输的通信协议.是由一组不同功能的协议组合在一起构成的协议簇,利用一组协议完OSI所实现的功能. OSI模型对照DOD模型 NFS 网络文件系统 ,英文Network File System(NFS),是由

    2024年02月16日
    浏览(44)
  • 详解TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(35)
  • 【网络】- 计算机网络体系结构 - OSI七层模型、TCP/IP四层(五层)协议

    但凡学习计算机网络知识,肯定绕不过网络协议的,而说的计算机网络协议,总是会听到 OSI七层模型 、 TCP/IP四层协议 ,有些文章又会说成是 TCP/IP五层协议 ,刚入门学这些网络协议时,给我整得一愣一愣的。 这篇文章的目的就是把计算机网络体系的这几个协议给尽可能讲清

    2024年02月03日
    浏览(46)
  • 计算机网络笔记:计算机网络体系结构(OSI七层模型、TCP/IP五层协议)

    计算机网络是一个复杂的、具有综合性技术的系统,它由计算机系统、通信处理机、通信线路和通信设备、操作系统以及网络协议等组成。为了更好地描述计算机网络结构,使计算机网络系统有条不紊地处理工作,需要定义一种较好的网络体系结构。分层结构就是一种较好地

    2024年02月07日
    浏览(40)
  • 计算机网络——OSI与TCP/IP各层的结构与功能,都有哪些协议?

    学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。 结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。 1.1 应用层 应用层(application-layer)的任务是通过应用进程

    2024年02月10日
    浏览(45)
  • TwinCAT3以太网TCP/IP自由协议通讯

    目录 一、TwinCAT3以太网TCP/IP客户端创建 1、系统连接示意图 1、程序创建 (1)工程创建和授权添加  (2)库文件添加  (3)变量创建 (4)程序 2、测试 (1)网络调试助手创建服务端监听 (2)PLC端的Client连接服务端  (3)PLC端给服务端发送数据  (4)服务端给PLC发送数据 二、

    2024年02月15日
    浏览(38)
  • 计算机网络之TCP/IP协议第二篇:OSI参考模型详解

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(37)
  • 详解TCP/IP协议第五篇:详细介绍网络传输中的地址

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月07日
    浏览(29)
  • 一些HTTP、TCP、IP、以太报文结构图

    都是我在学习时候整理的一些报文结构,单独的各图例如下: 模型、URL HTTP 报文 IP 报文 以太网报文 如果图中有错误或希望更多的图例,评论或私聊告诉我就好,我之后再完善上

    2024年01月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包