以太网帧、IP数据报的图解格式(包含相关例题讲解,一题足够)

文章详细介绍了网络通信中UDP段、IP数据报和以太网帧的结构,包括各层协议的封装过程以及以太网帧的首部格式。此外,还提供了例题讲解,涉及以太网帧的目的地址、源地址、IP数据报的长度计算,以及IP首部中的字段解析,如IP地址、生存时间和协议类型等。
摘要由CSDN通过智能技术生成

目录

一、基础知识

1.1、UDP段、IP数据报,以太网帧图示

1.2、以太网帧图示

1.3、IP数据报图示

二、例题讲解

1.1 题目及答案

1.2、答案解析


一、基础知识

1.1、UDP段、IP数据报,以太网帧图示

通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示。

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

第三行是以太网帧数据报的基本格式。

1.2、以太网帧图示

其中,以太网首部占用14字节、FCS(Frame Check Sequence)(帧校验码)长4个字节,用于检验数据在传输过程中数据是否出现了错误,为CRC32校验码

以太网首部占用14字节,首位开始是目的地址占用六个字节,其次是源地址,占用6个字节,然后是类型占用两个字节。以太网帧除去首部14字节和尾部FCS,4字节,(共18字节)剩下的中间的部分就是IP数据报。

1.3、IP数据报图示

IP数据报格式如下图所示,IP 数据报文由首部(称为报头)和数据两部分组成。首部的前一部分是固定长度,共 20 字节(如图所示前五行为IP首部),是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

二、例题讲解

1.1 题目及答案

 答案:

填空1:00-80-c8-5a-e3-88

填空2:00-60-2f-87-01-03

填空3:44

填空4:20

填空5:24

填空6:140.128.100.116

填空7:140.128.99.5

填空8:63

填空9:6

填空10:tcp

1.2、答案解析

首先要知道,一个十六进制数字代表4位,如图所示前三坨数字,00 80 c8,就是三个字节。

(1)注意图中红色部分以太网帧首部,最前六个字节是目的地址:00-80-c8-5a-e3-88,注意到Frame1的右侧,Sever -> Client,所以Client是目的地址,以太网48位网卡地址是:00-80-c8-5a-e3-88。

中间的六个字节是源地址:00-60-2f-87-01-03,注意到Frame1的右侧,Sever -> Client,所以Sever是源地址,以太网48位网卡地址是:00-60-2f-87-01-03。

(2)Frame1帧总长度58字节,由于题干说,已通过侦差错校验,所以这个以太网帧不包含FCS帧(4字节) ,所以IP数据报的长度应该是Frame1帧总长度58字节减去以太网帧首部14字节,IP分组的长度应该是44字节,IP首部长度是固定不变的20B(记下来就行),IP数据部分长度是44B-20B=24B

(3)Sever 和 Client

如图所示的蓝色部分是IP首部,对应下面的IP首部示意图,可以看到从最后一条蓝色实线往前数4个字节是目的IP地址8c.80.64.74,再往前数四个字节是源IP地址8c.80.63.05,注意到Frame1的右侧,Sever(源:8c.80.63.05) -> Client(目的:8c.80.64.74),再将16进制转为10进制,举例讲解一个:8c.80.63.05->140.128.99.5,8c = 8*16 + 12*1,80 = 8*15 + 0*1 ,63 = 6*16 + 3*1,05 = 0*16 + 5*1。

 

(4)对应上面的IP首部示意图,可以查出来绿色3f是生存时间,黄色06是协议,再转为10进制,就是结果了。

 (5)由于本题建立的是TCP链接,所以以太网帧封装的是TCP段。

要使用Python绘制混淆矩阵,可以使用sklearn.metrics包中的confusion_matrix函数。首先,需要将预测结果和真实标签以类似的格式赋值给y_pred和y_true变量。然后,可以使用confusion_matrix函数生成混淆矩阵C,可以通过labels参数指定类别的标签。接下来,可以使用matplotlib.pyplot中的函数绘制矩阵图,使用plt.matshow(C, cmap=plt.cm.Reds)来展示混淆矩阵的颜色。可以使用plt.annotate函数在矩阵图中显示每个元素的值。最后,可以使用plt.xlabel和plt.ylabel函数设置x轴和y轴的标签。最后,使用plt.show函数显示绘制好的混淆矩阵图。 [1 [2] 示例代码如下: ```python from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt y_pred = [] # 预测结果 y_true = [] # 真实标签 C = confusion_matrix(y_true, y_pred, labels=['0','1','2','3','4']) plt.matshow(C, cmap=plt.cm.Reds) for i in range(len(C)): for j in range(len(C)): plt.annotate(C[j, i], xy=(i, j), horizontalalignment='center', verticalalignment='center') plt.ylabel('True label') plt.xlabel('Predicted label') plt.show() ``` 这段代码会根据给定的预测结果和真实标签生成混淆矩阵,并使用矩阵图展示混淆矩阵的颜色。每个元素表示预测为某个类别的样本数量。通过调整代码中的参数和标签,可以根据不同的需求进行自定义。 [1 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [详解使用python绘制混淆矩阵(confusion_matrix)](https://download.csdn.net/download/weixin_38580959/12861679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [利用python绘制混淆矩阵](https://blog.csdn.net/weixin_43818631/article/details/121309660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rebecca.Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值