1.基本概念

以太网( Ethernet )是现实世界中最普遍的一种计算机网络,是一种计算机局域网技术,同时也是一种协议。以太网协议定义了一系列软件和硬件标准,从而将不同的计算机设备连接在一起。以太网设备组网的基本元素有交换机、路由器、集线器、光纤和普通网线以及以太网协议和通讯规则。以太网中网络数据连接的端口就是以太网接口。

2.以太网帧

在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾,它用于检验数据传输是否出现损坏。以太网帧格式有两种标准,一个是由IEEE802.3定义的,称为802.3格式;另一个是由DEC、Intel、Xerox三家公司联合定义的,称为Ethernet II格式,也称DIX格式。Ethernet II格式的帧与IEEE802.3格式虽然存在一点差别,但是他们都应用于以太网。目前的网络设备都可以兼容这两种格式的帧,但Ethernet II使用得更加广泛。通常承载了某些特殊协议信息的以太网帧才使用IEEE802.3,绝大部分的以太网帧使用的都是Ethernet II格式。

2.1Ethernet II格式

如上图所示,Ethernet II格式的以太网帧有五个部分组成,D.MAC、S.MAC、Type、Data和FCS。
(1)D.MAC是目的MAC地址,表示该帧的接收者。目的MAC地址可以是单播MAC、组播MAC或者广播MAC。
(2)S.MAC是源MAC地址,表示该帧的发送者。源MAC地址只能是一个单播MAC地址。
(3)Type即类型,表示载荷数据的类型,如果该字段的值是0x0800表示载荷数据是IPv4数据,如果该字段值是0x0806表示载荷数据是ARP数据,如果该字段值是0x86dd表示载荷数据是IPv6数据等等。
(4)Data是载荷数据,最短46字节,最长为1500字节,是该帧的有效载荷。
(5)FCS是帧检验序列,是由循环冗余算法(CRC)算法生成的。数据在传输过程中可能会因为外界的电磁干扰从而使数据产生差错,所以需要采用各种检验差错的措施,而最广泛使用的就是循环冗余检验(CRC)。当网卡接收到一个以太帧,首先要校验帧尾的FCS是否正确。如果正确,缓存到接收队列,通知上层模块前来取走;如果不正确,丢弃处理,错误计数+1。

2.2IEEE802.3格式

IEEE802.3格式的以太网帧中,目的MAC地址、源MAC地址、类型、载荷和FCS的功能和作用与Ethernet II格式是一样的。不一样的就是Length、LLC和SNAP了。
(1)Length长度,指后续数据的字节长度,从LLC头开始但不包括FSC检验序列的长度。
(2)LLC3个字节中包括了D.SAP、S.SAP和Control字段。

 DSAP 目的服务访问字段,指明帧的目的上层协议类型,如IP帧值设为0x06ASAP 源服务访问字段,指明帧的源上层协议类型Control控制,类型1 表明是无连接的、不可靠的LLC数据,控制字段用0x03指明;类型2 表明是面向连接可靠的LLC会话

(3)SNAP中含有Org Code和Type两个字段。IEEE 802.3扩展产生SNAP来兼容以太网网头部协议,在IEEE 802.2 LLC 头部后插入了SNAP头部。为了标识SNAP帧,DSAP和SSAP在LLC头都被设置成SNAP定义的值0xAA,所有SNAP的封装没有使用可靠的LLC服务,所以LLC的控制设置成0x03。

Org Code机构代码,指明私有协议的机构代码。对IP和 ARP,该字段被将设置为0x000000,如思科的代码是0x00000c
Type和Ethernet II上的类型意义相同,IP 0x0800 ,ARP 0x0806

3.MAC地址

MAC地址是在IEEE 802标准中定义并规范的,凡是符合IEEE 802标准的网卡都必须拥有一个MAC地址。每一个网卡都有一个唯一用来标识自己的号码,就如同人的身份证号码一样,这个标记网卡的号码就是MAC地址,长度48bit。

2.1分配

网卡制造商在生产网卡之前,需要向IEEE申请注册获取前24bit的组织唯一标识符,这24bit称为OUI(Organizationally Unique Identifie),后24bit由厂商自己分配。分配好之后将MAC地址烧写进网卡中,并且不能被更改。

2.2分类

MAC地址分为三种,单播MAC地址、组播MAC地址和广播MAC地址。

单播MAC地址是指第一个字节的最低位是0的MAC地址,标识了一块特定的网卡
组播MAC地址是指第一个字节的最低位是1的MAC地址,标识了一组网卡
广播MAC地址是指每个比特都是1的MAC地址,是组播地址的一个特例,标识了所有网卡

组播和广播MAC地址前三个字节不是OUI,只有单播的前三个字节才是OUI,并且第一个字节的最低位一定是0。

4.MTU

MTU(Maximum Transmission Unit)最大传输单元。用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。一般网络中设备的MTU值是1500,这是由Ethernet II格式的帧载荷数据大小决定的,其值是46-1500。

如果网络中计算机的设置MTU值为2000,而路由器的MTU值为1500。计算机发送3000字节的数据包,会根据计算机的MTU值分成2000和500的帧,路由器接收到2000的帧时又会分成1500、500和500的帧,如果计算机MTU是1500,经过路由器就只有两个1500的帧了,所以计算机增大MTU值时,同样的数据给路由器增加了压力。

实际情况计算机的MTU值会比1500小一点,一般是1472左右。比如使用PPOE拨号的路由器,PPP over Ethernet协议会占用8字节的空间,一帧的大小就变成1492字节了。UDP数据包需要减去IP包头20字节和UDP包头8字节,就是1472字节了。

需要注意的是如果IP包DF标志位为1,也就是不允许分包,那么路由器直接就把这个包丢弃了,所以MTU值太大可能导致数据无法发送了。

网络学习-4.以太网基础相关推荐

  1. 网络学习-1.IP基础

    1.IP的定义 IP是Internet Protocol(网际互连协议)的缩写,是整个TCP/IP协议族的核心,也是构成互联网的基础,是TCP/IP体系中的网络层协议.IP网络规定网络中所有设备必须有 ...

  2. 网络学习笔记—计算机网络基础

    1 什么是网络:网络就是几部计算机主机或者网络打印机之间的接口设备,通过网线或者无线网络技术,将这些主机或者设备连接起来,使得数据可以通过网络介质(网线或者是无线网络技术)来传输的一种方式. 2 计算 ...

  3. 网络学习云平台 计算机基础应用,计算机应用基础网络自主学习平台使用说明.doc...

    <计算机应用基础>课程网络自主学习平台操作说明 插件安装 安装.NET,下载地址: /download/7/0/3/703455EE-A747-4CC8-BD3E-98A615C3AEDB ...

  4. 网络安全特训之——网络信息安全攻防学习平台(基础关)

    网络信息安全攻防学习平台(基础关) 一.key在哪里 项目场景: 解决方法: 二.再加密一次你就得到key啦 项目场景 解决方法: 三.猜猜这是经过了多少次加密 项目场景: 解决方法: 四.据说MD5 ...

  5. 网络黑客攻防学习平台之基础关第十一题

    网络黑客攻防学习平台之基础关第十一题 : 本地的诱惑 小明扫描了他心爱的小红的电脑,发现开放了一个80端口,但是当小明去访问的时候却发现只允许从本地访问,可他心爱的小红不敢让这个诡异的小明触碰她的电脑 ...

  6. 学习笔记-java基础-网络编程

    刚在培训机构学习完JAVA基础和WEB,感觉边学边忘.就把这作为记忆的笔记,我也不知道要不要记笔记,写在本子上太耗费时间了. 一.要想实现网络通信,首先要解决两个问题: ①:如何从网络中定位到一台或多 ...

  7. 网络黑客攻防学习平台之基础关第二题

    网络黑客攻防学习平台之基础关第二题 : 页面地址:http://hackinglab.cn/ShowQues.php?type=bases 题解:加密后的数据再加密一次就得到了密文,这正是rot-13 ...

  8. 网络黑客攻防学习平台之基础关第一题

    网络黑客攻防学习平台之基础关第一题: 页面地址:http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php 解密: ...

  9. 网络黑客攻防学习平台之基础关第三题

    网络黑客攻防学习平台之基础关第三题 : 页面地址:http://hackinglab.cn/ShowQues.php?type=bases 给出的是一段base64加密后的密文,根据标题,肯定是多次加 ...

最新文章

  1. quartz分布式集群部署并且可视化配置job定时任务
  2. 阿里云对象存储OSS之通过URL形式进行图片处理
  3. .net WebApi 开发中某些注意事项
  4. 对 makefile 中 override 优先级的学习体会
  5. 【Python】解决No name 'QWidget' in module 'PyQt5.QtWidgets'
  6. Mac下安装Flink的local模式(flink-1.2.0)
  7. 转载,handler
  8. appium 处理滑动的方法
  9. aspose.words读取html,Aspose.Words for .NET HTML代码直接生成WORD | 学步园
  10. 专注NLP、推荐等AI算法招聘群,慢者无,包括几乎所有公司最新信息
  11. Python:身份运算符is和==的区别
  12. hadoop中4种压缩格式的特征的比较
  13. Linux下Oracle数据库的启动过程、关闭过程
  14. excel软件php函数,excel的函数
  15. VMware Workstation 8.0 序列号
  16. C语言生成0-9的6位数密码递归方法实现
  17. 数据库基本知识和命令
  18. 加州伯克利计算机科学录取,2020加州大学伯克利分校统计学录取案例。
  19. 酷客多小程序百城宣讲会-嵊州站完美落幕
  20. [VB]获得RecordSet的记录总数

热门文章

  1. 聊聊如何度过寒冬(个人篇)
  2. 云顶之弈法机器人_LOL云顶之弈六法机器
  3. 迅雷首席工程师:程序员成长之道
  4. ECMALL的登录过程机制解析
  5. 计算机无法识别佳能5d2,相机无法与计算机连接/计算机无法识别相机 (EOS )
  6. 策略模式和工厂模式给开发人员带来了哪些好处
  7. Android12之OpenSL ES设置android侧Performance Mode(十七)
  8. 成绩处理 第二季
  9. 2021 RoboCom 世界机器人开发者大赛-高职组(初赛)(python版)
  10. 赛尔号周五服务器维护大概到几点,赛尔号:每日玩多少小时算肝帝?2小时是菜鸟,大神:我24小时...