当前位置: 首页 > news >正文

数据链路层与ARP协议

一.认识识以太网

        "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内 容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等; 以太网中的网线必须使用双绞线; 传输速率有 10M, 100M, 1000M 等;  以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线 LAN 等;

二.以太网帧格式

  • 源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应 IP、ARP、RARP;
  • 帧末尾是 CRC 校验码

认识 MAC 地址

  • MAC 地址用来识别数据链路层中相连的节点;
  • 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地 址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址).

        传输层封装端口号,网络层封装ip,数据链路层封装mac地址。而mac地址是用来在局域网中确定下一个节点的 。

        在网络通信中,当我们主机要其他主机通信时,我们往往只知道IP,那么我们是怎么知道其他主机的mac地址的呢?这就是ARP协议的作用。

认识 MTU

  • MTU 相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产 生的限制.
  • 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不 够 46 字节,要在后面补填充位; • 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的 MTU;
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation); • 不同的数据链路层标准的 MTU 是不同的

三.ARP协议

        ARP协议的功能是只知道IP,通过ARP协议确定主机的mac地址的。RARP 就是知道mac地址获得ip地址,正好相反。 

协议格式:

  • 注意到源 MAC 地址、目的 MAC 地址在以太网首部和 ARP 请求中各出现一次, 对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
  • 硬件类型指链路层网络类型,1 为以太网;
  • 协议类型指要转换的地址类型,0x0800 为 IP 地址;
  • 硬件地址长度对于以太网地址为 6 字节;
  • 协议地址长度对于和 IP 地址为 4 字节;
  • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答 

ARP 协议的工作流程 

  •  源主机发出 ARP 请求,询问“IP 地址是 192.168.0.1主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示 广播).
  • 目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个 ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中.
  • 每台主机都维护一个 ARP 缓存表,可以用 arp -a 命令查看。缓存表中的表项有 过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址。

ARP协议同样在数据链路层,在mac层的上层。

        

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数学建模笔记—— 灰色关联分析[GRA]
  • tekton pipeline workspaces
  • 3个办法轻松操作:flac转mp3在线快速完成
  • openVX加速-基本概念和简单代码实现
  • 迈向新一代星地融合的高速测试解决方案
  • 经验笔记:Maven 与 Gradle —— Java 构建工具对比
  • react文件详情
  • 变量与命名
  • script中的src
  • 开放API接口时要注意的安全处理总结
  • antd table 单元格编辑 触发 DatePicker(日期组件)使日期面板受控
  • 【LabVIEW学习篇 - 19】:人机界面交互设计03
  • 项目进度一
  • 鸿蒙NEXT(API 12)【蓝牙设置】 网络开发
  • 如何使用PTK一键安装opengaussdb 5.0
  • @jsonView过滤属性
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【译】理解JavaScript:new 关键字
  • 07.Android之多媒体问题
  • Angular 2 DI - IoC DI - 1
  • Angular 响应式表单之下拉框
  • Linux下的乱码问题
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 分布式任务队列Celery
  • 搞机器学习要哪些技能
  • 开发基于以太坊智能合约的DApp
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端技术周刊 2019-01-14:客户端存储
  • 浅谈Golang中select的用法
  • 使用 @font-face
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 无服务器化是企业 IT 架构的未来吗?
  • 用mpvue开发微信小程序
  • ​香农与信息论三大定律
  • # Kafka_深入探秘者(2):kafka 生产者
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $refs 、$nextTic、动态组件、name的使用
  • (10)ATF MMU转换表
  • (70min)字节暑假实习二面(已挂)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (回溯) LeetCode 131. 分割回文串
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (十六)Flask之蓝图
  • ./configure,make,make install的作用
  • .net core 6 redis操作类
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET6 命令行启动及发布单个Exe文件