以太网(Ethernet)相关基础知识

2023-11-15

        最近正好在学习以太网,感觉非常有用,进行一个总结,欢迎指正。

        如今,以太网已在现实中大量使用,低廉的价格和较快的速度都是它从许多网络中存活下来的因素。学校/公司中大多用得都是以太网。

目录

以太网电缆(Ethernet Cabling)

曼彻斯特编码(Manchester encoding)

以太网MAC子层协议(The Ethernet MAC Sublayer Protocol)

交换式以太网(Switched Ethernet)

本地网络互联(Local Internetworking)


以太网电缆(Ethernet Cabling)

        从上到下,分别是粗同轴电缆、细同轴电缆、双绞线、光纤

        术语10base5的含义是:它使用基带信号运行在10Mbps的速率上,并且所支持的分段长度可以达到500米。第一个数字是以Mbps为单位的速度值,然后紧跟着单词“Base”标明了它使用基带传输。最后,如果介质是同轴电缆,则它的长度被附在“Base”之后,以100m为单位(四舍五入)

只用基带传输,意为如果把网线拆开直接用电压表测量就是方波

(在数字通信中,基带传输频带传输相对应,可以不经过调制解调而直接传送数字基带信号。注意区分基带信号和基波。)

        10Base-T就是平时常用的双绞线网线,都有一条电缆连接到一个中心集线器(hub)上,通过中心集线器,所有的站被连接到一起,就好像它们都被焊接到一起一样。

        第四种以太网电缆是10Base-F,它采用了光纤这种连接方式。这种连接方式由于连接器和终结器的成本较高所以非常昂贵,但是它有极好的抗噪声能力,适用于楼与楼之间的连接,或者用于远距离隔开的集线器之间的连接,其长度即使到上千米也是允许的

在一个建筑物内进行布线的几种方案:(电缆拓扑结构图)

最常用的是树形,如图C。

        每段电缆的长度都有最大值限制,为了构建更大的网络,多跟电缆可以通过中继站(repeater)连接起来。中继站是一个物理层设备,用于放大信号,因为传输过程中会减弱信号。

hub可以有repeater的功能。

曼彻斯特编码(Manchester encoding)

 

以太网使用曼彻斯特编码

        可保证时钟同步,让接收方在没有外部时钟参考的情况下,可以确定每一位的起始、结束位置。但是曼彻斯特编码的一个缺点是,它所要求的带宽是直接二进制编码的两倍,所以脉冲是位宽度的一半。

以太网MAC子层协议(The Ethernet MAC Sublayer Protocol)

        以太网协议规定每一帧之间有一段停顿时间,每一帧以前导域开头,CRC校验和结尾。发送帧的时候,应该是由高低电平组成,而停顿时间电平直接为0。这个framing和一般网络不同。

        首先是8字节的 Preamble(前导域),每个字节包含了比特模式10101010(除了最后一个字节的最后2位为11),这最后一个字节称为802.3的帧起始定界符(Start of Frame,SOF)。这个位模式经过曼彻斯特编码后,可以便于接收方和发送方的时钟同步。

header包含Destination and Source Addresses and a Type field

trailer是CRC校验和

目标地址和源地址都是6字节的MAC地址(物理地址)

每个计算机会有一个unique MAC 地址(网卡的地址),具有全球唯一性。

        tpye(类型)字段,它用于告知接收方应该如何处理这一帧。在同一台计算机上,有可能同时有多个网络层协议在使用,所以当一个以太网帧到达时,内核必须知道应该将此帧交给哪一个网络层协议,类型域指定了应该将此帧交给哪个进程。

        数据字段,最多可以1500字节,应为收发器需要足够的内存(RAM)来存放一个帧。一帧包含的最少数据部分也有规定,和数据传输速度有关系,主要原因在于以太网中发送出现冲突时,如下图所示。

        如果一个站尝试传送一个非常短的帧,虽然冲突发生了,但是在冲突噪声回到发送方(2\tau)之前,传送任务已经完成了。这样的话,发送方就以为这帧已经成功发送出去。所以,所有的帧至少需要 2\tau 的时间才能完成发送(一来一回所以是 2\tau ),一般是64字节。

CSMA/CD with Binary Exponential Backoff(二进制指数后退):

        2\tau的时间称为Slot time(时槽),在第一次冲突发生后,每个站等待0或1个时槽之后再重新发送。如果选择了相同时间,即发生第二次冲突,每个站随机选择0,1,2,3,然后再等待这么多个时槽再发送。以此类推,在0到2^{n}-1之间随机选择一个数,并等待这么多个时槽。到达10次冲突之后,随机数的选择区间固定在最大值为1023上,以后不再增加。在16次冲突后,控制器放弃并给计算机送回失败报告。

以太网效率:

        网络带宽指的是链路上每秒所能传送的比特数,强调的是最大能达到的速率。 单位是Mbit/s Gbit/s ,无论无线有线,比如百兆以太网的带宽是100Mbps。

        可见,增加网络带宽或远距离传输,将使信道效率降低。在高带宽或广域网条件下,以太网可能不是合适的。

交换式以太网Switched Ethernet

        由前文的分析可以看出,连到同一个以太网的主机数量将很大程度上影响是否发生冲突,因此我们可以把所有主机切成小的groups,每个group的主机数量少,这样冲突概率小。因而引入交换式以太网(Switched Ethernet,这种系统的核心是交换机(switch)。相当于一个交换机管很多主机,交换机也会有复杂的协议。

        这里要说下 hub(集线器)switch(交换机)的区别,他们的形式看上去一样,就是把多跟线汇成一根线,但是有很大区别。hub是将线与线物理上连接在一起,网上有卖那种usb扩展坞,也是hub,它是一种物理层设备,hub中连接的不同主机(D、E)是不能同时发信息的。而switch连线的线路是并行的,可以做到互不干涉,不同主机可以同时发信息(A、B、C),它是数据链路层设备,交换机实现的是全双工

要注意图上看上去是一根线,其实内部是两根线,一个发一个收。

可以是hub或者switch连到另一个switch的端口。

        不管有线无线,都会先到Switch,最后通过Router(路由器)来连接到广域网。也可以不连接到广域网,举例校园网或者飞机场的wifi,他会有一个登陆网页,你可以登录这个网页,但却不能使用百度这种软件,原因在于这个登陆网页是局域网。只有想连接到广域网才会收费。

本地网络互联(Local Internetworking

        局域网的互联通过网桥或者路由器实现,网桥和交换机互相替代,现在不太用网桥了。

        举例,连到同一个交换机不同端口的两台主机想要通信,已知帧格式中包含了源地址和目标地址(均为MAC地址),但对于交换机而言,还需要知道MAC地址和端口的对应关系,所以引入MAC地址表

        MAC表不是一开始就有的,而是通过Backward Learning(逆向学习法)得到,一开始是空表。交换机收到信息后,先存下来,然后解析报文(只能解析这层的头和尾,比如以太头),可以看到源地址和目标地址,当MAC表中找不到对应关系,就采取群发(Flooding),除了源地址对应端口,其余所有端口都会收到信息然后检查目标MAC地址与自己地址是否匹配,不匹配则discard。可以看出以太网本质是广播式(broadcast)的。与此同时,交换机把源地址对应端口信息登记在MAC表中,这样自己学习得到完整的MAC表格。

        举例,一开始B1、B2空表,A想发到E,A->B->B1->C->B2,由于B2空表,所以群发,F、G、H、D、E都会收到,F、G、H、D发现不是发给自己的于是将信息抛弃。

        这样不断学习下来,最后得到的MAC表,我们将左边的端口看作为port 1,那么B1的port 1对应A、B两台主机的MAC地址,B2的port 1对应A、B、C三台主机的MAC地址。

 

         为了提高可靠性,有些站点在LAN间并行使用多个网桥,这就引入了回路。在未知目的MAC地址对应端口时,它会导致一直群发,不断循环下去,导致局域网无法工作,称为广播风暴(broadcast storm)。用生成树(spanning tree)可以解决广播风暴问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以太网(Ethernet)相关基础知识 的相关文章

  • 数据采集与埋点简介之 代码埋点、可视化埋点与无痕埋点

    博主做移动手机系统中的数据采集与埋点也有近两年 那段时间内一方面是集中在具体的开发和问题细节处理 另外一方面则是在把采集系统适配到不同的平台手机 平板 tv 车载的过程中 有Android和C 两个版本 有一天见到了 神策数据 的这篇博文
  • 详解static、volatile、const

    1 背景 在查阅相关资料的时候 无意间看到一个大佬对于static关键字的讲解 如雷贯耳 写得非常容易理解 这是大佬的链接 本人在学习相关知识的时候 喜欢也习惯把从各种书籍或者是各位大佬的博客中学到的知识用自己的逻辑和自己的语言重新组织一下
  • [学习]OC-NSString去掉两边的空格,查找字符串出现的位置,获取远程URL 内容

    获取远程URL 内容 NSString s NSString stringWithContentsOfURL NSURL URLWithString http www baidu com encoding NSUTF8StringEncod
  • tomcat 默认页面设置

    一般打开网页地址是 www edu cn xxx index html 设置想要以下地址打开网页 www edu cn xxx 则需改动tomcat配置 80端口 在tomcat的conf server xml文件中的
  • python面试常见问题-总结Python面试中最常见的100个问题

    Python是目前编程领域最受欢迎的语言 在本文中 我们总结了Python面试中最常见的100个问题 每道题都提供参考答案 希望能够帮助你在2019年求职面试中脱颖而出 找到一份高薪工作 这100道面试题涉及Python基础知识 Pytho

随机推荐

  • javascript 除法运算

    javascript除法如何取整 Math round x 四舍五入 如Math round 0 60 结果为1 Math round 0 49 结果为0 Math floor x 向下舍入 如Math floor 0 60 与Math f
  • 《Thinking in Java》——构造器是private时如何创建对象?

    构造器是private时如何创建对象 可以通过static成员进行创建 如 class A private A 构造器是private修饰 不能在本类外通过new A 创建对象 public static A construct retur
  • Inno Setup 制作安装程序[支持静默安装.NET环境]

    1 贴源码 脚本由 Inno Setup 脚本向导 生成 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档 define MyAppName TestSet define MyAppVersion 1 0 define My
  • Linux系统故障排查和修复技巧

    一 单用户模式 Linux系统提供了单用户模式 类似Windows安全模式 可以在最小环境中进行系统维护 在单用户模式 运行级别1 中 Linux引导进入根shell 网络被禁用 只有少数进程运行 单用户模式可以用来修改文件系统损坏 还原配
  • SpringBoot通过注解的方式调用Quartz定时任务

    1 引入Quartz依赖 2 SpringBoot启动类增加 EnableScheduling注解 3 创建一个定时任务工作类在方法 代码如下 package com jlzh lftwebservice service quartz im
  • CSS进阶 —— 10 分钟理解 BFC 原理

    未完待续
  • 幻想乡的日常【树状数组+离线操作】

    题目链接 给出N个点的树 编号为1 N 每次的查询为 L R 想知道编号在 L R 内的所有的结点的会被分成多少个连通块 给出一条性质 连通块数量 点数 边数 点数很方便的可以计算 就是 R L 1 那么 如何计算边数呢 我们知道 每条边有
  • 这届世界杯是不是让你出乎意料?写个足球小游戏来模拟一下!

    前言 今年世界杯有人欢喜有人愁 我想愁的人应该居多 不得不说 小日本是真菜啊 特么的 今天还是搞点咱们好玩点的 世界杯嘛 大家看看就行 大家不是都说 看国足比看相声还搞笑吗 好了 不笑了 今天给大家带来一款非常简单的足球小游戏 希望大家喜欢
  • 什么是分布式软件系统

    什么是分布式软件系统 分布式软件系统是什么意思 分布式软件系统 Distributed Software Systems 是支持分布式处理的软件系统 是在由通信网络互联的多处理机体系结构上执行任务的系统 它包括分布式操作系统 分布式程序设计
  • 精灵标注助手的安装及使用

    位置标注 分割标注 官网下载安装包 http www jinglingbiaozhu com 安装超简单 位置标注 新建 gt 位置标注 gt 选择图片文件夹 定义分类值 用英文逗号隔开 然后 创建 右下角的 可以对图片进行放大 缩小 选择
  • jenkins配置publish over ssh遇到的问题

    一 背景 目标 本篇文章主要是说明自己在配置jenkins的publish over ssh插件所遇到的问题 本次主要是windows下的jenkins通过ssh的方式访问我本地虚拟机的ubuntu系统 准备 1 在jenkins上安装pu
  • [python] Python类型提示指北

    Python3 5 版本引入了类型提示 Type Hints 它允许开发者在代码中显式地声明变量 函数 方法等的类型信息 这种类型声明不会影响 Python 解释器的运行 但可以让 IDE 和静态分析工具更好地理解代码 同时提高代码的可读性
  • MySQL——SQL注入问题

    文章目录 1 SQL注入问题 2 PreparedStatement对象 1 SQL注入问题 SQL存在漏洞 会被攻击导致数据泄露 2 PreparedStatement对象 PreparedStatement 可以防止SQL注入 效率更好
  • vue使用文件流和url下载文件

    改为使用后台返回url下载文件 方法1 这个会导致在点击下载按钮的时候 页面会跳转到奇怪的url window location href row downloadUrl 方法2 点击下载按钮 不会在新窗口打开 const download
  • 刷脸支付算法和硬件不断升级消费更有保障

    刷脸支付设备依靠3D传感摄像头进行人脸识别 其内置的点阵投影仪可以投射出3万多个肉眼不可见的红外点到用户脸部 多维度 多角度在颜色 纹理 深度等数据进行高层次对比 安全性和精准性更高 识别速度更快 尽管现在刷脸支付的安全性已经达到极高的金融
  • 【数据结构与算法】栈的实现(附源码)

    目录 一 栈的概念和结构 二 接口实现 A 初始化 Stackinit 销毁 Stackdestroy 1 Stackinit 2 Stackdestroy B 插入 Stackpush 删除 Stackpop 1 Stackpush 2
  • 接口未正确配置:wx.getLocation(暂无权限)

    原因 腾讯地理位置接口新增与相关流程 地理位置接口新增说明 由于精确地理位置接口只允许部分类目的小程序申请使用 为了满足开发者在更多场景使用地理位置接口 自 2022 年 7 月 14 日起 新增获取模糊地理位置接口 wx getFuzzy
  • 计算机网络第六章——应用层(下)

    等闲变却故人心 却道故人心易变 文章目录 用户代理就是用户和电子邮件系统之间的一个接口 通常都是运行在电脑中的一个程序 用户代理又可以称为电子邮件客户端软件 用户代理可以为用户提供一个比较友好的接口 邮件服务器作为一个服务器就需要长时间的工
  • 责任链模式(Chain of Responsibility) Java实现

    责任链模式 责任链模式 Chain of Responsibility 定义 责任链模式是一种对象的行为模式 在责任链模式里 很多对象由每一个对象对其下家的引用而连接起来形成一条链 请求在这个链上传递 直到链上的某一个对象决定处理此请求 发
  • 以太网(Ethernet)相关基础知识

    最近正好在学习以太网 感觉非常有用 进行一个总结 欢迎指正 如今 以太网已在现实中大量使用 低廉的价格和较快的速度都是它从许多网络中存活下来的因素 学校 公司中大多用得都是以太网 目录 以太网电缆 Ethernet Cabling 曼彻斯特