网络原理(五)数据链路层数据帧报文格式解析

常见网络协议汇总 本篇博客将对基于 计算机网络五层模型 中的常见协议做以总结 ,目的通过这些具体的协议更深刻的认识整体网络的传输流程及相关网络原理。 阅读详情

前言

hello hello💕,这里是洋不写bug~😄,欢迎大家点赞👍👍,关注😍😍,收藏🌹🌹
对于网络通信的解析是按照TCP/IP 五层结构来解析的:应用层、传输层、网络层、数据链路层、物理层
上篇网络通信(四)博客中详细解析了网络层,现在还剩下数据链路层和物理层,物理层是纯硬件内容,程序员是接触不到的,这篇博客就会解析数据链路层,数据链路层的知识铁汁们大概了解下即可,绝大多数Java开发也不会接触到数据链路层
在这里插入图片描述🎆个人主页:洋不写bug的博客
🎆所属专栏:JavaEE学习
🎆铁汁们对于JavaEE的各种常用核心语法,都可以在上面的JavaEE专栏学习,专栏正在持续更新中🏀,有问题可以写在评论区或者私信我哦~

1,协议

最常见的数据链路层协议:

  1. 以太网(IEEE 802.3)
    通过网线/光纤进行传输的网络
  2. WiFi(IEEE 802.11)
    无线信号

IEEE(Institute of Electrical and Electronics Engineers)就是电气和电子工程师协会,网络通信中的很多标准都是这个学会中的大佬制定的

2,数据帧报文格式

在数据链路层这部分不叫数据包/报,一般叫做数据帧,数据帧解析如下:

  1. 目的地址/源地址(6个字节):表示MAC地址
  2. 类型(2个字节):表示接收方接收数据时,数据帧的载荷部分要交给网络层的哪个协议来处理(IPv4、IPv6、其他协议)
  3. 数据部分(46 - 1500个字节):上篇博客提到IP数据报的长度最大为64KB,而这里数据部分的最大存储仅为1500B,当IP数据报的长度大于1500B时,网络层 IP 协议把这个大 IP 数据报切割成多个 IP 分片,每一个分片的总长度 ≤1500 字节,每个分片,各自封装成独立以太网帧发送
  4. CRC(4个字节):校验比特翻转

在这里插入图片描述



这里重点要解析的就是MAC地址,MAC地址的长度是6个字节,也就是48个比特位,IP地址是4个字节,也就是32个比特位,有42亿多种不同的组合

MAC地址的组合数:2 ^ 16 * 42亿 = 65536 * 42亿,这是个非常大的数,足够给每个设备分配个唯一的MAC地址,计算机/手机都有网卡,每台设备的MAC地址在网卡出厂时就已经写死了,因此mac地址也会作为一台机器的身份标识

很多外挂、破解软件、付费脚本就会做设备绑定,这个设备绑定就是通过计算机的MAC地址、主板序列号、CPU序列号…来进行绑定,这样保证卖出去一份只能在一台计算机上使用,防止买家买了之后到处分享、倒卖🐵

在cmd中输入ipconfig /all,无线局域网适配器WLAN部分的物理地址就是当前计算机无线网卡的MAC地址,MAC地址是用十六进制来表示的,两个十六进制数相当于是一个字节,字节之间通常使用"-" 或" :"来分隔开

在这里插入图片描述



  • 在一些普通路由转发的场景下,是不涉及NAT机制的(例如企业内网之间的互通),这样在中途转发过程中源IP和目的IP是不会改变的,但是源MAC和目的MAC就都会改变,例如规划的路径是A -> B -> C,原来的源MAC和目的MAC分别是A和B,数据发到B之后,源MAC和目的MAC就分别变成了B和C

  • 在NAT场景下,IP 头部会被 NAT 修改;同时二层 MAC 地址,依然每一跳路由都改变。两者是两套独立的修改,同时发生

其实理论上数据链路层也可以使用IP地址,网络层用MAC地址,这两套机制各司其职有各司其职的好处,这里就不再详细解析了
因为数据链路层对于绝大多数Java业务开发是完全接触不到的,因此这里铁汁们只是简单了解下数据链路层的相关知识即可🐵



类型部分是两个字节,表示帧里面数据部分封装的是什么协议,这部分表示是用4个十六进制数字表示的,主要有四种:

  • 0800 → IPv4(交给网络层 IPv4 处理)
  • 86DD → IPv6(交给网络层 IPv6 处理)
  • 0806 → ARP(已知 IP,查 MAC)
  • 8035 → RARP(已知MAC,查IP)

ARP(Address Resolution Protocol,地址解析协议)
也就是已知 IP,查 MAC :要发消息给同局域网另一台电脑,知道对方 IP,但不知道对方网卡 MAC 地址,这时计算机就向局域网中发一个广播包(喊给局域网里所有人:谁是 192.168.1.100?你的 MAC 是多少)
局域网所有机器都收到这个询问,IP匹配的那个机器会进行回复,这样就能得到这个机器的MAC地址,得到后把「IP-MAC 对应关系」存到本机 ARP 缓存表,后面发消息直接用这个 MAC

RARP(Reverse Address Resolution Protocol,逆地址解析协议)
也就是已知MAC,查IP:早期的无盘工作站,机器没有硬盘,开机不能读取本机 IP,就发 RARP 广播:我的 MAC 是 XXX,谁能告诉我我的 IP 是多少?局域网里专门的 RARP 服务器查到记录,回复它对应的 IP
因为几十年前计算机硬盘很贵,在学校机房、网吧中,就是几十台机器,只需要一台服务器装一块大硬盘,所有客户机都无盘启动,现在已经淘汰了,因此RARP协议也很少用到了



ARP 和 RARP报文如下图,报文本身是不携带业务数据的,因为数据帧的数据部分最少是46个字节,而这个ARP请求和应答只占了28个字节,是不够的,因此后面就用PAD来填充18个字节,PAD就是补 0,凑够以太网帧最小长度,纯空填充,没有任何有效数据

在这里插入图片描述

3,MAC转发表

MAC转发表中记录的是MAC地址 -> 交换机的网口编号

交换机收到一个数据帧后,就看这个帧从哪个端口进来,接着把【源 MAC】和【入端口】写入 MAC 转发表,这就是自学习,也即是自动记住:这个 MAC 的设备在哪个网口下面(当然,如果转发表中已经有相关记录了,就不写入了)

如果查不到这个目的 MAC:就会进行广播,把这个帧从除了入端口以外所有端口复制一份发出去,希望目标设备收到并回复,交换机就能学到它的 MAC

结语💕💕

  • 到这里就把TCP/IP 五层模型就详细解析完成了,这部分涉及到的知识还是比较繁多的,在日常开发中比较重要,也属于面试中的一个高频考点
  • 在进行数据通信时,程序员接触到的就是应用层,下篇博客就会开始解析应用层的HTTP协议

以上就是今天的所有内容啦~完结撒花~🥳🎉🎉

在这里插入图片描述

分子对接中的相互作用特征分析(目视筛查) 介绍分子对接的相互作用特征,以及如何通过这些特征进行目视筛查 阅读详情

相关推荐

U8备份提示“远程组件初始化失败”

问题现象: SQL出现问题后重装,U8没有重装,之后直接附加数据库,U8可以正常登陆,但是在备份的时候提示远程组件初始化失败。 问题原因: 因为重装了SQL,没有进行U8数据源初始化,导致Master库中丢失了存储过程储 解决办法:在Master库重建存储过程 USE [master] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[U8FileServerExtendProc] @cmdLi.

SamYux 2472

网络原理-数据链路层

在这一层中和程序员距离比较遥远,除非是做交换机开发,否则不需要了解数据链路层由AI可知:数据链路层(Data Link Layer)是OSI(Open Systems Interconnection)七层网络模型中的第二层,它在物理层之上,网络层之下。数据链路层的主要功能是为网络层提供可靠的数据传输服务,即将网络层传来的数据可靠地传输到相邻的节点,同时为物理层提供服务。数据链路层是网络通信中非常重要的一层,它确保了数据在物理介质上的可靠传输,并且为上层网络层提供了服务。这一层的协议主要是。

求你们看我的博客 1374

SAP PI实战:5分钟搞定REST适配器同步接口配置(含Postman测试技巧)

本文详细介绍了如何在SAP PI中快速配置REST适配器同步接口,包括ESR设计、集成流配置及Postman测试技巧。通过实战步骤和关键参数设置,帮助开发者高效实现系统集成,特别适合需要实时数据交互的业务场景。

weixin_33738555的博客 485

TCP/IP网络原理 【IP篇】

网络原理

qq_61688804的博客 8519

LangChain Message 官方文档

消息是聊天模型中的基本通信单位。它们用于表示聊天模型的输入和输出,以及与对话相关的其他上下文或元数据。每条消息都包含一个角色(如“用户”、“助手”)和内容(如文本或多模态数据),并可能包含根据不同聊天模型提供商而有所不同的附加元数据。LangChain 提供了一个统一的消息格式,可以跨不同聊天模型使用,简化用户在不同模型之间切换时所需关注的消息格式差异。

AI Agent 首席体验官 896

一文搞懂【Linux 搭建 Dread Hunger 服务器】附本体及Docker部署集群方案

看直播发现了五花八门的开服器和版本,一时兴起按官方文档进行了搭建尝试,所以我的版本基于官方Stream2024.01.10更新的版本,也就是停服时的玩法,应该可以根据mod和补丁魔改成更那些开服器一样的版本,本文不做谈论,注重服务器搭建,毕竟8个人不可能在一个局域网里乱象:首先,我看了大量教程视频,一类是开服器的推广,另一类自建的基本采用Windows搭建,我觉得最离谱的是大部分教程都会教你买一台远程Windows虚拟机???

LHmine的博客 3983

【JavaEE初阶】网络原理入门详解

HTTP(HyperText Transfer Protocol,超文本传输协议)是一个基于请求-响应模式的应用层协议,也是 Web 应用和 JavaEE 开发的核心协议。客户端(通常是浏览器)向服务器发送请求,服务器处理后返回响应。整个过程是一次请求对应一次响应。客户端(浏览器) 服务器(Tomcat)| || ------- HTTP 请求 ----> || <------ HTTP 响应 ---- || |网络分层模型:重点掌握 TCP/IP 四层模型。

2501_94116301的博客 365

STM32H743的ADC还能这么玩?定时器触发+DMA搬运,构建低CPU占用的数据流

本文深入探讨了STM32H743微控制器中ADC的高效使用方法,通过定时器触发和DMA搬运技术实现低CPU占用的数据流采集。详细解析了硬件架构、CubeMX配置步骤及高级优化技巧,包括双缓冲技术和多ADC同步采样,适用于电机控制、音频采集等高性能应用场景。

weixin_30698527的博客 647

网络原理基础知识点总结

关于网络原理的基础知识与经典面试题,你需要知道的都在这里

灵谷鱼的博客 4384

电商秒杀场景下,如何用Redis+Lua脚本实现原子性库存扣减(附完整代码)

本文针对电商秒杀场景下的高并发与超卖难题,详细解析了如何利用Redis的原子性命令与Lua脚本实现可靠的库存扣减。通过对比多种方案,阐述了Redis+Lua作为黄金搭档的技术原理,并提供了从基础扣减到预扣减模型的完整代码实现,确保在高并发下数据的一致性与系统性能。

weixin_29219539的博客 503

osgEarth 球上显示地形数据库

osgEarth 球上显示地形数据库 本文展示了一种由DSM和DEM得到Osgb工程,并在osgEarth球上显示的方法。其中DSM、DOM到Osgb工程的转换由VPB(VirtualPlanetBuilder)来实现,并采用Model图层将Osgb工程在球上显示。 本文主要解决一下问题: VPB编译 VPB生成地形 地形在球上显示 目录 1 前言 2 VPB编译与使用 3 地形在osgEarth球上显示 内容 1 前言 VirtualPlanetBuilder是一个开源代码工具,用于根据

CPWWHSU的博客 2433

网络原理知识总结

IP协议是我们最常见的一种通信协议,它为每一台主机赋予了身份,使得不同主机之间可以通过IP进行访问,IP地址有32位和48位两种,32位的是IPv4,目前这种IP将要被分配完,之后将逐渐过渡到IPv6,更长的位数意味着可以分配更多不同的IP。地址解析协议 ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。拥塞控制与流量控制的区别:流量控制考虑点对点的通信量的控制,而拥塞控制考虑整个网络,是全局性的考虑。用ack_seq标识;

qq_44861892的博客 1416

【RT-DETR创新改进】改进前必看!对Ultralytics调参, 1:1还原RT-DETR官方版本实验参数,使用原汁原味的RT-DETR模型,才能高效跑实验、高效涨点、收割小论文、完成大论文!!!

本文针对Ultralytics训练RT-DETR精度不佳问题,提供参数配置优化方案。通过对比官方RT-DETR参数设置,详细指导如何修改Ultralytics版本的关键参数,包括优化器、学习率、权重衰减等6处配置调整。操作步骤涵盖default.yaml文件修改和trainer.py代码调整,确保模型收敛性能达到官方水平,帮助研究者快速提升实验效果。文末附官方源码链接和具体参数配置网址供参考。

Ai缝合怪、助力小伙伴高效发论文 1775

常见网络协议汇总(非常详细)从零基础入门到精通,看完这一篇就够了

本篇博客将对基于 计算机网络五层模型 中的常见协议做以总结 ,目的通过这些具体的协议更深刻的认识整体网络的传输流程及相关网络原理。

wananxuexihu的博客 3251

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【考试】计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

qq_44579321的博客 427

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

常见计算机网络协议汇总(非常详细)从零基础入门到精通,看完这一篇就够了

常见计算机网络协议汇总(非常详细)从零基础入门到精通,看完这一篇就够了

2302_76672693的博客 2357

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

常用网络协议

常用网络协议

uoyekil的博客 252
上一篇: 网络原理(四)网络层解析,IP报文结构、NAT机制、网段划分、路由选择详细解析
下一篇: HTTP(一):Fiddler下载、抓包请求响应解析
洋不写bug
博客等级 码龄2年 87粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值