网络基础 : 以太网数据封装

以太网的数据链路层

在数据链路层,以太网负责以太网编址,这通常称为硬件编址或 MAC 编址。以太网还负责把来自网络层的分组封装成帧。

以太网编址

以太网编址使用固化在每个以太网网卡(NIC)中的 MAC (Media Access Control,介质访问控制)地址。MAC (硬件)地址长 48 位,采用十六进制格式。

OUI(Organizationally Unique Identifier,组织唯一标识符)是由 IEEE 分配给组织(厂商)的,它包含 24 位,而组织给其生产的每个网卡都分配一个唯一的全局管理地址,该地址长 24 位。查看上图您会发现最高位是 I/G(Individual/Group) 位:如果它的值为 0,我们就可以认为相应的地址为某台设备的 MAC 地址,很可能出现在MAC 报头的源地址部分;如果它的值为 1,我们就可以认为相应的地址要么是以太网中的广播地址或组播地址,要么是令牌环和 FDDI 中的广播地址或功能地址。
接下来是 G/L 位(全局/本地位,也称为 U/L 位,其中 U 表示 universal):如果这一位为 0,则表示相应的地址为全局地址,由 IEEE 分配;如果为 1,则表示相应的地址为本地管理地址。在以太网地址中,右边 24 位为本地管理(制造商分配)的编码,特定制造商在生产第一个网卡时,通常将这部分设置为 24 个 0,然后递增,直到 24 个1。

以太网帧

数据链路层负责将比特合并成字节,再将字节封装成帧(frame)。在数据链路层我们使用帧封装来自网络层的分组,以便通过特定类型的介质进行传输。
以太网工作站的职责是,使用 MAC 帧格式彼此传递数据帧。它利用 CRC(Cyclic Redundancy Check,循环冗余校验)提供错误检测功能,记住,仅仅是检测,不是纠错。
下图说明了 802.3 帧和以太网帧的格式:

注意:使用一种帧封装另一种帧称为隧道技术。

下面详细介绍各个字段。
前导码
交替的 0 和 1,在每个分组的开头提供 5MHz 的时钟信号,让接收设备能够跟踪到来的比特流。
帧起始位置分隔符(SFD)/同步
前导码为 7Byte,而 SFD(同步)为 1Byte。SFD 的值为 10101011,其中最后两个1让接收方能够识别中间的 0 和 1 交替模式,进而同步并检查到数据开头。
目标地址 (DA)
包含一个 48 位的值,且 LSB(Least Significant Bit,最低有效位)优先。接收方根据 DA 判断到来的分组是否是发送给特定节点的。目标地址可以是单播地址、广播地址或组播 MAC 地址。广播地址全为 1(十六进制格式下全为F),广播发送给所有设备,而组播只发送给网络中一组类似的节点。
源地址(SA)
SA 是一个 48 位的 MAC 地址,用于标识传输设备,也使用 LSB 优先格式。在 SA 字段中,不能包含广播地址或组播地址。
长度或类型
802.3 帧使用长度字段,而 Ethernet_II 帧使用类型字段标识网络层协议。802.3 不能标识上层协议,只能用于专用 LAN,如 IPX。
数据
这是网络层传递给数据链路层的帧,其长度为 46-1500 Bytes。
帧校验序列(FCS)
FCS 字段位于,用于存储 CRC(Cyclic Redundancy Check,循环冗余校验)结果的帧的帧尾。CRC 是一种数学算法,创建每个帧时都将运行它。作为接收方的主机收到帧并运行 CRC 时,其结果必须相同,否则接收方将认为发生了错误,进而将帧丢弃。

数据封装

主机通过网络将数据传输给另一台设备时,数据将经历封装:OSI 模型的每一层都使用协议信息将数据包装起来。每层都只与其在接收设备上的对等层通信。
为了通信和交换信息,每层都使用 PDU(Protocaol Data Unit,协议数据单元)。PDU 包含在每一层给数据添加的控制信息。这些控制信息通常被添加在数据字段前面的报头中,但也可能被添加在报尾中。
OSI 模型每一层都对数据进行封装来形成 PDU,PDU 的名称随报头提供的信息而异。这些 PDU 信息仅在接收设备的对等层被读取,然后剥离,然后数据被交给下一层。
下图显示了各层的 PDU 及每层添加的控制信息:

该图说明了如何对上层用户数据进行转换,以便通过网络传输。然后,数据被交给传输层,而传输层通过发送同步分组来建立到接收设备的虚电路。接下来,数据流被分割成小块,传输层报头被创建并放在数据字段前面的报头中,此时的数据块称为数据段(一种PDU)。我们可以对每个数据段进行排序,以便在接收端按发送顺序重组数据流。
接下来,每个数据段都交给网络层进行编址,并在互联网络中路由。为让每个数据段前往正确的网络,这里使用逻辑地址(如IP地址)。对于来自传输层的数据段,网络层协议给它添加一个控制报头,这样就生成了分组或数据报。在接收主机上,传输层和网络层协同工作以重建数据流,但它们不负责将 PDU 放到本地网段上--这是将信息传输给路由器或主机的唯一途径。
数据链路层负责接收来自网络层的分组,并将其放到网络介质(电缆或无线)上。数据链路层将每个分组封装成帧,其中帧头包含源主机的硬件地址。如果目标设备在远程网络中,则帧将被发送给路由器,以便在互联网络中路由。到达目标网络后,新的正被用来将分组传输到目标主机。
要将帧放到网络上,首先必须将其转换为数字信号。帧是有 1 和 0 组成的逻辑编组,网络层负责将这些 0 和 1 编码成数字信号,供本地网络中的设备读取。接收设备将同步数字信号,并从中提取 1 和 0 (解码)。接下来,设备将重组帧,运行 CRC,并将结果与帧中 FCS 字段的值进行比较。如果它们相同,设备从帧中提取分组,并将其他部分丢弃,这个过程称为拆封。分组被交给网络层,而网络层将检查分组地址。如果地址匹配,数据段被从分组中提取出来,而其他部分将被丢弃。数据段将在传输层处理,而后者负责重建数据流,然后向发送方确认,指出接收方收到了所有信息。然后传输层将数据流交给上层应用程序。
在发送端,数据封装的过程大致如下:
    1. 用户信息被转换为数据,以便通过网络进行传输。
    2. 数据被转换为数据段,发送主机和接收主机之间建立一条可靠的连接。
    3. 数据段被转换为分组或数据报,连接地址被添加在报头中,以便能够在互联网络中路由分组。
    4. 分组或数据报被转换为帧,以便在本地网络中测试。硬件(以太网)地址被用于唯一标识本地网段中的主机。
    5. 帧被转换为比特,并使用数据编码方法和时钟同步方案。
下图解释了数据封装的过程:

传输层使用端口号标识虚电路和上层进程,如下图所示:

使用面向连接的协议(即TCP)时,传输层将数据流转换为数据段,并创建一条虚电路以建立可靠的会话。接下来,它对每个数据段进行编号,并使用确认和流量控制。如果你使用的是 TCP,虚电路将由源端口号和目标端口号已经源 IP 地址和目标 IP 地址(称为套接字)标识。主机只能使用不小于 1024 的端口号。目标端口号标识了上层进程(应用程序),在接收主机可靠地重建数据流后,数据流将被交给进程(应用程序)。
下面让我们回到数据封装的过程。
给数据块添加传输层报头信息后,便形成了数据段;随后,数据段和目标 IP 地址一起呗交给网络层。(目标IP地址是随数据流一起由上层交给传输层的,它是由上层使用名称解析方法(可能是DNS)发现的。)
网络层在每个数据段的前面添加报头和逻辑地址(IP地址)。给数据段添加报头后,形成的 PDU 为分组。分组包含一个协议字段,该字段指出了数据段来自何方(UDP或TCP),这样当分组到达接收主机后,传输层便能够将数据段交给正确的协议。
网络层负责获悉目标硬件地址(这种地址指出了分组应发送到本地网络的什么地方),为此,它使用 ARP(Address Resolution Protocol,地址解析协议)。网络层查看目标 IP 地址,并将其与主机的 IP 地址和子网掩码进行比较。如果比较表明分组是前往本地主机的,则 ARP 请求被用于请求该主机的硬件地址;如果分组是前往远程主机的,IP 将获悉默认网关(路由器)的 IP 地址。
接下来,网络层将分组向下传递给数据链路层,一同传递的还有本地主机或默认网关的硬件地址。数据链路层在分组前面添加一个报头,这样数据块将变成真(之所以称其为帧,是因为同时给分组添加了报头和报尾,使其类似于书档)。帧包含一个以太网类型(Ether-Type)字段,它指出了分组来自哪种网络层协议。现在,将对帧运行CRC 校验,并将结果放在帧尾的 FCS 字段中。
至此,可以用每次 1 比特的方式将帧向下传递给网络层了,而网络层将使用比特定时规则(bit timing rule)将数据编码成数字信号。网段中的每台设备都将同步时钟,从数字信号中提取 1 和 0,并重建帧。重建帧后,设备运行 CRC,以确保帧是正确的。如果一切顺利,主机将检查目标 MAC 地址和目标 IP 地址,以检查这个帧是不是发送给它的。

时间: 2024-10-06 00:22:23

网络基础 : 以太网数据封装的相关文章

【linux基础】17、TCP/IP网络基础(上)

一.计算机网络概述 1.什么是网络? 一群具有独立功能的计算机组成的系统通过通信设备及传输媒体互连起来,在通信软件支持下,实现资源共享.信息交换的整个系统 产生计算机网络的基本条件:通信技术与计算机技术的结合 2.计算机网络的产生与发展 1954年 主机-终端的通信网络  第一代计算机网络 以单个主机为中心.面向终端设备的网络结构.系统中除主计算机具有独立的数据处理功能外,系统中所连接的终端设备均无独立处理数据的功能 1969年 主机-主机的通信网络  ARPANET网  第二代计算机网络 以分

运维网络基础

对于系统运维人员,CCNA的学习难度不是很大,而且学习的周期较短,对于快速成为一个系统运维工程师中,网络搞的最好的,就足够了.如果时间精力有限,建议学习一下知识,作为步入网络知识的基石. 网络基础知识: n 涉及到网络的发展历程,网络的一些名词概念,路由,交换介绍 n OSI七层模型的介绍 n TCP/IP协议簇的简介,包含TCP/IP三次握手和四次挥手的过程 n VLSM可变长子网的概念 第1章 初识网络 网络的知识体系是一个庞大的体系,涉及到路由交换.安全.无线.语言.数据中心等多个方面,所

前端学HTTP之网络基础

显示目录 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就不可能了解网站的本质.在学习HTTP之前,本文先介绍一些网络基础知识 网络 简单地说,网络就是在一定的区域内将两个或两个以上的计算机以一定的方式连接起来,以供用户共享文件.程序.数据等资源.下面就几种常见的网络类型及分类方法做简要介绍 1.按覆盖范围分 局域网(local area netwo

2016.9.21 鸟哥私房菜服务器篇-第二章网络基础-总结

第二章-网络的基本概念 2.1网络 操作系统很多,比如windows/linux/os X等,这么多的操作系统(不同国家的人)如何进行网络沟通(语言交流)呢? 制定共同的标准.然后在你的系统里提供可以加入该标准的程序代码. 网络是跨平台的. 2.1.1 什么是网络 网络就是几部计算机主机或者网络打印机之类的接口设备,通过网线或者无线网络技术,将这些主机与设备连接起来,使得数据可以通过网络介质(网线或者网卡等硬件)来传输的一种方式. 以太网已经是一项公认的标准接口了,大家可以依据这个标准来开发自己

华为HCNA-初级网络基础

内容描述 本文摘自HCNA2网络基础知识,共包含五个Module,全面地介绍了构建一个基本的IP网络所涉及的各种主要技术,重点描述了交换.路由和网络服务等基础内容,以及这些内容如何在VRP上配置和实现的. Module 1系统地介绍了TCP/IP协议模型,侧重讲述了数据链路层.网络层和传输层的功能和作用,其主要目的是帮助读者加深对数据通信中"层次"的理解,并且熟悉和掌握数据在网络中的端到端传输过程. Module 2介绍了华为通用路由平台VRP的基础知识及其操作指导,主要包含了VRP的

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

linux网络基础

学习linux,网络基础尤为关键,这是架设服务器的根基,没有网络,就没有服务. 简单介绍下网络常用的命令 ifconfig:传统的配置网络接口的命令 route:主要是配置路由功能 ip:集成了网络接口和路由配置,建议使用这个命令 hostname:设置主机名 ping:测试网络的连通性 host:dns信息查询 nslookup:dns解析查询 tcpdump:抓包工具,类似wireshark netstat:查看网络连接状态 ss:查看网络连接状态,推荐使用 1      ip路由 网络属于

网络基础---TCP/IP五层模型

网络基础---TCP/IP五层模型 计算机之间的通讯是通过互联网来进行的,各个计算机在internet上遵循它的一系列协议才能进行通讯,因此实际上可以把互联网本质看作是一系列的网络协议. 1.TCP/IP五层模型 (1)物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0 (2)数据链路层的功能:建立逻辑连接.进行硬件地址寻址.差错校验等功能(由底层网络定义协议).并且将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正. 1)以广播的方式通

操作系统和网络基础的整理

操作系统 为何要有操作系统: 计算机系统非常庞大难懂,程序员写程序时需要搞懂计算机系统,效率很低. 操作系统的出现缓解了程序员的大部分工作,操作系统管理及优化计算机硬件,程序员不需要全部搞懂计算机系统就可写代码编写软件. 软件在操作系统的基础上运行,间接使用硬件. 操作系统的位置: 操作系统位于计算机硬件及应用程序之间,协调.管理和控制计算机硬件和软件系统的一个程序. 操作系统的功能: 操作系统协调.管理和控制计算机硬件和软件的一个软件. 操作系统的功能由操作系统运行内核态管理硬件和操作系统运行