本文主要是介绍以太网卡、以太网帧、以太网交换机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以下文章仅为个人学习笔记,如有错误请谅解!
1.以太网卡
网络接口卡(Network Interface Card,NIC)通常也被称为“网卡”,是计算机、交换机、路由器等网络设备与外界网络相连的关键部件。
根据使用技术不同,网络接口卡可以分为很多种类型,例如令牌环接口卡、FDDI接口卡、SDH接口卡、以太网接口卡。
1.1计算机上的以太网卡收发原理
假设在计算机设备上有一个网络接口,那么在接口处就会安装一块网卡。
从逻辑上说,网卡包含7个模块:CU(Control Unit,控制单元),OB(Output Buffer,输出缓存),IB(Input Buffer,输入缓存),LC(Line Coder,线路编码器),LD(Line Decoder,线路解码器),TX(Transmitter,发射器),RX(Receiver ,接收器)
1.1.1发送信息
- 用户产生原始数据,经过tcp/ip模型的应用层、传输层、网络层处理后,会得到一个个的数据包(Packet),网络将这些Packet逐个下传给网卡的CU。
- CU将每个Packet封装成一个个的帧(Frame),即以太帧(Ethernet Frame),并将这些Frame传给OB。
- OB将接收到的Frame按接收顺序排成队列逐个传递给LC。
- LC接收到Frame后开始进行编码。逻辑上将Packet封装成Frame的时候已经是长度有限的01二进制了,但是01对应的物理量(电平等)只适合存储在缓冲区中,不适合在线路(例如双绞线)上传输,LC线路编码就是将01转换为适合传输的物理信号(例如电压波形/电流等),并将物理信号传递给TX。
- TX将对接收到的物理信号进行功率等特性的调整,通过线路发送出去。
1.1.2接收信息
- RX对接收到的物理信号进行功率等特性的调整,传递给LD。
- LD对物理信号进行解码,识别出逻辑上的01,将这些01以Frame为单位逐个传递给IB。
- IB将接收到的Frame按顺序排成队列,以Frame为单位传递给CU。
- CU对Frame进行分析处理(丢弃或者去掉帧头、尾)上传。
- 经过CU处理的数据在经过网络层、传输层、应用层处理后转换为原始数据。
1.2交换机上的网卡转发原理
组成结构和计算机上的网卡一致。
- 除了CU与计算机不同,其他模块流程都一致!
1.2.1接收数据
CU从IB接收到Frame后,进行分析处理(三种情况):
- 直接丢弃;
- 传递给本交换机上的其他某一块网卡;
- 被复制N份,传给本交换机上其他n个网卡的CU
1.2.2转发数据
将本交换机上其他网卡CU收到的数据直接传给OB。
其他步骤类似。
总结
- 网卡工作在数据链路层和物理层(tcp/ip),具有两层的功能。
- 计算机网卡用来收发数据,交换机用来转发。
- 计算机网卡需要进行封装和解封装,交换机上的网卡不会对帧进行封装和解封装。
- 一块网卡只能控制一个网口的数据转发/收发行为。
2.以太网帧
以太网技术使用的帧的就是以太帧。
2.1mac地址
1980年2月 IEEE(美国电气和电子工程师协会)召开会议,启动了一个庞大的技术标准化项目,称为IEEE802项目,此项目旨在指定一系列关于LAN(局域网)的标准,称IEEE802标准。
mac(Medium Access Control)地址也是在IEEE802中定义并规范的,凡是符合此标准的网卡都必须要配一个mac地址(不符合这个标准的则不是,如SDH网卡)。
mac地址长度为48bit(6个字节),才有十六进制表示,每两位十六进制为一组,具有全球唯一标识。
网卡制造商在制造网卡前需向IEEE注册,得到一个24bit的厂商代码,OUI(Organizationally-Unique Identifier)。厂商在制造网卡时就会往每一块网卡的ROM(Read Only Memory)烧入一个48Bit 的BIA地址(Burned-In Address,固化地址),BID的前三个字节就是OUI,后三个字节由制造商自己确定。
mac地址分为3类:
- 单播mac地址:第一个字节最低位为0
- 组播mac地址:第一个字节最低位为1
- 广播mac地址:每一个比特位都是1
2.2以太帧的格式
以太帧(Ethernet Frame)的标准有两种
一种由IEEE802.3定义,称为IEEE802.3格式。
另一种由DEC、Intel、Xerox三角公司联合定义,称为Ethernet Ⅱ格式或者DIX格式。
两种格式都可以在现在的网络设备上使用,但是Ethernet Ⅱ格式使用的更广泛些。
Ethernet Ⅱ帧格式:
DMAC:目的MAC地址,IPV4为6字节,该字段标识帧的接收者。
SMAC: 源MAC地址,IPV4为6字节,该字段标识帧的发送者。
Type:协议类型。
常见Type值与对应的属性
Type值 格式 0x0800 Internet Protocol Version 4 (IPv4) 0x0806Address Resolution Protocol (ARP)
0x0808 Frame Relay ARP 0x22F4L2-IS-IS
0x86DD IP Protocol version 6 (IPv6)Data :
数据字段,标识帧的负载(可能包含填充位)。
数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输1字节信息也必须使用46字节的数据字段。
如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。
以太帧的长度必须为整数字节,因此帧的负载长度不足整数字节,需插入填充字段以保证数据帧的长度为整数字节。
FCS:
帧校验序列FCS(Frame Check Sequence)是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。
FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。
帧示例:
Frame 1: 54 bytes on wire (432 bits), 54 bytes captured (432 bits)Arrival Time: May 4, 2008 18:15:17.630001000 Epoch Time: 1209896117.630001000 seconds[Time delta from previous captured frame: 0.000000000 seconds][Time delta from previous displayed frame: 0.000000000 seconds][Time since reference or first frame: 0.000000000 seconds]Frame Number: 1Frame Length: 54 bytes (432 bits)Capture Length: 54 bytes (432 bits)[Frame is marked: False][Frame is ignored: False][Protocols in frame: eth:ip:tcp][Coloring Rule Name: TCP][Coloring Rule String: tcp]
Ethernet II, Src: CompalEl_df:d0:05 (00:0f:b0:df:d0:05), Dst: HughesNe_a9:4f:87 (00:80:ae:a9:4f:87)Destination: HughesNe_a9:4f:87 (00:80:ae:a9:4f:87)Address: HughesNe_a9:4f:87 (00:80:ae:a9:4f:87).... ...0 .... .... .... .... = IG bit: Individual address (unicast).... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)Source: CompalEl_df:d0:05 (00:0f:b0:df:d0:05)Address: CompalEl_df:d0:05 (00:0f:b0:df:d0:05).... ...0 .... .... .... .... = IG bit: Individual address (unicast).... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)Type: IP (0x0800)
Internet Protocol Version 4, Src: 192.168.128.101 (192.168.128.101), Dst: 172.25.4.24 (172.25.4.24)Version: 4Header length: 20 bytesDifferentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))0000 00.. = Differentiated Services Codepoint: Default (0x00).... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)Total Length: 40Identification: 0xc17e (49534)Flags: 0x02 (Don't Fragment)0... .... = Reserved bit: Not set.1.. .... = Don't fragment: Set..0. .... = More fragments: Not setFragment offset: 0Time to live: 128Protocol: TCP (6)Header checksum: 0x4812 [correct][Good: True][Bad: False]Source: 192.168.128.101 (192.168.128.101)Destination: 172.25.4.24 (172.25.4.24)
Transmission Control Protocol, Src Port: tht-treasure (1832), Dst Port: icon-discover (2799), Seq: 1, Ack: 1, Len: 0Source port: tht-treasure (1832)Destination port: icon-discover (2799)[Stream index: 0]Sequence number: 1 (relative sequence number)Acknowledgement number: 1 (relative ack number)Header length: 20 bytesFlags: 0x10 (ACK)000. .... .... = Reserved: Not set...0 .... .... = Nonce: Not set.... 0... .... = Congestion Window Reduced (CWR): Not set.... .0.. .... = ECN-Echo: Not set.... ..0. .... = Urgent: Not set.... ...1 .... = Acknowledgement: Set.... .... 0... = Push: Not set.... .... .0.. = Reset: Not set.... .... ..0. = Syn: Not set.... .... ...0 = Fin: Not setWindow size value: 17520[Calculated window size: 17520][Window size scaling factor: -1 (unknown)]Checksum: 0xf893 [validation disabled][Good Checksum: False][Bad Checksum: False]
3.以太网交换机
转发数据的端口是以太网口的交换机称为以太网交换机,类似的还有令牌环交换机(Token Ring Switch)等。
3.1交换机的工作原理
每台交换机都会拥有一张mac地址表(如果是新设备就会先学习再形成),mac地址表记录着局域网中各个设备mac的对应的端口,交换机根据MAC地址表中mac与端口形成的映射关系,进行数据的转发操作,并且会周期性的更新MAC地址表(缺省时间为300s).
3.2三种转发操作
交换机会对端口传入的数据帧进行“转发”操作,这里的转发是广义的转发,包括丢弃(Discarding )、转发(Forwarding)、泛红(Flooding).
泛洪(Flooding):当交换机接收到一个数据帧时,将其转发到除了自己所在的所有端口。
转发(Forwarding):将接收到的数据帧从另一个特定的端口(目的mac所映射的,假设已经存在交换机的mac地址表里)转发出去。
丢弃(Discarding):直接将接收到的数据帧丢弃。
- 参考
《HCNA网络技术学习指南》
华为技术
这篇关于以太网卡、以太网帧、以太网交换机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!