2-链路层-以太网协议
2019独角兽企业重金招聘Python工程师标准>>>
基本概念
以太网
是一个局域网技术,可以进行冲突检测,载波监听,以及多路访问.其中:
冲突检测: 一个节点在发送帧时会监听链路,因此可以检测出当前正在发送的帧与其他节点发送的帧发生冲突
载波监听: 所有节点都可识别链路忙或闲,也即所有节点都可以得知链路当前状态:忙/闲
多路访问: 多个节点可以共享一条链路.
10/100/1000Mbps
10Mbps以太网:通常采用多路访问模式,即多个节点共享一条链路,
100Mbps以太网或者更高:被设计成全双工的点到点的配置.此时可以会采用星型拓扑结构.
总线型拓扑结构
收发器: 是一个直接连接在以太网上的设备,另一端连接在以太网适配器(网络适配器)上,可用于:
检测链路何时空闲
发送输出信号,接受输入信号。
以太网段: 多个节点通过收发器链接在链路上,就组成了一个以太网段。如图:
中继器: 用于将多个以太网段链接在一起,同时将来自一个以太网段的数字信号转发到另一个以太网段.
总线性拓扑结构图:
星型拓扑结构
节点通过点对点链路链接到集线器上,集线器之间再互联起来
无论采用何种拓扑结构,以太网上任意一个节点传输的数据帧都可以到达所有节点。
帧格式
域 | 域的长度,单位:字节 | 备注 |
目的地址 | 6 | |
源地址 | 6 | |
类型 | 2 | 多路分解密钥(应该交付的上层协议,如IP,IPX) |
帧体 | [46,1500] | |
CRC | 4 |
以太网是一个面向比特的组帧协议,发送方在发送帧之前会首先发送64位的帧前同步码,发送帧结束之后也会发送64位的帧后同步码,接收方接受时会自动去除前同步码,后同步码
帧体最少为46字节,即数据帧最小为64位,因为帧必须足够长才可以检测到一个冲突(后续详细说明)
地址
链路层采用 MAC地址 来标识网络适配器.即每一个网络适配器都有唯一一个 MAC 地址,固化在网络适配器的ROM中,共 6 个字节.可读格式:由冒号分割的6个数(16位进制),每一个数对应于6个字节中的一个字节。如:
c4:ca:d9:2f:b6:48--对应于-->c4cad92fb648
地址分配
MAC地址固化在网络适配器中,所以网络适配器在出厂时其MAC地址就已经分配了
某个机构给每一个网络适配器设备制造商都分配一个不同的前缀。
比如AMD公司得到的前缀为0x080020;则该公司制造的第一个网络适配器的MAC地址为08:00:20:00:00:01;第2个设备的MAC地址为08:00:20:00:00:02;。。
接收方行为
接收方的行为:收到一个帧,判断是接受,还是丢弃。
广播地址:目的地址全由1构成:ff:ff:ff:ff:ff:ff
多播地址:目的地址第一位是1,并且不是广播地址
混杂模式:当网络适配器处于混杂模式时,他会将收到的所有正确的帧接受下来。
发送方行为
链路当前处于阻塞状态
等待一段时间后,重试
链路处于空闲状态
发送前同步码,数据帧,后同步码
监听链路,检测是否发生冲突
发生冲突
停止发送
发送32位干扰序列
等待一段时候后重新发送(指数退避算法)
指数退避
如下为指数退避算法,其中c一般取51.2us;
当在'等待 k*c' 后条件达成,则退出循环。
也可以对n设定一个上限值
为什么最小帧长度
考虑下面一种情况:A,B两个节点位于以太网的2端;链路的RTT为2*d;(即从A->B需要时延d)
t时刻,A节点发送一个数据帧,然后监听链路
在t+d的前一时刻,B节点看到的链路还是空闲的,于是B节点也发送数据帧。
t+d时刻,A,B节点发送的数据帧发生冲突,B节点检测到冲突,于是它发送32位干扰序列
t+2d时刻,干扰时刻到达A节点,此时A节点才可以得知其发送的数据帧产生冲突。
所以A节点要想检测出冲突,即他在[t,t+2d]时间内必须处于发送帧状态,所以这对发送帧的最小长度就有了一个要求。
根据计算...当链路长为2500米时,所需的最小帧长度为512位,64字节,所以最小帧长度46字节。
转载于:https://my.oschina.net/u/1383479/blog/209443
2-链路层-以太网协议相关推荐
- 网络 链路层 | 以太网协议与ARP协议
数据链路层是计算机网络的底层,主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输,但是相邻设备之间也需要描述识别,主要是因为每一个设备都有可能有多个相邻的设备.这种识别在链路 ...
- 链路层典型协议(简述)
链路层 以太网协议,ARP协议: 链路层负责了相邻数据之间的数据转发: 以太网协议: 用于描述相邻设备通信: 协议格式: 48位对端&源端MAC地址:描述了相邻的亮哥指定物理硬件设备: 16位 ...
- LLDP(链路层发现协议)
LLDP 链路层发现协议(LLDP)是一个厂商无关的二层协议,它允许网络设备在本地子网中通告自己的设备标识和性能. 目前,网络设备的种类日益繁多且各自的配置错综复杂,为了使不同厂商的设备能够在网络中相 ...
- 什么是链路层发现协议LLDP和LLDP-MED
什么是LLDP? LLDP 是一种 IEEE 标准协议(IEEE 802.1AB),它定义封装在以太网帧中的消息,目的是为设备提供向 LAN 上的其他设备宣布基本设备信息的方法.它类似于CDP,用于网 ...
- 网络基础链路层--eth协议arp协议mtu
网络基础链路层--eth协议&arp协议&mtu 一.链路层 二.eth-以太网协议 (一)mac地址 三.arp-地址解析协议 (一)解析流程 (二)arp缓存为什么只有很短的一段时 ...
- lldp协议代码阅读_LLDP(链路层发现协议)和OpenFlow
1.LLDP(链路层发现协议)机制 链路层发现协议(LLDP)是一个厂商无关的二层协议,它允许网络设备在本地子网中通告自己的设备标识和性能.它提供了一种标准的链路层发现方式.LLDP协议使得接入网络的 ...
- 不会还有人不会配置LLDP链路层发现协议吧?
实验目的 1.了解链路层发现协议LLDP的运行原理 2.掌握链路层发现协议LLDP的配置方法 实验拓扑 实验需求 1.根据实验拓扑图,完成设备的基本配置: 2.在R1上使用LLDP查看SW1和R2的设 ...
- LLDP链路层发现协议介绍
目录 背景 基本概念 LLDP报文 Ethernet II格式封装的LLDP报文 SNAP格式封装的LLDP报文 LLDPDU TLV 特点 工作机制 LLDP的工作模式 LLDP报文的发送机制 LL ...
- lldp协议代码阅读_LLDP链路层发现协议详解
LLDP(链路层发现协议)是定义在802.1ab中的一个二层协议,接入网络的设备可以通过其,将管理地址.设备标识.接口标识等信息发送给同一个局域网络的其它设备. LLDP 帧格式 封装有 LLDP D ...
- 计算机网络实验: 使用Wireshark抓包工具进行网络层和链路层网络协议分析(IP部分)
目录 实验名称: 实验介绍: 实验目的: 背景知识和准备: 实验过程: 一. IP协议分析 二. Ethernet & ARP 协议分析 实验名称: 网络层和链路层网络协议分析 实验介绍: 本 ...
最新文章
- Linux下/dev/null 21 相关知识说明
- python time智能等待_python中等待怎么表示
- 谁偷走了程序员的时间??
- SXSSFWorkbook使用——使用excel模板
- python面试技巧和注意事项_Python 程序员面试须知须会的5个问题
- LwIP之数据包管理
- jq自动获取html的值,jquery如何获取class值?
- 1.7更换JDK1.6版本后,无法启动eclipse mars解决办法。
- java封装的注意事项_新手学习Java之对象---封装
- 【图像检测-边缘检测】基于PCNN实现图像边缘提取附matlab代码
- Unity摄像机上下旋转镜头实现
- org.apache.flink.util.FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold
- JAVA中的protected的访问权限只有在本类同包类和子类吗?
- 移动端开发之Web App开发
- 山东大学软件学院项目实训-创新实训-网络安全靶场实验平台(十五)
- 获诱人的实习offer、在Kaggle推AI大赛,大二学生如何做到?
- AI产品经理数据模型设计文档(简版)
- 永不消逝的电波(四):从无线电角度揭秘定位劫持
- 树莓派4正式发布!TYPE-C,USB3.0,支持4K双屏,售价35美金起
- pyautocad相关操作案例
热门文章
- 归并排序详解,Java版描述。
- PS技巧-如何快速解决合成中的光影
- 4g通信模块怎么连接sim卡_4g通信模块怎么连接sim卡_针对物联网连接管理关键痛点,英飞凌推出一站式eSIM解决方案......
- 4G模块G8100低功耗对比测试
- [Python]error: (-215:Assertion failed) size.width0 size.height0 in function 'cv::imshow'
- android 程序应用锁,应用锁(com.ushareit.lockit) - 2.2.48_ww - 应用 - 酷安
- mac使用pptp的正确方式
- POJ3602解题报告
- 论文笔记——Fair Resource Allocation in Federated Learning
- Java中char和int相互转换